AI

AutoGen官方文档例子

想象一下,你有一支团队,每个成员都很擅长做不同的事情。一个人擅长规划行程,一个人了解当地有趣的地方,一个人会教你说当地的语言,还有一个人负责把所有想法整合成一个完整的计划。
AutoGen就是让AI组成这样一个团队的工具,让它们一起合作完成任务,而不是只有一个AI试图做所有事情。

代码解析


第一部分:准备工作

import asyncio 
import os
from dotenv import load__dotenv
from autogen_agentchat.agents import AssistantAgent 
from autogen_agentchat.conditions import TextMentionTermination 
from autogen_agentchat.teams import RoundRobinGroupChat 
from autogen_agentchat.ui import Console 
from autogen_ext.models.openai import OpenAIChatCompletionClient

load_dotenv()

这就像在做饭前准备所有材料。我们引入了所有需要的工具:

  • asyncio:让程序能够同时处理多个任务
  • dotenv:帮助我们安全地存储API密钥
  • 其他几个导入是AutoGen框架的组件,用来创建和管理AI代理load_dotenv() 加载你存储在.env 文件中的环境变量,比如API密钥。

第二部分:设置AI模型

model_client = OpenAIChatCompletionClient (
      mode1="gpt-4o"
      api_key=os. getenv"OPENAI_API_KEY")
)

这就像选择我们团队成员将使用的“大脑”。所有代理都会使用GPT-4o模型,但每个代理会有不同的角色和专长。我们使用 os.getenv(”OPENAI_API_KEY”)从环境变量中获取API密钥,这比直接在代码中写密钥更安全。

第三部分:创建四个专家代理

planner_agent = AssistantAgent (
              "planner _agent"
              model_client=model_Client,
              description=”一个能够帮助规划旅行的助手。“,
              system_message=”你是一个有用的助手,能够根据用户的请求提供旅行计划建议。“
)

我们创建了第一个团队成员:旅行规划专家。

  • planner_agent:这是代理的名字,类似给团队成员的名牌
  • model_client=model_client:告诉代理使用哪个”大脑”
  • description:简短描述这个代理的工作
  • system_message:这是给代理的详细指令,这个是最重要的了,就像工作说明

接着我们创建了另外三个代理:

local_agent = AssistantAgent (
    "local_agent"
    model_client=model_client,
    description="一个能够推荐当地活动或景点的本地助手。“
    system_message="你是一个有用的助手,能够为用户推荐正宗有趣的当地活动或景点.
)

language_agent = AssistantAgent (
    "language_agent"
    model_client=model_client,
    description=”一个能够提供语言技巧的助手。”,
    system_message="你是一个有用的助手,能够审查旅行计划,就如何最好地解决给定目的地的语言问题。
)

travel_summary_agent = AssistantAgent(
    "travel_summary_agent"
    model_client=model_client,
    description="一个能够总结旅行计划的助手。”,
    system_message=”你是一个有用的助手,能够接收其他代理的所有建议和意见,并提供详细的最终旅行计划。
)

接着我们创建了另外三个代理:

  • 本地专家(local_agent):了解当地好玩的地方和活动
  • 语言专家(language_agent):帮你学会在旅行地如何沟通
  • 总结专家(travel_summary_agent):负责整合所有建议,制作最终计划每个代理的 system_message 都不同,这就像给每个团队成员不同的工作指南。

每个代理的 system_message 都不同,这就像给每个团队成员不同的工作指南。

第四部分:设置会议规则

termination = TextMentionTermination "TERMINATE")

group_chat = RoundRobinGroupChat (
           [planner_agent, local_agent, language_agent, travel_summary_agent], 
           termination_condition=termination
)

这部分设置了团队会议的规则:

TextMentionTermination(“TERMINATE”):当任何代理说出“TERMINATE”这个词时,会议就结束了。这告诉系统什么时候任务完成。

