别再只调API了!用AutoGen和LangChain亲手搭建你的第一个AI Agent(附完整代码)
本文详细介绍了如何使用AutoGen和LangChain从零构建AI Agent,帮助开发者摆脱单纯调用API的局限。通过实战案例演示了会议纪要处理Agent的开发流程,涵盖环境配置、框架选型、模块设计、多Agent协作及性能优化等关键环节,并提供了完整代码示例,助力开发者掌握AI Agent的核心构建技术。
从零构建AI Agent:AutoGen与LangChain实战指南
为什么开发者需要亲手搭建AI Agent?
在ChatGPT等大模型API遍地开花的今天,很多开发者陷入了"调参工程师"的困境——只会调用现成的接口,却不理解背后的运行机制。这就像只会开车的司机,对发动机原理一无所知。而构建一个真正的AI Agent,能让你从API消费者转变为智能系统创造者。
想象这样一个场景:你的Agent能自动处理会议录音,识别关键议题,生成待办事项并同步到团队日历。这种端到端的自动化能力,远不是简单调用ChatGPT API就能实现的。通过AutoGen或LangChain这类框架,我们可以赋予AI 感知环境、规划任务、执行动作 的完整能力链。
1. 环境准备与框架选型
1.1 开发环境配置
首先确保你的Python环境为3.8+版本,这是大多数AI框架的基本要求。推荐使用conda创建独立环境:
conda create -n ai_agent python=3.10
conda activate ai_agent
安装核心依赖库时,要注意版本兼容性。以下是经过验证的稳定版本组合:
| 包名称 | 推荐版本 | 功能说明 |
|---|---|---|
| autogen | 0.2.7 | 微软多Agent框架 |
| langchain | 0.0.346 | 工具调用与流程编排 |
| openai | 1.3.6 | 官方API客户端 |
| python-dotenv | 1.0.0 | 环境变量管理 |
pip install autogen==0.2.7 langchain==0.0.346 openai==1.3.6 python-dotenv==1.0.0
提示:建议将API密钥等敏感信息存储在.env文件中,通过dotenv加载,避免硬编码
1.2 框架能力对比
AutoGen和LangChain各有侧重,根据你的需求选择合适的工具:
-
AutoGen优势 :
- 原生支持多Agent协作
- 内置对话管理机制
- 微软官方维护更新快
-
LangChain优势 :
- 更丰富的工具集成
- 灵活的流程编排
- 社区生态更活跃
对于会议纪要处理这种需要多步骤协作的任务,我推荐使用AutoGen作为基础框架,配合LangChain的工具调用能力。
2. 构建会议纪要处理Agent
2.1 基础Agent架构设计
一个完整的Agent需要三大核心模块:
- 感知模块 :接收音频输入,转文本并提取关键信息
- 规划模块 :分析内容,确定待办事项优先级
- 执行模块 :创建日历事件,发送邮件通知
用Python类表示这个架构:
class MeetingAgent:
def __init__(self):
self.perception = PerceptionModule()
self.planning = PlanningModule()
self.action = ActionModule()
def run(self, audio_input):
text = self.perception.transcribe(audio_input)
todos = self.planning.analyze(text)
self.action.execute(todos)
2.2 实现语音转文本感知
借助OpenAI的Whisper模型实现高质量的语音识别:
from openai import OpenAI
class PerceptionModule:
def __init__(self):
self.client = OpenAI()
def transcribe(self, audio_path):
with open(audio_path, "rb") as audio_file:
transcript = self.client.audio.transcriptions.create(
file=audio_file,
model="whisper-1",
response_format="text"
)
return transcript
注意:实际项目中要考虑大文件分块处理、说话人分离等增强功能
2.3 任务规划与优先级判定
使用LangChain的LLMChain实现智能分析:
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
class PlanningModule:
def __init__(self):
prompt_template = """请分析以下会议记录,提取待办事项并按优先级排序:
{meeting_text}
输出格式:
- [优先级] 任务描述 (负责人)"""
self.prompt = PromptTemplate(
template=prompt_template,
input_variables=["meeting_text"]
)
def analyze(self, text):
chain = LLMChain(
llm=ChatOpenAI(temperature=0),
prompt=self.prompt
)
return chain.run(meeting_text=text)
3. 增强Agent的执行能力
3.1 日历事件自动创建
集成Google Calendar API实现日程管理:
from google.oauth2 import service_account
from googleapiclient.discovery import build
class ActionModule:
def __init__(self):
creds = service_account.Credentials.from_service_account_file(
'credentials.json',
scopes=['https://www.googleapis.com/auth/calendar']
)
self.service = build('calendar', 'v3', credentials=creds)
def create_event(self, todo_item):
event = {
'summary': todo_item['task'],
'start': {'dateTime': todo_item['due_time']},
'end': {'dateTime': todo_item['end_time']},
'attendees': [{'email': assignee} for assignee in todo_item['assignees']]
}
return self.service.events().insert(
calendarId='primary',
body=event
).execute()
3.2 异常处理与重试机制
为API调用添加健壮性保障:
from tenacity import retry, stop_after_attempt, wait_exponential
class RobustActionModule(ActionModule):
@retry(
stop=stop_after_attempt(3),
wait=wait_exponential(multiplier=1, min=4, max=10)
)
def create_event_with_retry(self, todo_item):
try:
return self.create_event(todo_item)
except Exception as e:
print(f"Error creating event: {str(e)}")
raise
4. 多Agent协作系统
4.1 使用AutoGen构建Agent团队
创建专门处理不同任务的Agent角色:
from autogen import AssistantAgent, UserProxyAgent
# 初始化Agent群组
def init_agents():
manager = AssistantAgent(
name="Manager",
system_message="协调各个专家Agent完成会议纪要处理"
)
transcriber = AssistantAgent(
name="Transcriber",
system_message="专门处理语音转文本任务"
)
analyst = AssistantAgent(
name="Analyst",
system_message="分析文本内容并提取待办事项"
)
executor = AssistantAgent(
name="Executor",
system_message="执行日历创建和邮件发送"
)
return manager, transcriber, analyst, executor
4.2 自定义交互流程
设计Agent间的通信协议和工作流:
def meeting_processing_flow(audio_path):
# 初始化Agent
manager, transcriber, analyst, executor = init_agents()
# 语音转文本阶段
transcript = manager.initiate_chat(
transcriber,
message=f"请处理这个会议录音:{audio_path}"
)
# 内容分析阶段
todos = manager.initiate_chat(
analyst,
message=f"请分析以下会议记录:{transcript}"
)
# 任务执行阶段
manager.initiate_chat(
executor,
message=f"请处理这些待办事项:{todos}"
)
5. 性能优化实战技巧
5.1 缓存机制实现
使用Redis缓存中间结果,避免重复计算:
import redis
from hashlib import md5
class CachedPerceptionModule(PerceptionModule):
def __init__(self):
super().__init__()
self.redis = redis.Redis(host='localhost', port=6379, db=0)
def transcribe(self, audio_path):
# 生成唯一缓存键
with open(audio_path, "rb") as f:
file_hash = md5(f.read()).hexdigest()
cache_key = f"transcript:{file_hash}"
# 检查缓存
cached = self.redis.get(cache_key)
if cached:
return cached.decode()
# 无缓存时执行转录
transcript = super().transcribe(audio_path)
self.redis.setex(cache_key, 3600, transcript) # 缓存1小时
return transcript
5.2 异步并行处理
使用asyncio提升多任务处理效率:
import asyncio
class AsyncActionModule(ActionModule):
async def execute_all(self, todo_items):
tasks = [
self.async_create_event(item)
for item in todo_items
]
return await asyncio.gather(*tasks, return_exceptions=True)
async def async_create_event(self, todo_item):
loop = asyncio.get_event_loop()
return await loop.run_in_executor(
None,
self.create_event,
todo_item
)
6. 部署与监控方案
6.1 容器化部署
使用Docker打包整个应用:
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "main.py"]
配套的docker-compose.yml配置:
version: '3'
services:
ai-agent:
build: .
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}
volumes:
- ./data:/app/data
redis:
image: redis:alpine
ports:
- "6379:6379"
6.2 监控仪表板实现
集成Prometheus和Grafana监控关键指标:
from prometheus_client import start_http_server, Counter
# 定义监控指标
REQUESTS_TOTAL = Counter(
'agent_requests_total',
'Total number of agent requests',
['agent_type']
)
class MonitoredMeetingAgent(MeetingAgent):
def run(self, audio_input):
REQUESTS_TOTAL.labels('meeting').inc()
super().run(audio_input)
# 启动监控服务器
start_http_server(8000)
7. 从Demo到生产的关键考量
当你的Agent开始处理真实业务数据时,以下几个方面的增强必不可少:
- 安全审计 :记录所有AI决策过程,满足合规要求
- 权限控制 :基于RBAC模型管理API访问权限
- 限流保护 :防止API调用过载
- 回滚机制 :当AI产生错误操作时能快速恢复
一个生产级的Agent系统架构应该包含以下组件:
[前端界面]
↓
[API网关] → [认证/限流]
↓
[Agent集群] ↔ [向量数据库]
↓
[工具服务] → [日历API][邮件服务]...
在开发过程中持续收集这些指标有助于迭代优化:
- 任务完成率
- 平均处理时间
- 人工干预频率
- 用户满意度评分
我曾在金融行业部署过一个合同审查Agent,最初版本需要30%的人工复核。通过持续优化提示词和增加校验规则,三个月后降到了不足5%,真正实现了商业价值。
更多推荐



所有评论(0)