当前位置: 首页 > news >正文

【保姆级教程】AutoGen多智能体协作实战:用DeepSeek打造你的AI金融分析团队

🤖 既然一个 AI 干不完活,那就雇一个“团队”吧:AutoGen 多智能体实战指南

关键词:AutoGen, Multi-Agent, 多智能体, AI 团队, 自动化工作流

大家好,我是飞哥!👋

上周我们讲了LlamaIndex,它帮我们解决了“数据看不懂”的问题。
但这周,我们面临一个新的挑战:任务太复杂

试想一下,如果你让 ChatGPT 帮你“写一份特斯拉的行业研报,要有最新新闻,还要有股价趋势图,最后生成 PDF”。
大概率它会回复你一段文字,但既没有实时数据,也没有图表,更别提 PDF 了。

为什么?🤯
因为这不仅是一个“问答任务”,而是一个“复合工作流”。它需要:搜索、阅读、写代码、画图、排版。
让一个 AI 模型(比如 GPT-4)同时扮演这么多角色,它很容易“精神分裂”。

💡解决方案
如果一个实习生干不好,那就组建一个专家团队
这就是Multi-Agent (多智能体)的核心思想。今天我们要用的神器,就是微软开源的AutoGen


1. 为什么你需要 AutoGen?(Why)

生动类比🍎:

  • Single Agent (单体 AI)=全能实习生🎓。什么都懂一点,但让他独立负责一个大项目,容易顾此失彼,做着做着就跑题了。
  • Multi-Agent (AutoGen)=正规军编制💂‍♂️。
    • 项目经理 (Planner)📅 负责拆解任务。
    • 情报员 (Data Fetcher)🕵️‍♂️ 专门负责上网搜资料。
    • 绘图师 (Plotter)🎨 专门负责画股价走势图。
    • 分析师 (Analyst)🧠 专门负责深度分析。
    • 主笔 (Writer)✍️ 专门负责写文章。
    • 校对员 (Proofreader)🧐 负责检查质量。
    • 还有用户代理 (UserProxy)👮‍♂️ —— 也就是你(或者你的替身),负责最后拍板和执行代码。

核心价值
AutoGen 允许你定义这些角色,并且让它们在一个“微信群”里自动对话。你只需要发一句指令,它们就会自己开会、吵架(讨论)、干活,直到把任务完成。


2. 核心概念提炼 (Skeleton) 🦴

2.1 两个基本原子

在 AutoGen 的世界里,一切皆 Agent,但主要分为两类:

  1. UserProxyAgent (人类代理)🧑‍💼:

    • 身份:代表“雇主”或“执行者”。
    • 特技能执行代码!当 AI 写出 Python 代码时,它负责运行并反馈结果。
    • 比喻:带枪的监工。
  2. AssistantAgent (AI 助理)🤖:

    • 身份:基于 LLM 的智能体。
    • 特技能思考、能写代码
    • 比喻:聪明的打工人。

2.2 聊天模式 (GroupChat) 💬

如果不加控制,5 个 AI 在群里可能会乱说话。
所以我们需要GroupChatManager(群管理员)。
它就像“主持人”,根据当前的聊天记录,决定下一个该谁发言


3. 准备工作:搭建舞台 🛠️

在开始指挥你的 AI 军团之前,我们需要先安装必要的“军需物资”。

3.1 安装依赖

打开终端,运行以下命令:

pipinstall"pyautogen<0.4"duckduckgo-search matplotlib pandas python-dotenv

依赖包大起底:

  • pyautogen:微软 AutoGen 的核心库,我们的“指挥部”,负责管理所有 Agent。
  • duckduckgo-search:免费的搜索引擎工具,不需要 API Key 就能让 AI 上网,是 Data Fetcher 的“千里眼”。
  • matplotlib:Python 最经典的绘图库,Plotter 用它来画股价走势图。
  • pandas:数据处理神器,相当于“Python 版的 Excel”。我们用它来读取和清洗下载下来的股票数据。

