基于 AutoGen 框架构建 AI Agent 实现自动化编程任务
本文介绍如何使用 AutoGen 框架构建 AI Agent。首先阐述智能体的基本概念与核心模块,随后演示在 Python 环境中安装 AutoGen 并配置大语言模型。通过 Docker 容器和本地环境两种执行方式,展示 Agent 如何自主编写代码、处理依赖错误及生成可视化图表。文章还探讨了多智能体协作机制、安全性考量及最佳实践,帮助开发者快速入门 AI Agent 开发。

本文介绍如何使用 AutoGen 框架构建 AI Agent。首先阐述智能体的基本概念与核心模块,随后演示在 Python 环境中安装 AutoGen 并配置大语言模型。通过 Docker 容器和本地环境两种执行方式,展示 Agent 如何自主编写代码、处理依赖错误及生成可视化图表。文章还探讨了多智能体协作机制、安全性考量及最佳实践,帮助开发者快速入门 AI Agent 开发。

Agent(智能体)是指具有自主决策能力和自我学习能力的计算机程序或机器人。智能体可以通过感知环境、分析信息、制定决策并执行行动来完成任务。一个典型的智能体通常包括以下三个核心模块:
在软件开发领域,AI Agent 能够理解自然语言需求,自主规划任务路径,编写代码,调试错误,最终交付可运行的软件组件。
将人工智能技术应用于特定行业,可以创造出高度定制化的智能代理。以下是一些典型的应用方向:
通过将 AI 技术与垂直领域的专业知识相结合,智能代理能够显著提升效率、降低成本并增强用户体验。这些代理既可以是独立的软件系统,也可以作为智能组件集成到现有业务系统中。
本文的目标是介绍微软开源的 AutoGen 框架,帮助开发者快速入门 AI Agent 的开发与落地。
为了直观展示 AutoGen 的能力,我们将实现一个能够自主完成数据分析与可视化的 Agent。需求为:绘制今年特斯拉(TSLA)和英伟达(NVDA)的股票价格趋势图。
首先,确保已安装 Python 环境。推荐使用 Python 3.8 及以上版本。安装 AutoGen 库的最简单方式是通过 pip:
pip install pyautogen
如果需要使用 Docker 容器隔离执行环境,请确保本地已安装 Docker Desktop 或 Docker Engine。
LLM 是 Agent 的核心大脑,决定了 Agent 的角色定位、场景感知及工具选择能力。你需要选择一个遵循 OpenAI 规范的模型服务。配置示例如下:
llm_config = {
"model": "gpt-4-turbo",
"api_key": "YOUR_API_KEY",
"base_url": "https://api.openai.com/v1"
}
注意:请将上述配置替换为你实际的模型名称、API Key 和基础 URL。支持多种兼容 OpenAI 协议的模型提供商。
AutoGen 提供了两种代码执行环境:本地环境和 Docker 容器环境。出于安全性和隔离性考虑,推荐使用 Docker 容器。
此方案会在后台启动一个临时容器运行代码,避免污染宿主环境。
import os
import autogen
from autogen import AssistantAgent, UserProxyAgent
# 配置 LLM
llm_config = {
"model": "gpt-4-turbo",
"api_key": "YOUR_API_KEY",
"base_url": "https://api.openai.com/v1"
}
# 初始化 Docker 代码执行器
with autogen.coding.DockerCommandLineCodeExecutor(work_dir="coding_docker") as code_executor:
# 创建助手 Agent
assistant = AssistantAgent(
name="assistant",
llm_config=llm_config,
system_message="You are a helpful AI assistant. You can write and execute Python code."
)
# 创建用户代理 Agent,绑定代码执行器
user_proxy = UserProxyAgent(
name="user_proxy",
code_execution_config={"executor": code_executor},
human_input_mode="NEVER"
)
# 发起对话
user_proxy.initiate_chat(
assistant,
message="绘制 NVDA 和 TSLA 股价本年迄今变化图。将绘图保存到名为 plot.png 的文件中。"
)
此方案直接在当前 Python 环境中运行代码,适合快速测试,但需注意依赖冲突风险。
import autogen
from autogen import AssistantAgent, UserProxyAgent
llm_config = {
"model": "gpt-4-turbo",
"api_key": "YOUR_API_KEY",
"base_url": "https://api.openai.com/v1"
}
assistant = AssistantAgent("assistant", llm_config=llm_config)
user_proxy = UserProxyAgent(
"user_proxy",
code_execution_config={"executor": autogen.coding.LocalCommandLineCodeExecutor(work_dir="coding_local")}
)
user_proxy.initiate_chat(
assistant,
message="绘制 NVDA 和 TSLA 股价本年迄今变化图。将绘图保存到名为 plot.png 的文件中。"
)
当代码开始执行后,Agent 会经历以下典型流程:
yfinance 获取数据,matplotlib 绘图)。pip install yfinance)。在实际运行中,你可能会遇到类似'缺少依赖'的错误。AutoGen 的设计允许 Agent 自动尝试修复这些问题,体现了其自主解决问题的能力。
AutoGen 支持多智能体(Multi-Agent)模式。你可以定义多个具有不同角色的 Agent,例如一个负责写代码,一个负责审查代码,另一个负责运行测试。这种协作模式更接近真实的软件开发团队。
# 示例:创建两个不同的 Agent
engineer = AssistantAgent("engineer", llm_config=llm_config)
reviewer = AssistantAgent("reviewer", llm_config=llm_config)
# 设置它们之间的对话逻辑
engineer.register_reply(reviewer, reply_func=...)
在使用 AutoGen 执行代码时,安全性至关重要。建议始终在沙箱环境(如 Docker 容器)中运行生成的代码,防止恶意代码对宿主机造成损害。同时,限制 Agent 访问敏感网络资源或文件系统。
除了内置的代码执行能力,你还可以注册自定义工具函数供 Agent 调用。这允许 Agent 访问外部 API、查询数据库或操作特定业务逻辑。
@user_proxy.register_for_execution()
@assistant.register_for_llm(name="get_stock_price", description="Get stock price")
def get_stock_price(symbol: str) -> str:
# 实现获取股价的逻辑
return f"{symbol} current price is $100"
requirements.txt 中预置常用库,或让 Agent 自行安装。AutoGen 是一个强大的框架,它简化了 AI Agent 的开发流程,使得开发者能够通过简单的配置让大模型自主完成复杂的编程任务。通过 Docker 隔离、多智能体协作以及自定义工具扩展,AutoGen 能够满足从简单脚本自动化到复杂系统开发的各种需求。随着大模型技术的进步,AI Agent 将在软件工程、数据分析及业务自动化等领域发挥越来越重要的作用。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online