如何开发agent,有各种各样的框架,象Langflow,Dify 这样的低代码框架,开发比较简单,但缺乏灵活性,也有象Langgraph这样的代码框架,比较复杂,学习成本比较高。
这里边也有另一派观点,象Anthropic发了文章,认为不需要框架,简单的agent直接写就好。
其实二者应该折衷一下,我们需要简单的框架,能便于开发,还简单易用,学习成本低。
用Agent,还有一个关键点,就是如何选择模型。
01
最近deepseek v3及R1的模型在国内外引起极大的反响,性能强大,可以媲美Openai的GPT系列。一句话,确实好用。
最重要的是,deepseek的接口完全兼容Openai的接口,且价格极低。
按这个价格,除非你的数据非常敏感,不能外连,否则,真不需要自己搭模型环境了,毕竟,本地的模型,在性能和质量上,是无法和这种规模的专业模型比较。还不需要考虑维护升级等各种麻烦。
02
OpenAI Swarm
Openai Swarm就是这样一个框架,它非常简单,一共大约五六百行代码,使用起来也非常容易。在2024年10月开源,由于跟openai结合很紧,对本地模型支持不太友好,国内用得人还比较少。但它和Deepseek可以很好的结合,毕竟,Deepseek和Openai的接口是兼容的。
OpenAI Swarm 的核心是一个多代理编排框架,旨在使代理协调变得轻量、可定制且易于测试。该框架允许开发人员构建、编排和管理一群 AI 代理,这些代理可以在彼此之间传递控制权以完成任务。当系统需要多个代理来处理工作流程的不同方面,或者代理需要根据复杂或动态的环境做出决策时,Swarm 特别有用。
Swarm 引入了两个主要概念:代理(Agent)和交接。代理表示执行特定任务或功能的单元,交接允许一个代理根据当前上下文将任务委托给另一个代理。这些抽象使得用相对简单的逻辑构建复杂、灵活的 AI 系统成为可能。
单Agent的灵活性
用一个实际的例子体验一下灵活性,这是swarm附带的例子,用于天气查询和发邮件,我们通过修改prompt来看看它的支持情况。
import json
from openai import OpenAI
from swarm import Agent,Swarm
from swarm.repl import run_demo_loop
deepclient=OpenAI(api_key="sk-XXX", base_url="https://api.deepseek.com")
dpclient = Swarm(client=deepclient)
defget_weather(location, time="now"):
"""Get the current weather in a given location. Location MUST be a city."""
print(f"location:{location}")
return json.dumps({"location": location, "temperature": "65", "time": time})
defsend_email(recipient, subject, body):
print("Sending email...")
print(f"To: {recipient}")
print(f"Subject: {subject}")
print(f"Body: {body}")
return"Sent!"
weather_agent = Agent(
name="Weather Agent",
model = "deepseek-chat",
instructions="You are a helpful agent.",
functions=[get_weather, send_email],
)
prompt="查询北京的天气"
if __name__ == "__main__":
response = dpclient.run(
agent=weather_agent,
max_turns=5,
messages=[{"role": "user", "content": prompt}],
)
#print(response)
print(response.messages[-1]["content"])
如上,prompt写“查询北京的天气”,它就只查北京天气,并不会发邮件。
如果改成“查询北京上海西安的天气” ,它会循环调用函数对三个城市查询。
如果改成“查询北京上海西安的天气,并给[email protected]发邮件”,结果是这样的,循环查询天气,然后发邮件。
location:北京
location:上海
location:西安
Sending email...
To: sunzm@abc.com
Subject: Weather Report
Body: Current weather in:
- Beijing: 65°F
- Shanghai: 65°F
- Xi'an: 65°F
Sent!
简单的多Agent交接
复杂的程序需要用到多Agent的配合,这个在swarm里的实现也非常简单
def transfer_to_agent_b():
return agent_b
agent_a = Agent(
name="Agent A",
instructions="You are a helpful agent.",
functions=[transfer_to_agent_b],
)
agent_b = Agent(
name="Agent B",
instructions="Only speak in Haikus.",
)
大体的代码就是这么简单,直接return一个函数名就行。开源里有多agent的例子,有兴趣可以看看。
03
总结
有了大模型,开发的难度大大降低,用大模型辅助开发,再加上好的模型和好的框架,Agent的开发效率会大幅提升,效果也会比较理想。
Deepseek+Swarm是个非常好的组合,值得尝试。
swarm的开源在
https://github.com/openai/swarm
END
原文始发于微信公众号(AI与安全):DeepSeek+OpenAI Swarm,做Agent的绝配
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论