3.2 配置“军费” (DeepSeek Config)

AutoGen 支持 OpenAI 格式的 API。飞哥强烈推荐使用DeepSeek (深度求索),不仅代码能力强悍,最重要的是国内直连、无需魔法,获取 Key 非常方便!

我们需要定义一个llm_config字典,它就像是发给 AI 的“聘书”。

importos# 💡 飞哥提示:生产环境请使用环境变量,不要把 Key 硬编码在代码里!# export DEEPSEEK_API_KEY="sk-..."llm_config={"model":"deepseek-chat",# DeepSeek V3 (或使用 deepseek-coder)"api_key":os.environ.get("DEEPSEEK_API_KEY"),"base_url":"https://api.deepseek.com",# 关键:指向 DeepSeek 的服务器}

4. 实战项目:全自动“行业研报生成团队” 🚀

我们要搭建一个包含 4 个 AI 的精英团队,完成一份关于“特斯拉股价”的研报。

4.1 团队架构图

AI 专家团

UserProxy\n管理员/执行者

GroupChatManager\n群聊主持人

Planner\n规划师

Data Fetcher\n情报员

Plotter\n绘图师

Analyst\n分析师

Writer\n主笔

Proofreader\n校对员

4.2 核心代码拆解

第一步:给 Data Fetcher 装备“武器” (联网搜索) 🔎

AI 自己是没法上网的,我们需要给它注册一个工具 (Tool)

# 定义搜索函数defsearch_web(query:str)->str:fromduckduckgo_searchimportDDGSwithDDGS()asddgs:results=list(ddgs.text(query,max_results=5))returnstr(results)
第二步:定义 Plotter (绘图专家) 🖌️

为了保证图表能稳定生成,我们定义一个专门的generate_chart函数,并交给 Plotter 使用。

defgenerate_chart(ticker:str)->str:# ... (省略具体绘图代码,使用 matplotlib) ...return"Chart saved to coding/chart.png"plotter=AssistantAgent(name="Plotter",system_message="你是绘图师。调用 generate_chart 画图。",llm_config=llm_config,)
第三步:定义 Analyst (大脑) 🧠

Analyst 不再需要自己写代码画图,而是专注于分析

analyst=AssistantAgent(name="Analyst",system_message="""你是资深金融分析师。 根据 Data_Fetcher 提供的新闻和 Plotter 提供的图表数据摘要,进行深度分析。 """,llm_config=llm_config,)
第四步:组建群聊并开工 🗣️
# 拉群groupchat=GroupChat(agents=[user_proxy,planner,fetcher,plotter,analyst,writer,proofreader],messages=[],max_round=20)

4.3 完整代码 (Copy & Run) 📋

为了方便大家直接上手,我把上面的碎片代码整合成了一个完整的、可运行的脚本。
注意:这里配置了 DeepSeek API,并使用了 AutoGen最新版 (v0.2+)推荐的工具注册写法。

复制保存为autogen_team.py,确保配置好环境变量DEEPSEEK_API_KEY后运行:

