轻量级 AI 编排:Ruby OpenAI Swarm 让多智能体协作更简单
Ruby Openai Swarm 一个基于 Ruby 框架,改编自 OpenAI 的 Swarm,旨在探索符合人体工学的轻量级多智能体(AI Agent)编排。OpenAI 开源了多智能体(AI Agent)编排框架 Swarm,该项目在 2024 年 10 月 14 日上线,仅三天便收获了 7k 颗星。
Swarm 具体来说,它解决了什么问题: #
多智能体(AI Agent)之间的协作与任务分配 —— 通过定义 handoffs(交接)和 routines(例行流程),确保多个智能体(AI Agent)能够无缝配合,共同完成复杂任务。
降低开发和管理多智能体(AI Agent)系统的复杂性 —— 提供了易用的 API 和框架,使开发者能够更方便地构建、扩展和优化多智能体(AI Agent)系统。
提高任务执行效率 —— 通过合理的任务编排,让智能体(AI Agent)高效协作,避免重复劳动或资源浪费。
示例代码 #
下面是一个简单的示例,如何在 Swarm 中定义代理和管理交互:
安装gem
gem install ruby-openai-swarm
进入ruby的console
irb
配置大语模型
require "ruby-openai-swarm"
# OpenAI.configure do |config|
# config.access_token = ENV['OPENAI_ACCESS_TOKEN']
# end
# ENV['SWARM_AGENT_DEFAULT_MODEL'] = 'gpt-4o-mini'
OpenAI.configure do |config|
config.access_token = ENV['OPEN_ROUTER_ACCESS_TOKEN']
config.uri_base = "https://openrouter.ai/api/v1"
end
ENV['SWARM_AGENT_DEFAULT_MODEL'] = 'openai/gpt-4o-mini'
为什么不用DeepSeek?目前 DeepSeek 的 Tool Calling 仍然不够稳定(详看github issue,而 Swarm 的工作原理适度依赖 Tool Calling,Swarm 通过 智能体(Agents)+ 任务交接(Handoffs)+ 例行流程(Routines) 的机制,使多个 AI 代理能够灵活协作,如果 Tool Calling 不稳定,可能会导致智能体之间的任务交接失败,从而影响系统的可靠性和可控性。
client = OpenAISwarm.new
def spanish_agent
OpenAISwarm::Agent.new(
name: "Spanish Agent",
instructions: "You only speak Spanish.",
model: ENV['SWARM_AGENT_DEFAULT_MODEL']
)
end
transfer_to_spanish_agent = OpenAISwarm::FunctionDescriptor.new(
target_method: :spanish_agent,
description: 'Transfer spanish speaking users immediately.'
)
english_agent = OpenAISwarm::Agent.new(
name: "English Agent",
instructions: "You only speak English.",
model: ENV['SWARM_AGENT_DEFAULT_MODEL'],
functions: [transfer_to_spanish_agent]
)
messages = [{"role": "user", "content": "Hola. ¿Como estás?"}]
response = client.run(agent: english_agent, messages: messages)
pp response.messages.last['content']
# => "¡Hola! Estoy bien, gracias. ¿Y tú?"
这个代码展示了 Swarm 框架的几个关键特性:
- 智能体(Agent)的定义 —— english_agent 和 spanish_agent 。
- 任务转交(handoff) —— english_agent 识别到西班牙语后,调用 transfer_to_spanish_agent 转交任务。
- 函数调用(FunctionDescriptor) —— 允许一个智能体根据情况调用另一个智能体。
- 多智能体协作 —— 通过 client.run 处理对话并根据规则决定由哪个智能体应答。
Swarm 让多智能体协作更直观、更高效,非常适用于自动化任务、数据处理和 AI 代理协作场景。