1 Autogen简介
AutoGen提供了一个统一的多代理对话框架,作为使用基础模型的高级抽象。它的特点是功能强大、可定制且可对话的代理,这些代理集成了llm、tools、和 human
。通过在多个有能力的代理之间自动化聊天,可以很容易地让它们共同自主地执行任务或使用人工反馈,包括需要通过代码使用工具的任务。
该框架简化了复杂的LLM工作流程的编排、自动化和优化。它最大限度地提高了LLM模型的性能,克服了它们的缺点。它支持以最小的工作量构建基于多代理对话的下一代LLM应用程序。
2 Agent基本介绍
AutoGen抽象并实现可对话代理,旨在通过代理间对话解决任务。具体来说,AutoGen中的代理具有以下显著特征:
-
可对话: AutoGen中的代理是可对话的,这意味着任何代理都可以发送和接收来自其他代理的消息来发起或继续对话 (图2)
-
可定制: AutoGen中的代理可以定制以集成llm、人员、工具或它们的组合(图1)
图1 “可定制”特点解释
图2 灵活“可对话”特点解释
2.1 Agent基础类定义
Autogen为代理设计了一个通用的ConversableAgent
类,这些代理能够通过交换消息相互通信,共同完成任务。一个代理可以与其他代理通信并执行操作。不同的代理在接收消息后执行的操作可能不同。两个代表性的子类是AssistantAgent
和UserProxyAgent
。
2.2 Agent实例1——对话场景测试
实例化两个类AssistantAgent
和UserProxyAgent
AssistantAgent system_message: 扮演John,参加开学典礼,碰到同班同学
UserProxyAgent system_message: 扮演Andy,和John聊天,建立友谊
2.3 Agent实例2——解决数学问题
MathUserProxyAgent
相对于AssistantAgent
和UserProxyAgent
两个类主要的区别在于system_message修改为了较长的prompt:
-
一步一步地解决问题(不要过多划分步骤)。
-
取出任何可以通过Python请求的查询(例如,任何可以计算的计算或方程)。
-
等我说出结果。
-
如果你认为结果是正确的,继续。如果结果无效或意外,请更正您的查询或推理。
mathproxyagent (to assistant):
你必须遵循下面的格式来编写代码: #你的代码
如果缺少某些包,您还可以建议使用代码来安装相应的包。
请遵循以下流程:
-
一步一步地解决问题(不要过多划分步骤)。
-
取出任何可以通过Python代码请求的查询(例如,任何可以计算的计算或方程)以及您在此对话上下文中知道的函数。
-
等待我给出结果或者等待函数调用的执行结果。
-
如果你认为结果是正确的,继续。如果结果无效或意外,请更正您的查询或推理。
问题:
4*x/(x^2-8*x+15) = A/(x-3) + B/(x-5)
assistant (to mathproxyagent):
为了解决这个问题,我建议我们遵循以下步骤:
-
因式分解
-
乘法操作,两边同乘(x-5)(x-3),4x = A(x−5)+B(x−3)
-
在除了( $$x=$$ 和 x=5 )以外的所有x 值点上与线性表达式一致,那么这两个表达式 $$x=$$ 和 x = 5也必须一致。
-
代入计算 A 和 B。
让我们从第一步开始:
-
因式分解,然后写因式分解代码,建议安装什么包
mathproxyagent (to assistant):
安装包然后执行因式分解
assistant (to mathproxyagent):
检查结果对不对,然后写下一步代码
mathproxyagent (to assistant):
......