RoundRobinGroupChat:这决定了代理们怎么交流。“轮流发言”的方式意味着代理们会按照列表中的顺序一个接一个地发言:

  • 先是旅行规划专家
  • 然后是本地专家
  • 接着是语言专家
  • 最后是总结专家

第五部分:启动系统

sync def main():
    await Console(group_chat.run_stream(task="计划一个为期3天的美国旅行。“))
    await model_client.close()

if _name_" == "_main_"
    asyncio.run(main())

这是启动整个系统的部分:

  • 1. 创建 main()函数,使用async 表示它是异步的(可以等待其他操作完成)
  • 2. group_chat.run_stream(task=”计划一个为期3天的美国旅行。“)给团队一个任务
  • 3. Console()将所有对话显示在屏幕上
  • 4.model_client.close()在完成后关闭连接
  • 5. asyncio.run(main())启动整个程序

运行结果

  

系统如何工作的流程


当你运行这个程序时,以下是发生的事情:

1. 开始会议:系统告诉团队"计划一个为期3天的美国旅行"

2. 规划专家发言:首先,旅行规划专家会创建一个基础行程,例如:
      第1天:抵达纽约,参观自由女神像和时代广场
      第2天:参观博物馆和中央公园
      第3天:购物和离开

3.本地专家补充:本地专家看到规划后,会添加当地特色的建议:
      推荐正宗的美食
      提供更隐蔽但有趣的地点
      添加本地文化体验

4.语言专家贡献:语言专家会提供在美国旅行的沟通提示:
     美国的礼仪习惯
     小费文化注意事项
     有用的美国俚语表达

5.总结专家整合:最后,总结专家会把所有建议整合成一个完整的旅行计划,并在完成后说"TERMINATE"结束会议

每个代理都能看到前面代理说的话,所以他们可以互相补充,一起创建一个比单个AI能做出的更全面的计划。

 

为什么这种方法很强大?


这种多代理协作有几个重要优势:

  • 1. 专业化:每个代理专注于自己最擅长的领域,就像专业团队一样
  • 2. 知识互补:代理们互相弥补知识空白
  • 3. 有序流程:从基础规划到本地知识,再到语言提示,最后整合成完整计划
  • 4. 清晰的终点:系统知道何时任务完成(看到”TERMINATE”)

  

如何修改用于其他目的?


如果你想改变这个系统,可以:

  • 1. 修改任务:把“计划一个为期3天的美国旅行。“改为任何你想要的任务
  • 2. 更改代理角色:修改每个代理的 system_message 来改变其专长
  • 3. 增减代理数量:根据需要添加或减少专家
  • 4. 换用不同模型:可以使用不同的AI模型,如 gpt-3.5-turbo 来节省成本

 

实用应用示例


这种多代理系统可以用于:

  • 1.学习计划:一个专家规划课程,一个专家提供资源,一个专家设计测试,一个整合成完整学习计划
  • 2.产品开发:市场专家、技术专家、财务专家和项目专家共同工作
  • 3.内容创作:创意专家、研究专家、结构专家和编辑专家合作创作内容

 

运行这个代码需要什么?


要运行这个代码,你需要:

  • 安装必要的库:
pip install -U "autogen-agentchat" 
pip install "autogen-ext [openai]"
pip install python-dotenv
  • 创建一个.env 文件,里面包含你的OpenAI API密钥:OPENAI_API_KEY-你的密钥
  • 运行代码:python 你的文件名.py

记住,使用API会产生费用,因为你是在使用OpenAI的服务

 

简单总结


想象这段代码就像组建了一个旅行规划团队:

  • 一个人擅长鏊体规划
  • 一个人了解当地的好地方
  • 一个人帮你学当地语言
  • 一个人把所有点子整合成一个完美计划
    他们轮流发言,每个人都能看到前面的人说了什么,最后一起创造出一个比单个AI做得更好的旅行计划。这种”多人协作”的方法可以应用到几乎任何需要多种专业知识的任务中。