AutoGen多Agent框架实战:从零构建智能对话系统
<h2>一、AutoGen简介</h2><p>AutoGen是微软开源的多Agent对话框架,旨在简化多Agent系统的构建。与CrewAI相比,AutoGen提供更底层的抽象和更灵活的Agent定义,最突出的特点是支持Human-in-the-Loop模式,可在Agent执行过程中接收人类反馈。</p>
<h2>二、核心概念</h2>
<pre><code>AssistantAgent:AI助手,执行任务
UserProxyAgent:用户代理,支持人类输入或代码执行
GroupChat:群聊,多个Agent互相对话
ConversableAgent:基类,所有Agent都继承自它</code></pre>
<h2>三、环境搭建</h2>
<pre><code>pip install pyautogen
import os
os.environ["OPENAI_API_KEY"] = "your-api-key"</code></pre>
<h2>四、最简单的例子:两Agent对话</h2>
<pre><code>import autogen
config_list = [{
"model": "gpt-4o",
"api_key": os.environ["OPENAI_API_KEY"]
}]
assistant = autogen.AssistantAgent(
name="Assistant",
llm_config={
"config_list": config_list,
"temperature": 0.7
}
)
user_proxy = autogen.UserProxyAgent(
name="User",
human_input_mode="NEVER",
max_consecutive_auto_reply=10,
code_execution_config={
"work_dir": "coding",
"use_docker": False
}
)
user_proxy.initiate_chat(assistant, message="用Python写一个快速排序算法")</code></pre>
<h2>五、群聊模式:多Agent协作</h2>
<pre><code>import autogen
from autogen import GroupChat, GroupChatManager
config_list = [{"model": "gpt-4o", "api_key": os.environ["OPENAI_API_KEY"]}]
coder = autogen.AssistantAgent(
name="Coder",
llm_config={"config_list": config_list},
system_message="你是一名Python开发工程师,负责编写代码实现功能。"
)
reviewer = autogen.AssistantAgent(
name="Reviewer",
llm_config={"config_list": config_list},
system_message="你是一名代码审查专家,负责审查代码质量。"
)
tester = autogen.AssistantAgent(
name="Tester",
llm_config={"config_list": config_list},
system_message="你是一名测试工程师,负责为代码编写单元测试。"
)
user_proxy = autogen.UserProxyAgent(name="User", human_input_mode="NEVER", max_consecutive_auto_reply=15)
groupchat = GroupChat(agents=, messages=[], max_round=10)
manager = GroupChatManager(groupchat=groupchat, llm_config={"config_list": config_list})
user_proxy.initiate_chat(manager, message="实现一个LRU缓存类,包含get和put方法,要求O(1)复杂度")</code></pre>
<h2>六、工具调用:让Agent使用外部工具</h2>
<pre><code>def search_documentation(query):
return "关于" + query + "的文档结果:https://docs.example.com/" + query
assistant = autogen.AssistantAgent(
name="Assistant",
llm_config={"config_list": config_list},
function_map={"search_doc": search_documentation}
)
user_proxy.initiate_chat(assistant, message="搜索AutoGen文档")</code></pre>
<h2>七、Human-in-the-Loop:人类介入模式</h2>
<pre><code>user_proxy = autogen.UserProxyAgent(
name="User",
human_input_mode="TERMINATE",# ALWAYS / TERMINATE / NEVER
max_consecutive_auto_reply=5
)
# TERMINATE:Agent请求终止时询问人类
# ALWAYS:每个回复都询问人类
# NEVER:完全自动,不询问</code></pre>
<h2>八、代码执行与沙箱隔离</h2>
<pre><code>user_proxy = autogen.UserProxyAgent(
name="CodeExecutor",
human_input_mode="NEVER",
code_execution_config={
"work_dir": "output",
"use_docker": True, # 生产环境建议使用Docker隔离
"timeout": 30,
"last_n_messages": 3
}
)</code></pre>
<h2>九、与Spring Boot集成</h2>
<pre><code>@Service
public class AutoGenService {
@Value("${openai.api.key}")
private String apiKey;
public String runTask(String task) {
ProcessBuilder pb = new ProcessBuilder("python", "-c",
"import autogen, os; " +
"os.environ = " + apiKey + "; " +
"assistant = autogen.AssistantAgent(name=Asst, " +
" llm_config={config_list: [{model: gpt-4o}]}); " +
"user_proxy = autogen.UserProxyAgent(name=User, human_input_mode=NEVER); " +
"user_proxy.initiate_chat(assistant, message=" + task + ")"
);
try {
Process p = pb.start();
return new String(p.getInputStream().readAllBytes());
} catch (Exception e) {
return "Error: " + e.getMessage();
}
}
}</code></pre>
<h2>十、最佳实践</h2>
<ol>
<li><strong>清晰的Agent角色定义</strong>:每个Agent的system_message要明确其职责范围</li>
<li><strong>合理的对话轮次限制</strong>:设置max_consecutive_auto_reply防止无限循环</li>
<li><strong>代码执行安全</strong>:生产环境务必使用Docker隔离</li>
<li><strong>Human-in-the-Loop慎用</strong>:在关键决策点介入,不要每步都问</li>
<li><strong>超时设置</strong>:为代码执行设置合理的超时时间</li>
</ol>
<h2>十一、总结</h2>
<p>AutoGen是构建复杂多Agent系统的利器,支持双Agent对话、群聊、工具调用、人类介入等多种模式。相比CrewAI,AutoGen提供更底层的控制和更丰富的功能,可以满足从简单自动化到复杂工作流的各类需求。</p>
</div>
<div id="MySignature" role="contentinfo">
---
📌 **如果觉得文章对你有帮助,欢迎点赞👍收藏⭐!**
💬 有问题或建议?欢迎在评论区留言讨论~
🔗 更多技术干货请关注作者:弥烟袅绕
📚 本文地址:https://www.cnblogs.com/czlws/p/19859350/autogen-multi-agent-dialogue-tutorial<br><br>
来源:https://www.cnblogs.com/czlws/p/19859350/autogen-multi-agent-dialogue-tutorial
頁:
[1]