构建高效AI代理的完整指南
项目概述
本项目是一个全面的AI代理开发指南,基于真实生产经验构建,提供了从基础组件到高级工作流的完整解决方案。不同于复杂的框架,我们专注于实用的构建模块和模式,帮助开发者构建可靠、可维护的AI系统。
核心功能特性
🧠 智能处理组件
- 基础智能:使用OpenAI GPT模型进行上下文理解和响应生成
- 结构化输出:通过Pydantic模型确保LLM输出符合预定数据模式
- 意图分类:基于条件的确定性决策和流程控制
💾 记忆管理系统
- 对话记忆:使用Mem0架构维护跨交互的相关信息
- 长期记忆:智能提取、整合和检索关键信息
- 向量存储:集成LanceDB实现高效的语义搜索
🛠️ 工具调用能力
- 函数调用:使代理能够在外部系统中执行特定操作
- MCP集成:通过模型上下文协议实现标准化工具交互
- API集成:天气查询、知识库检索等实用工具
:counterclockwise_arrows_button: 工作流模式
- 提示链:将复杂AI任务分解为有序的小步骤
- 路由模式:基于内容类型智能分发任务
- 并行处理:同时执行多个验证和检查任务
🛡️ 系统可靠性
- 错误恢复:优雅处理失败和异常的恢复机制
- 人工反馈:高风险决策的人工审批工作流
- 验证检查:并行安全验证和内容审核
安装指南
环境要求
- Python 3.11+
- UV包管理器(推荐)
- OpenAI API密钥
快速开始
# 使用UV安装依赖
uv add openai pydantic-ai python-dotenv# 设置环境变量
echo "OPENAI_API_KEY=your-api-key-here" > .env# 运行基础示例
uv run basic_intelligence.py
完整环境配置
# 克隆项目
git clone <repository-url>
cd ai-agents-guide# 同步所有依赖
uv sync# 安装开发依赖
uv add --dev pytest black ruff
使用说明
基础智能调用
from openai import OpenAIdef basic_intelligence(prompt: str) -> str:client = OpenAI()response = client.responses.create(model="gpt-4o", input=prompt)return response.output_text# 使用示例
result = basic_intelligence("什么是人工智能?")
print(result)
结构化输出验证
from pydantic import BaseModel
from openai import OpenAIclass TaskResult(BaseModel):task: strcompleted: boolpriority: intdef structured_intelligence(prompt: str) -> TaskResult:client = OpenAI()response = client.responses.parse(model="gpt-4o",input=[{"role": "system", "content": "从用户输入中提取任务信息"},{"role": "user", "content": prompt},],text_format=TaskResult,)return response.output_parsed# 使用示例
result = structured_intelligence("我需要在周五前完成项目演示,这是高优先级任务")
print(f"提取的任务: {result.task}")
工具调用集成
import requests
from openai import OpenAIdef get_weather(latitude, longitude):response = requests.get(f"https://api.open-meteo.com/v1/forecast?latitude={latitude}&longitude={longitude}¤t=temperature_2m")data = response.json()return data["current"]["temperature_2m"]def intelligence_with_tools(prompt: str) -> str:client = OpenAI()tools = [{"type": "function","name": "get_weather","description": "获取指定坐标的当前温度(摄氏度)","parameters": {"type": "object","properties": {"latitude": {"type": "number"},"longitude": {"type": "number"},},"required": ["latitude", "longitude"],}}]# 模型调用和工具执行逻辑# ...return final_response# 使用示例
result = intelligence_with_tools("今天巴黎的天气怎么样?")
print(result)
核心代码解析
1. 智能路由系统
from typing import Literal
from pydantic import BaseModel
from openai import OpenAIclass IntentClassification(BaseModel):intent: Literal["question", "request", "complaint"]confidence: floatreasoning: strdef route_based_on_intent(user_input: str) -> tuple[str, IntentClassification]:client = OpenAI()response = client.responses.parse(model="gpt-4o",input=[{"role": "system", "content": "将用户输入分类为:问题、请求或投诉"},{"role": "user", "content": user_input},],text_format=IntentClassification,)classification = response.output_parsedintent = classification.intent# 基于意图路由到不同处理函数if intent == "question":result = answer_question(user_input)elif intent == "request":result = process_request(user_input)elif intent == "complaint":result = handle_complaint(user_input)else:result = "我不确定如何帮助您"return result, classification
2. 记忆管理系统
from mem0 import Memory
from dotenv import load_dotenvload_dotenv()class CustomerSupportAIAgent:def __init__(self):config = {"vector_store": {"provider": "qdrant","config": {"host": "localhost", "port": 6333},},}self.memory = Memory.from_config(config)self.client = OpenAI()def handle_query(self, query, user_id=None):# 检索相关记忆relevant_memories = self.memory.search(query=query, user_id=user_id, limit=3)# 生成响应并存储新记忆self.memory.add(query, user_id=user_id, metadata={"app_id": "customer-support"})return response
3. 并行验证系统
import asyncio
from openai import AsyncOpenAI
from pydantic import BaseModel, Fieldclass CalendarValidation(BaseModel):is_calendar_request: boolconfidence_score: floatclass SecurityCheck(BaseModel):is_safe: boolrisk_flags: list[str]async def validate_request(user_input: str) -> bool:"""并行运行验证检查"""calendar_check, security_check = await asyncio.gather(validate_calendar_request(user_input),check_security(user_input))return (calendar_check.is_calendar_request andcalendar_check.confidence_score > 0.7 andsecurity_check.is_safe)
4. MCP服务器实现
from mcp.server.fastmcp import FastMCP# 创建MCP服务器
mcp = FastMCP("KnowledgeBase")@mcp.tool()
def get_knowledge_base() -> str:"""检索整个知识库"""try:with open("data/kb.json", "r") as f:kb_data = json.load(f)return format_knowledge_base(kb_data)except Exception as e:return f"错误: {str(e)}"# 运行服务器
if __name__ == "__main__":mcp.run(transport="stdio")
5. 文档处理流水线
from docling.document_converter import DocumentConverter
from docling.chunking import HybridChunker
import lancedbdef process_document(url: str):# 文档转换converter = DocumentConverter()result = converter.convert(url)# 智能分块chunker = HybridChunker(max_tokens=8191)chunks = list(chunker.chunk(result.document))# 向量存储db = lancedb.connect("data/lancedb")table = db.create_table("documents", schema=ChunkSchema)table.add(processed_chunks)return chunks
技术架构优势
模块化设计
每个组件都是独立的,可以按需组合使用,无需引入整个框架。
生产就绪
包含错误处理、验证检查、监控追踪等生产环境必需的功能。
标准化协议
支持MCP(模型上下文协议),确保与生态系统的兼容性。
性能优化
使用UV包管理器、Ruff检查器等现代工具提升开发效率和运行时性能。
本项目提供了构建真实AI系统所需的所有构建模块,从简单的函数调用到复杂的多代理工作流,帮助开发者快速构建可靠、可维护的AI应用。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码
公众号二维码