Được TopGit lập chỉ mục từ metadata GitHub: chatwoot/ai-agents có 153 sao, viết chủ yếu bằng Ruby. Ruby AI Agents SDK - Inspired by OpenAI Agents SDK
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
A delightful provider agnostic Ruby SDK for building multi-agent AI workflows with seamless handoffs tool calling, and shared context.
✨ Features
🤖 Multi-Agent Orchestration: Create specialized AI agents that work together
🔄 Seamless Handoffs: Transparent agent-to-agent transfers (users never know!)
🛠️ Tool Integration: Agents can use custom tools and functions
📊 Structured Output: JSON schema-validated responses for reliable data extraction
💾 Shared Context: State management across agent interactions
🔌 Provider Agnostic: Works with OpenAI, Anthropic, and other LLM providers
🚀 Quick Start
Installation
Add to your Gemfile:
gem 'ai-agents'
Basic Usage
require 'agents'
# Configure with your API key
Agents.configure do |config|
config.openai_api_key = ENV['OPENAI_API_KEY']
end
# Create agents
weather_agent = Agents::Agent.new(
name: "Weather Assistant",
instructions: "Help users get weather information",
tools: [WeatherTool.new]
)
# Create a thread-safe runner (reusable across conversations)
runner = Agents::Runner.with_agents(weather_agent)
# Use the runner for conversations
result = runner.run("What's the weather like today?")
puts result.output
Multi-Agent Workflows with Handoffs
The real power comes from multi-agent workflows with automatic handoffs:
# Create specialized agents
triage = Agents::Agent.new(
name: "Triage Agent",
instructions: "Route customers to the right specialist"
)
sales = Agents::Agent.new(
name: "Sales Agent",
instructions: "Answer details about plans",
tools: [CreateLeadTool.new, CRMLookupTool.new]
)
support = Agents::Agent.new(
name: "Support Agent",
instructions: "Handle account realted and technical issues",
tools: [FaqLookupTool.new, TicketTool.new]
)
# Wire up handoff relationships - clean and simple!
triage.register_handoffs(sales, support)
sales.register_handoffs(triage) # Can route back to triage
support.register_handoffs(triage) # Hub-and-spoke pattern
# Create runner with all agents (triage is default entry point)
runner = Agents::Runner.with_agents(triage, sales, support)
# Run conversations with automatic handoffs and persistence
result = runner.run("Do you have special plans for businesses?")
# User gets direct answer from sales agent without knowing about the handoff!
# Continue the conversation seamlessly
result = runner.run("What is the pricing for the premium fibre plan?", context: result.context)
# Context automatically tracks conversation history and current agent
🏗️ Architecture
Core Components
Agent: Individual AI assistants configured with specific instructions, tools, and handoff relationships. Agents are immutable and thread-safe.
AgentRunner: Thread-safe execution manager that coordinates multi-agent conversations. Create once and reuse across multiple threads safely.
Runner: Internal orchestrator that handles individual conversation turns and manages the execution loop (used internally by AgentRunner).
Context & State: Shared conversation state that persists across agent handoffs. Fully serializable for database storage and session management.
Tools: Custom functions that agents can execute to interact with external systems (APIs, databases, etc.).
Handoffs: Automatic transfers between specialized agents based on conversation context, completely transparent to users.
Agent Definition
# Create agents as instances
agent = Agents::Agent.new(
name: "Customer Service",
instructions: "You are a helpful customer service agent.",
model: "gpt-4o",
tools: [EmailTool.new, TicketTool.new]
)
# Register handoffs after creation
agent.register_handoffs(technical_support, billing)
Custom Tools
class EmailTool < Agents::Tool
description "Send emails to customers"
param :to, type: "string", desc: "Email address"
param :subject, type: "string", desc: "Email subject"
param :body, type: "string", desc: "Email body"
def perform(tool_context, to:, subject:, body:)
# Send email logic here
"Email sent to #{to}"
end
end
Handoff Patterns
# Central triage agent routes to specialists (hub-and-spoke pattern)
triage = Agents::Agent.new(name: "Triage")
billing = Agents::Agent.new(name: "Billing")
support = Agents::Agent.new(name: "Support")
# Triage can route to any specialist
triage.register_handoffs(billing, support)
# Specialists only route back to triage
billing.register_handoffs(triage)
support.register_handoffs(triage)
Context Management & Persistence
# Context is automatically managed and serializable
runner = Agents::Runner.with_agents(triage, billing, support)
# Start a conversation
result = runner.run("I need billing help")
# Context is automatically updated with conversation history and current agent
context = result.context
puts context[:conversation_history]
puts context[:current_agent] # Agent name (string), not object!
# Serialize context for persistence (Rails, databases, etc.)
json_context = JSON.dump(context)
# Later: restore and continue conversation
restored_context = JSON.parse(json_context, symbolize_names: true)
result = runner.run("Actually, I need technical support too", context: restored_context)
# System automatically determines correct agent from conversation history
📋 Examples
Check out the examples/ folder for complete working demos showcasing multi-agent workflows.
# Run the ISP support demo
ruby examples/isp-support/interactive.rb
provider is optional for known, unambiguous registry models. Set it for custom deployment names and for model IDs that can exist under multiple providers, such as Azure and OpenAI deployments.
🔍 Observability
Optional OpenTelemetry instrumentation for tracing agent execution, compatible with
Langfuse and other OTel backends.
chatwoot/ai-agents có 153 sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/chatwoot/ai-agents. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
chatwoot/ai-agents có phải mã nguồn mở không?
Có — chatwoot/ai-agents phát hành theo license MIT, nghĩa là mã nguồn mở để đọc, fork và (tùy license) tái sử dụng. Mã: github.com/chatwoot/ai-agents.
chatwoot/ai-agents còn đang phát triển không?
Commit gần nhất trên chatwoot/ai-agents là 1 tháng trước (theo timestamp GitHub). Repo có 26 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
chatwoot/ai-agents dùng license gì?
chatwoot/ai-agents phát hành theo license MIT. Nên mở file LICENSE trên GitHub để xác nhận — license metadata đôi khi lệch với thực tế dự án.
chatwoot/ai-agents là gì?
chatwoot/ai-agents (chatwoot/ai-agents) là dự án Ruby trên GitHub. Theo mô tả gốc: Ruby AI Agents SDK - Inspired by OpenAI Agents SDK
chatwoot/ai-agents viết bằng ngôn ngữ gì?
chatwoot/ai-agents chủ yếu viết bằng Ruby. Trường "language" của GitHub dựa trên phần lớn byte ở nhánh mặc định.
Cùng nhóm AI Tools còn repo nào?
chatwoot/ai-agents thuộc nhóm AI Tools trên TopGit, cùng 6 topic GitHub. Trang Trending và Topics liệt kê các repo cùng số sao và cùng ngôn ngữ để so sánh.
Đọc thêm về chatwoot/ai-agents ở đâu?
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/chatwoot/ai-agents là nguồn chính thức.
Đọc đầy đủ README ở tab phía trên.
Vẫn đang phân vân về ai-agents?
Một cú bấm sẽ gửi câu hỏi kèm trang này cho AI — xem AI nói gì về ai-agents.