#创作者训练营
Google, Openai 先后发布了自己的multi agents框架,被认为目前世面上Top企业级的。我这对这两大框架进行对比,帮助大家快速入门这两大框架的开发。
Google Agents
Google 开发一套Agent, Agent Development Kit, 官方文档: google.github.io/adk-docs/#w…
目前有python,java 两种开发语言
主要概念
- llm
- agent
- Event adk中 agent 每次输入,输出都被定义为Event
- Runner 用户交互的入口
- Session,Memory 记录Event事件流,可存储在内存,可持久化
- callback 回调,用于监控agent 输入输出, tool 输入输出
- Artifacts 制品,用于存储图片,音频,视频等二进制数据
code
安装:
pip install google-adk
from litellm import completion
import os
import asyncio
from google.adk.agents import Agent
from google.adk.models.lite_llm import LiteLlm
from google.adk.sessions import InMemorySessionService
from google.adk.runners import Runner
from google.genai import types
api_base = "https://api.deepseek.com"
api_key = "YOUR_DEEPSEEK_API_KEY"
def get_weather(city: str) -> str:
return f"The weather in {city} is rainy."
model = LiteLlm(
model="deepseek/deepseek-chat",
api_base=DS_BASE_URL,
api_key=DS_API_KEY
)
weather_agent = Agent(
name="weather_agent",
model=model,
description="用于进行某地天气查询的Agent智能体",
instruction="你是一个有帮助的天气助手。"
"当用户询问特定城市的天气时,"
"使用 'get_weather' 工具查找相关信息。"
"如果工具返回错误,礼貌地告知用户。",
tools=[get_weather],
)
session_service = InMemorySessionService()
APP_NAME = "weather_app"
USER_ID = "user_1"
SESSION_ID = "session_001"
session = session_service.create_session(
app_name=APP_NAME,
user_id=USER_ID,
session_id=SESSION_ID
)
runner = Runner(
agent=weather_agent, # The agent we want to run
app_name=APP_NAME, # Associates runs with our app
session_service=session_service # Uses our session manager
)
async def call_agent_async(query: str, runner, user_id, session_id):
content = types.Content(role='user', parts=[types.Part(text=query)])
async for event in runner.run_async(user_id=user_id, session_id=session_id, new_message=content):
if event.is_final_response():
if event.content and event.content.parts:
final_response_text = event.content.parts[0].text
break
print(f"<<< Agent Response: {final_response_text}")
await call_agent_async(query, runner, USER_ID, SESSION_ID)
更简约的代码或框架
model = LiteLlm()
agent = Agent(model)
session = InMemorySession()
runner = Runner(agent,session)
response = runner.run(input)
核心流程图:
openai Agents
openai agents 官方文档:openai.github.io/openai-agen…
主要概念
- Agents
- Handoffs 多Agents 之间相互调用
- Guardrails 护栏,对输入输出的数据进行效验
- Tracing 监控agent 输入输出, tool 输入输出
code
pip install openai-agents
import asyncio
from agents import Agent, Runner, function_tool
from openai import AsyncOpenAI
from agents import OpenAIChatCompletionsModel,Agent,Runner,set_default_openai_client,set_tracing_disabled
from agents.model_settings import ModelSettings
import os
from dotenv import load_dotenv
load_dotenv(True)
external_client = AsyncOpenAI(
base_url = "https://api.deepseek.com",
api_key= os.getenv('DEEPSEEK_API_KEY'),
)
set_default_openai_client(external_client)
set_tracing_disabled(True)
deepseek_model = OpenAIChatCompletionsModel(
model="deepseek-chat",
openai_client=external_client)
@function_tool
def get_weather(city: str) -> str:
return f"The weather in {city} is rainy."
agent = Agent(
name="Hello world",
instructions="You are a helpful agent.",
tools=[get_weather],
model=deepseek_model
)
async def main():
result = await Runner.run(agent, input="北京的天气怎么样",max_turns=3)
print(result.final_output)
if __name__ == "__main__":
asyncio.run(main())
核心流程图:
上面分别用openai Agents , google Agents实现了调用deepseek ,查询外部函数获取某个城市天气情况的功能
区别
可以看出,openai 与google 两者都是以agents,runner为核心创建的,openai 定义的类更简约,没有google Agents 中 llm,events,session管理这些概念。openai是面向产品的思维,google 是技术的思维,每个对象定义都很清晰,events, session的定义能有效的保储历史对话信息,更适合于企业级应用。
优缺点比较
| 维度 | Google ADK | OpenAI Agents SDK |
|---|---|---|
| 设计理念 | 代码优先,模块化 | 指令驱动,Guardrail |
| 多模态交互 | 支持 | 有限 |
| 工具集成 | 丰富,支持扩展 | 一般 |
| 推理能力 | 强,支持多种推理技术 | 一般 |
| 部署支持 | 多样化,支持云原生 | 依赖 OpenAI 云服务 |
| 适用场景 | 企业级、多代理系统 | 快速开发、安全性要求高 |
| 优点 | 控制力强,生态丰富 | 上手快,安全性高 |
| 缺点 | 学习曲线较陡 | 扩展性有限 |
总结
Google ADK 和 OpenAI Agents SDK 各有其独特的优势和适用场景。如果你需要构建一个高度可控、支持多模态交互和复杂工作流的智能体系统,Google ADK 是一个更合适的选择。而如果你追求快速开发、轻量级设计和高安全性,OpenAI Agents SDK 则更为合适。在选择框架时,开发者应根据项目需求、团队能力以及目标平台的生态支持进行综合考虑