轻量级 AI 编排:Ruby OpenAI Swarm 让多智能体协作更简单

ruby-openai-swarm

Ruby Openai Swarm 一个基于 Ruby 框架,改编自 OpenAI 的 Swarm,旨在探索符合人体工学的轻量级多智能体(AI Agent)编排。OpenAI 开源了多智能体(AI Agent)编排框架 Swarm,该项目在 2024 年 10 月 14 日上线,仅三天便收获了 7k 颗星。

Swarm 具体来说,它解决了什么问题: #

  1. 多智能体(AI Agent)之间的协作与任务分配 —— 通过定义 handoffs(交接)和 routines(例行流程),确保多个智能体(AI Agent)能够无缝配合,共同完成复杂任务。

  2. 降低开发和管理多智能体(AI Agent)系统的复杂性 —— 提供了易用的 API 和框架,使开发者能够更方便地构建、扩展和优化多智能体(AI Agent)系统。

  3. 提高任务执行效率 —— 通过合理的任务编排,让智能体(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 框架的几个关键特性:

  1. 智能体(Agent)的定义 —— english_agent 和 spanish_agent 。
  2. 任务转交(handoff) —— english_agent 识别到西班牙语后,调用 transfer_to_spanish_agent 转交任务。
  3. 函数调用(FunctionDescriptor) —— 允许一个智能体根据情况调用另一个智能体。
  4. 多智能体协作 —— 通过 client.run 处理对话并根据规则决定由哪个智能体应答。

Swarm 让多智能体协作更直观、更高效,非常适用于自动化任务、数据处理和 AI 代理协作场景。

点击查看更多例子