importosimportpandasaspdimportmatplotlib.pyplotaspltfromautogenimportAssistantAgent,UserProxyAgent,GroupChat,GroupChatManager,register_functionfromduckduckgo_searchimportDDGS# 1. 配置 LLM (DeepSeek)llm_config={"model":"deepseek-chat","api_key":os.environ.get("DEEPSEEK_API_KEY"),"base_url":"https://api.deepseek.com",}# 2. 定义工具函数defsearch_web(query:str)->str:"""搜索互联网获取最新信息"""print(f"\n🔍 [搜索中]{query}...")withDDGS()asddgs:results=list(ddgs.text(query,max_results=5))returnstr(results)defgenerate_chart(ticker:str)->str:"""从 Stooq 获取数据并绘图"""print(f"\n🎨 [绘图]{ticker}...")try:# 使用 Stooq 数据源 (无需 Key)url=f"https://stooq.com/q/d/l/?s={ticker}.US&i=d"df=pd.read_csv(url,parse_dates=["Date"],index_col="Date")df=df.sort_index().tail(10)# 取最近10天# 确保工作目录存在work_dir="coding"os.makedirs(work_dir,exist_ok=True)save_path=os.path.join(work_dir,"chart.png")plt.figure(figsize=(10,6))plt.plot(df.index,df["Close"],marker="o")plt.title(f"{ticker}Stock Price")plt.grid(True)plt.savefig(save_path)plt.close()returnf"Chart saved to{save_path}"exceptExceptionase:returnf"Error:{e}"# 3. 定义 Agentsuser_proxy=UserProxyAgent(name="User_Proxy",human_input_mode="NEVER",max_consecutive_auto_reply=10,is_termination_msg=lambdax:x.get("content","").rstrip().endswith("TERMINATE"),code_execution_config={"work_dir":"coding","use_docker":False},)planner=AssistantAgent(name="Planner",system_message="你是任务规划师。指挥 Fetcher 搜新闻 -> Plotter 画图 -> Analyst 分析 -> Writer 写报告 -> Proofreader 校对。校对通过后回复 TERMINATE。",llm_config=llm_config,)fetcher=AssistantAgent(name="Data_Fetcher",system_message="你是情报员。调用 search_web 搜新闻。",llm_config=llm_config,)plotter=AssistantAgent(name="Plotter",system_message="你是绘图师。调用 generate_chart 画图。",llm_config=llm_config,)analyst=AssistantAgent(name="Analyst",system_message="你是分析师。根据新闻和图表数据进行深度分析。",llm_config=llm_config,)writer=AssistantAgent(name="Writer",system_message="你是主笔。撰写 Markdown 报告,必须插入图片 ![Chart](chart.png)。",llm_config=llm_config,)proofreader=AssistantAgent(name="Proofreader",system_message="你是校对员。检查 Markdown 格式和图片引用。合格回复“校对通过”。",llm_config=llm_config,)# 4. 注册工具register_function(search_web,caller=fetcher,executor=user_proxy,name="search_web",description="Search news")register_function(generate_chart,caller=plotter,executor=user_proxy,name="generate_chart",description="Draw chart")# 5. 组建团队groupchat=GroupChat(agents=[user_proxy,planner,fetcher,plotter,analyst,writer,proofreader],messages=[],max_round=20)manager=GroupChatManager(groupchat=groupchat,llm_config=llm_config)# 6. 开始任务print("🚀 AI 团队已就位...")user_proxy.initiate_chat(manager,message="分析 Tesla (TSLA) 最近一周的股价趋势和新闻,生成图表和中文简报。")

4.4 运行效果预览 🎬

当你运行这段代码时,你会看到控制台里发生神奇的一幕:

  1. Planner跳出来说:“我们要分三步走:先搜新闻,再画图,最后写报告。”
  2. Data Fetcher说:“收到,我调用search_web搜到了以下 5 条新闻…”
  3. Plotter说:“正在调用generate_chart生成图表。”
    • (UserProxy 默默在后台运行了代码,生成了 chart.png)
  4. Analyst说:“新闻和图表我都有了,我认为…”
  5. Writer说:“根据分析,我写好了这篇报告…”
  6. Proofreader说:“校对通过,报告完美。”
  7. UserProxy:任务结束。

5. 避坑指南 (Best Practices) ⚠️

  1. 模型智商很重要

    • AutoGen 极度依赖模型的指令遵循能力
    • DeepSeek V3在代码生成和逻辑推理上表现优异,而且网络访问稳定,不用担心连不上 OpenAI 的问题。
    • 尽量避免使用小参数模型(如 7B 以下),否则 Agent 经常会忘记调用工具。
  2. 无限循环死局

    • 有时候两个 Agent 会互相客气:“你先请”,“不不你先请”。
    • 解决:在 System Message 里明确规定“终止条件”,比如“任务完成后回复 TERMINATE”。
  3. Docker 保护

    • 因为 UserProxy 会真正在你的电脑上执行代码(包括删除文件!)。
    • 生产环境务必开启use_docker: True,把它们关在沙箱里。

