导读:本期聚焦于孙志远创作的《如何在AutoGen中配置AssistantAgent与UserProxyAgent实现多Agent对话?》,敬请观看详情。构建一个能够自主编写并执行Python代码的自动化工作流,往往需要大语言模型与本地运行环境进行深度交互。AutoGen框架通过引入多Agent对话机制,巧妙地解决了这一痛点。在该框架中,AssistantAgent作为AI大脑负责逻辑推理与代码生成,而UserProxyAgent则充当人类代理,负责在本地执行代码并向AI反馈结果。本文将深入探讨如何配置这两个核心组件,从基础参数设置到系统提示词定制,再到对话模式的控制与终止条件设定,手把手教你搭建一个稳定可靠的多智能体协作系统,让大模型真正具备调用本地工具和执行代码的能力。

在构建大语言模型应用时,单纯的文本对话往往无法满足复杂的业务需求,我们通常需要模型能够调用外部工具、执行代码甚至与用户进行多轮交互。AutoGen框架正是为此而生,它通过多Agent对话机制,将复杂的任务拆解给不同角色的智能体。其中,AssistantAgent和UserProxyAgent是最基础也是最重要的两个角色,它们的配置直接决定了整个工作流的执行效率与安全性。

如何在AutoGen中配置AssistantAgent与UserProxyAgent实现多Agent对话?

一、理解AutoGen多Agent框架的核心设计

AutoGen的核心理念是通过可定制的对话型智能体来构建复杂的LLM应用。在多Agent对话模式中,任务不是由单个模型一次性完成的,而是通过多个Agent之间的协作与交互来逐步推进。这种设计极大地提高了任务完成的准确性和灵活性,使得系统能够自我纠错并适应各种突发情况。

在这个框架中,AssistantAgent主要扮演AI助手的角色。它接收指令,利用大语言模型的推理能力生成解决方案或编写代码。而UserProxyAgent则作为用户的代理,它不仅能够代替用户向AssistantAgent发送指令,更重要的是,它可以在本地环境中执行AssistantAgent生成的代码,并将执行结果自动反馈给AssistantAgent,从而形成一个闭环的交互流程。这种机制使得大模型不再局限于纸上谈兵,而是能够真正地操作计算机、处理数据并解决实际问题。

二、AssistantAgent的配置与提示词定制

AssistantAgent的配置主要集中在模型选择和系统提示词定制上。在初始化时,我们需要为其指定一个大语言模型配置列表,这通常包含模型名称、API密钥以及基地址等信息。AutoGen支持多种模型接入方式,包括OpenAI的API以及通过自定义接口接入的开源模型,这为不同算力环境的开发者提供了极大的便利。

除了模型配置,系统提示词是控制AssistantAgent行为的关键。默认情况下,AssistantAgent被设定为一个擅长编写Python代码的助手。但在特定场景下,比如我们需要它编写SQL查询或者生成Shell脚本时,就必须修改其系统提示词。通过调整system_message参数,我们可以精确地定义Agent的角色定位、输出格式以及行为边界,从而避免模型输出无关紧要的废话,直接给出可执行的代码块。

from autogen import AssistantAgent

# 配置大语言模型
llm_config = {
    "config_list": [
        {
            "model": "gpt-4",
            "api_key": "your-api-key"
        }
    ]
}

# 初始化AssistantAgent并定制系统提示词
assistant = AssistantAgent(
    name="coding_assistant",
    llm_config=llm_config,
    system_message="你是一个专业的Python开发工程师。当遇到需要计算或逻辑处理的需求时,请始终使用Python代码块给出解决方案,并确保代码包含详细的中文注释。"
)

在上述代码中,我们创建了一个名为coding_assistant的助手,并通过system_message强制其以Python代码块的形式输出结果。这种定制化配置能够有效约束模型的行为,减少无效的对话轮次,提高代码生成的质量和针对性。

三、UserProxyAgent的执行环境与功能配置

UserProxyAgent是连接大模型与本地物理环境的桥梁。它的配置项比AssistantAgent更为丰富,主要涉及代码执行能力、人工干预模式以及终止条件等。默认情况下,UserProxyAgent具备在本地执行Python代码的能力,这依赖于Docker容器或本地Python环境。

在配置代码执行功能时,我们需要关注work_dir参数,它指定了代码执行的工作目录,所有生成的脚本和输出文件都会保存在这里。同时,use_docker参数决定了代码是否在Docker容器中隔离执行。对于生产环境,强烈建议开启Docker执行以防止模型生成恶意代码对宿主机造成破坏。此外,通过设置human_input_mode参数,我们可以控制代理在何种情况下请求真实用户的输入,例如设置为NEVER则完全自动化运行,设置为ALWAYS则每次回复前都会等待用户确认。

from autogen import UserProxyAgent

# 初始化UserProxyAgent
user_proxy = UserProxyAgent(
    name="user_proxy",
    human_input_mode="NEVER", # 完全自动化,不请求人工干预
    max_consecutive_auto_reply=10, # 最大连续自动回复次数
    is_termination_msg=lambda msg: "TERMINATE" in msg.get("content", ""), # 终止条件判断
    code_execution_config={
        "work_dir": "coding_workspace", # 代码执行工作目录
        "use_docker": False # 为了演示方便关闭Docker,生产环境建议为True
    },
    system_message="你是用户代理。接收到代码后,请在本地执行并将结果反馈给助手。如果任务完成,请回复TERMINATE。"
)

这段代码展示了一个典型的UserProxyAgent配置。我们通过is_termination_msg设置了一个终止条件,即当对话消息中包含TERMINATE字符串时,对话自动结束。这通常与AssistantAgent的系统提示词配合使用,指示模型在完成任务后输出该终止信号,从而避免对话无限进行下去。

四、构建多Agent对话流程与终止条件控制

完成两个Agent的独立配置后,下一步是构建它们之间的对话流程。AutoGen提供了简洁的API来发起对话。通常由UserProxyAgent主动发起请求,AssistantAgent响应,随后UserProxyAgent执行代码并反馈,如此循环直到满足终止条件。

对话的终止控制是多Agent系统稳定运行的关键。除了前面提到的通过消息内容判断终止,AutoGen还提供了max_consecutive_auto_reply参数来防止无限循环。如果模型陷入死循环,或者代码执行一直报错导致模型不断尝试修复,该参数能够强制中断对话。合理设置这个数值,既能保证任务有足够的尝试次数,又能避免Token资源的无谓浪费。

# 发起对话
user_proxy.initiate_chat(
    assistant,
    message="请帮我编写一个Python脚本,计算斐波那契数列的前20项,并将结果保存到fibonacci.txt文件中。"
)

当这行代码执行后,你将看到控制台输出两个Agent之间的完整对话过程。AssistantAgent会生成代码,UserProxyAgent会在coding_workspace目录下创建并执行该脚本,如果执行报错,错误信息会被自动发送回AssistantAgent进行代码修正。这种自动化的试错与修复机制,正是AutoGen多Agent框架的强大之处,它极大地降低了开发门槛,让AI真正成为了解决问题的利器。

AutoGenAssistantAgentUserProxyAgent修改时间:2026-08-26 09:21:22

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。