LLM之Agent(七)| AutoGen介绍

Autogen是微软开发的框架,通过定制和交谈代理利用大模型能力,如GPT-4,简化工作流并集成人类智慧。它支持多智能体对话,如编程助手、代码审查等,降低编码工作量。文章通过FizzBuzz游戏展示了如何使用Autogen进行实战应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图片

一、Autogen介绍

       Autogen是Microsoft开发的一个用于简化LLM工作流的编排、优化和自动化的框架。它提供了可定制和可交谈的代理,充分利用了大模型(比如GPT-4)的能力,并且可以集成人类智慧和工具,在多个代理之间可以实现自动化聊天。

图片

       如上图所示:AutoGen使用多智能体对话实现了复杂的基于LLM的工作流。(左)AutoGen代理可以定制,可以基于LLM、工具、人员,甚至是它们的组合。(右上角)代理可以通过对话解决任务。(右下角)该框架支持许多其他复杂的对话模式。

使用AutoGen,构建一个复杂的多智能体对话系统可以归结为:

  • 定义一组具有专门功能和角色的代理集合;
  • 定义代理之间的交互行为,比如,一个代理接收到来自另一个代理的消息时要回复什么。

      这两个步骤都是直观的和模块化的,使这些代理可以重复使用和组合。例如,要构建一个基于代码的问答系统,可以如下图所示设计代理及其交互,这样的系统可以在像 supply-chain optimization(https://github.com/microsoft/OptiGuide)的应用中可以将所需的手动交互次数从3倍减少到10倍。使用AutoGen可以将编码工作量减少4倍以上。

图片

       如上图所示:Commander接收用户的问题,并与Writer和Safeguard进行协调。Writer编写代码和注释,Safeguard确保安全,Commander执行代码。如果出现问题,可以重复此过程,直到问题得到解决。带阴影的圆表示可以重复多次的步骤。

       在这个框架中,是将每个代理(agents)视为具有其独特系统指令的单个ChatGPT会话。例如,可以指示一个代理充当编程助手,根据用户请求生成Python代码。另一个代理可以是代码审查器,它获取Python代码片段并对其进行故障排除。然后,可以将第一个代理的响应作为输入传递给第二个代理。其中一些代理甚至可以访问外部工具,比如ChatGPT插件,如Code Interpreter或Wolfram Alpha。

       使用AutoGen内置代理的一种简单方法是调用助理代理和用户代理之间的自动聊天。如下图所示,可以轻松构建ChatGPT+ Code Interpreter+plugins的增强版,具有可定制的自动化程度,可在自定义环境中使用,并可嵌入更大的系统中。同样也可以根据历史交互记录添加个性化。

图片

以代理会话为中心的设计有许多好处,包括:

  • 更自然地处理歧义、反馈、进度和协作;
  • 实现有效的编码相关任务,如来回故障排除的工具使用;
  • 允许用户通过聊天中的代理无缝选择加入或退出;
  • 通过多位专家的合作实现集体目标。

       AutoGen支持自动化聊天和多样化的通信模式,可以轻松地协调复杂、动态的工作流程并进行多功能性实验。下图展示了一个由AutoGen启用的会话象棋。

图片

二、Autogen实战

       下面我们以FizzBuzz游戏进行演示autogen的使用方法,FizzBuzz游戏是一个报数游戏,从1开始报数,如果这个数可以被3整除,你就要改为说"Fizz",如果能被5整除,就改为说"Buzz"。如果同时是3和5的倍数,打印"FizzBuzz"。现在,你的数学老师开始轮流指向每个同学,他们开心的喊出"1!"、"2!"、"Fizz!"、"4!"、"Buzz!"...

2.1 设置环境

       Agent创建的代码可以在各种环境中执行,例如在Colab、Docker或原始环境中。推荐使用Colab和Docker作为执行环境。

2.2 初始设置

      首先,我们必须配置Open API密钥以及其他内容。为此,我们复制autogen根目录中的OAI_CONFIG_LIST_sample来生成OAI_CONFIG _LIST文件,并将此文件与稍后运行的脚本放在同一目录中。

[    {        "model": "gpt-4",        "api_key": "<your OpenAI API key here>"    }]

2.3 安装相关包

PS:Python version >= 3.8, < 3.12

pip install pyautogen

       以下代码中,如果use_docker标志设置为False,它将在本地Python环境中运行。​​​​​​​

from autogen import AssistantAgent, UserProxyAgent, config_list_from_jsoncode_execution_config = {    "work_dir": "coding",    "use_docker": False}config_list = config_list_from_json(env_or_file="OAI_CONFIG_LIST")assistant = AssistantAgent("assistant", llm_config={"config_list": config_list})user_proxy = UserProxyAgent("user_proxy", code_execution_config=code_execution_config)message = "Create and run the FizzBuzz code."user_proxy.initiate_chat(assistant, message=message)

       AssistantAgent是一个执行LLM的模块,在FizzBuzz中,它是一个创建源代码的模块。输入要使用的API及其密钥作为配置,AssistantAgent中的LLM推理配置可以通过LLM_cofing进行配置。

        接下来,让我们建立一个UserProxyAgent。设计用于与个人互动并执行源代码的模块。使用code_execution_config配置执行环境和其他相关设置。

        执行的预期结果应该类似于以下内容,将观察到FizzBuzz代码的生成​​​​​​​

assistant (to user_proxy):This is a very common coding challenge. The task is to print numbers from 1 to 100, but for multiples of 3 print "Fizz" instead of the number and for the multiples of 5 print "Buzz". For numbers which are multiples of both three and five print "FizzBuzz".Here is the Python code that accomplishes the task:```python# filename: fizzbuzz.pyfor num in range(1, 101):    if num % 3 == 0 and num % 5 == 0:        print('FizzBuzz')    elif num % 3 == 0:        print('Fizz')    elif num % 5 == 0:        print('Buzz')    else:        print(num)```To run this script, save it into a file called `fizzbuzz.py`, then run it using Python in a terminal:```shellpython3 fizzbuzz.py

参考文献:

[1] https://www.microsoft.com/en-us/research/blog/autogen-enabling-next-generation-large-language-model-applications/

[2] https://quickaitutorial.com/how-powerful-autogen-is-reshaping-llm/#1_Set_up_your_environment

[3] https://github.com/microsoft/autogen

[4] https://microsoft.github.io/autogen/

### 下载 LLM Agent 工具或软件 对于希望下载和安装 LLM Agent 或相关工具的开发者来说,有几个流行的选择可以帮助简化这个过程。以下是针对不同需求的具体指导: #### 使用 LangChain 框架 LangChain 是一种流行的用于构建基于对话的应用程序的框架,它能够显著简化 LLM Agent 的创建过程[^1]。 为了安装 LangChain,可以在命令行环境中执行如下 Python 包管理器 pip 命令: ```bash pip install langchain ``` 这将自动处理依赖关系并将必要的库文件下载到本地环境。 #### 利用 AutoGen 多代理会话框架 AutoGen 提供了一个强大的多代理会话框架以及一系列的工作流系统,适用于各种应用场景下的 LLM 开发者[^2]。 可以通过 GitHub 获取最新版本的源码,并按照官方文档中的说明完成设置: ```bash git clone https://github.com/microsoft/autogen.git cd autogen pip install . ``` 上述指令不仅克隆仓库还完成了包的本地化安装。 #### 考虑开源社区贡献项目 除了商业产品外,还有许多由活跃社区维护和支持的开源选项可供选择。这些平台通常具有较低的学习曲线和技术门槛,适合初学者探索和发展技能。 例如,可以从 Hugging Face Model Hub 中找到预训练好的 LLMs 及其对应的 SDK 来快速上手实践[^4]: [Hugging Face Models](https://huggingface.co/models) 通过这种方式可以直接加载模型而无需自行训练,极大地降低了入门难度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wshzd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值