6. 飞哥总结 📝

LlamaIndex让我们拥有了“最强大脑”(知识库),而AutoGen让我们拥有了“三头六臂”(执行团队)。

现在的你,已经不是一个人在写代码了。你是一个AI 军团的指挥官

下期预告
团队有了,但怎么保证他们按公司规定的 SOP(标准作业程序)干活,而不是乱发挥?
下周我们将进入LangGraph的世界,学习如何构建有状态、可控的工作流

关注飞哥,带你从“写代码”进化到“设计智能体”!🚀

创作不易,记得👇关注飞哥👇 ,点赞、收藏哦~~,下篇见👋

http://www.jsqmd.com/news/369662/

相关文章:

  • 2026年关注:延边地区电气自动化可靠厂家推荐,施耐德电气/电气自动化/工控产品/中低压电气,电气自动化公司口碑推荐 - 品牌推荐师
  • 索具市场新势力:十大索具品牌,引领行业潮流!钢卷吊具/缆绳/船用缆绳/防火吊带/无接头钢丝绳,索具厂家哪家权威 - 品牌推荐师
  • P1807 最长路
  • 2026年2月中国电缆十大品牌推荐:涵阻燃防火电缆国内一线品牌推荐 - 品牌2025
  • 【信号处理】基于小波变换的语音端点检测附Matlab代码
  • 2026年2月电缆生产厂家名单:知名的电缆生产厂家推荐 - 品牌2025
  • 说说全国遗产继承优质法律服务机构,哪家性价比高 - 工业品网
  • 2026年2月中国电缆一线品牌推荐:中国电缆标杆品牌推荐(新版更新) - 品牌2025
  • 树冠风场仿真效果图](https://example.com/wind_simulation_visualization.gif
  • 2026年10年经验装修公司选瓷砖要点,重庆高性价比之选 - 工业品牌热点
  • 古DNA分析eager环境安装
  • 2026年新乡装修公司推荐,派轩装修公司专业度与性价比大比拼 - 工业设备
  • 互联网大厂Java求职面试实战:涵盖Spring Boot、微服务与AI技术
  • 2026年东北靠谱的豆包搜索推荐广告公司排名,焕腾科技上榜 - mypinpai
  • 探讨阶梯护坡砖生产工厂哪家口碑好、价格合理 - 工业推荐榜
  • 飞贺纺织基本信息大公开,实力与性价比情况你知道多少 - 工业设备
  • 2026年山东适配机器狗应用场景空间智能公司性价比高的推荐 - myqiye
  • AB实验高阶技法(六):PSM——在观察性数据中重构“平行世界”
  • 想做豆包搜索推荐广告,东北哪家公司无隐形消费 - myqiye
  • 探寻2026年场景深耕型智慧消防服务厂商AI大模型的优势 - 工业品网
  • 怎么知道本地的Redis有没有设置密码
  • 导师又让重写?继续教育论文救星 —— 千笔·专业降AI率智能体
  • 2026年广州深圳跨境物流年度排名,易斯拉国际物流服务质量靠谱吗 - 工业品牌热点
  • 百联OK卡回收新选择 闲置卡券变现金 - 京顺回收
  • 第三章 资产 第二节 交易性金融资产 核心知识点
  • 真的太省时间 8个AI论文工具测评:自考毕业论文+开题报告高效写作指南
  • 毕业论文神器!继续教育专属降AIGC工具 —— 千笔·专业降AIGC智能体
  • 第三章 第一节 货币资金 核心知识点
  • 利用FC21读写$变量
  • Crystalnet .NET Core for Delphi 1.0.3