2026年AI Agent开发实战:从核心原理到生产级系统部署

📅 2026/7/12 5:17:11 👁️ 阅读次数 📝 编程学习
2026年AI Agent开发实战:从核心原理到生产级系统部署

最近在AI Agent开发领域踩了不少坑,发现市面上的教程要么停留在简单的API调用,要么就是某个框架的文档翻译,真正能指导构建生产级系统的实战内容少之又少。本文基于2026年最新的技术实践,从零开始手把手教你构建完整的AI Agent系统,包含环境搭建、核心概念、实战项目到生产部署的全流程。

无论你是刚接触AI Agent的新手,还是有一定经验想要深入理解架构的开发者,这篇文章都能帮你建立完整的知识体系。学完后你将能够独立设计多Agent协作系统、管理Token预算、实现企业级安全控制,真正把AI Agent应用到实际业务中。

1. AI Agent核心概念与背景

1.1 什么是AI Agent

AI Agent(人工智能智能体)是指能够感知环境、进行推理决策并执行动作的智能系统。与传统程序不同,AI Agent具备自主性和适应性,能够根据环境变化调整行为策略。

从技术角度看,一个完整的AI Agent包含以下核心组件:

  • 感知模块:接收外部输入和环境信息
  • 推理引擎:基于大语言模型进行逻辑推理和决策
  • 行动执行:调用工具或API执行具体操作
  • 记忆系统:存储历史交互和经验知识

1.2 AI Agent的应用场景

在实际业务中,AI Agent已经广泛应用于多个领域:

客户服务场景:智能客服Agent能够理解用户问题,查询知识库,处理退款、咨询等复杂业务流程。相比传统规则引擎,AI Agent能够处理更模糊的自然语言请求。

数据分析场景:数据分析Agent可以接受自然语言的数据分析需求,自动编写SQL查询、生成可视化图表,并给出业务洞察建议。

开发辅助场景:代码生成Agent能够理解开发需求,自动生成代码、进行代码审查、甚至协助调试和优化。

自动化办公场景:办公自动化Agent可以处理邮件分类、会议纪要生成、日程安排等重复性工作。

1.3 为什么需要系统学习AI Agent开发

随着大语言模型能力的不断提升,简单的Prompt工程已经无法满足复杂业务需求。系统学习AI Agent开发能够帮助你:

  • 处理多步骤复杂任务,而不仅仅是单轮对话
  • 实现可靠的错误处理和重试机制
  • 控制API调用成本,优化Token使用效率
  • 构建可维护、可扩展的智能系统架构
  • 满足企业级的安全和合规要求

2. 开发环境准备与工具选型

2.1 基础环境配置

在开始AI Agent开发前,需要准备以下基础环境:

Python环境:推荐使用Python 3.9+版本,这是大多数AI框架兼容性最好的版本。

# 检查Python版本 python --version # 如果版本过低,建议使用pyenv管理多版本 pyenv install 3.9.18 pyenv global 3.9.18

包管理工具:使用conda或uv管理Python环境,避免包冲突。

# 使用conda创建虚拟环境 conda create -n ai-agent python=3.9 conda activate ai-agent # 或者使用uv(更快更轻量) uv venv ai-agent source ai-agent/bin/activate

2.2 核心开发工具

代码编辑器:VS Code是最佳选择,配备必要的扩展:

{ "推荐扩展": [ "Python", "Jupyter", "GitLens", "Docker", "YAML" ] }

版本控制:Git是必备工具,建议配置合理的.gitignore文件:

# Python相关 __pycache__/ *.pyc .python-version # 环境变量 .env .env.local # 大文件 models/ data/ logs/

2.3 AI开发框架选择

2026年主流的AI Agent开发框架包括:

LangGraph:基于状态机的多Agent编排框架,适合复杂工作流CrewAI:面向多Agent协作的框架,角色定义清晰AutoGen:微软推出的多Agent对话框架Haystack:专注于检索增强生成(RAG)的框架

对于初学者,建议从LangGraph开始,因为它提供了最直观的状态机模型,便于理解Agent的工作机制。

3. AI Agent核心技术原理

3.1 ReAct推理框架

ReAct(Reasoning + Acting)是AI Agent的核心推理模式,它将推理和行动有机结合:

class ReActAgent: def __init__(self, llm, tools): self.llm = llm self.tools = tools self.memory = [] def run(self, query): # 第一步:思考推理 thought = self.llm.generate(f"思考如何解决:{query}") self.memory.append({"step": "think", "content": thought}) # 第二步:决定行动 action = self.llm.generate(f"基于思考决定行动:{thought}") self.memory.append({"step": "act", "content": action}) # 第三步:执行行动 if "搜索" in action: result = self.tools.search(query) elif "计算" in action: result = self.tools.calculate(query) # 第四步:观察结果并继续 observation = f"行动结果:{result}" self.memory.append({"step": "observe", "content": observation}) return result

ReAct循环的关键在于每个步骤都有明确的输入输出,便于调试和优化。

3.2 工具调用机制

工具调用是Agent与外部世界交互的核心能力。现代AI框架通常采用标准化的工具定义方式:

from typing import List, Dict, Any import json class BaseTool: """工具基类""" name: str description: str parameters: Dict[str, Any] def __init__(self, name, description, parameters): self.name = name self.description = description self.parameters = parameters def execute(self, **kwargs): raise NotImplementedError class CalculatorTool(BaseTool): """计算器工具""" def __init__(self): super().__init__( name="calculator", description="执行数学计算", parameters={ "expression": {"type": "string", "description": "数学表达式"} } ) def execute(self, expression: str) -> float: try: # 安全评估数学表达式 result = eval(expression, {"__builtins__": None}, {}) return float(result) except Exception as e: return f"计算错误:{str(e)}" class WebSearchTool(BaseTool): """网络搜索工具""" def __init__(self, api_key): super().__init__( name="web_search", description="在互联网上搜索信息", parameters={ "query": {"type": "string", "description": "搜索关键词"} } ) self.api_key = api_key def execute(self, query: str) -> str: # 实现搜索逻辑 return f"搜索结果:关于{query}的信息"

3.3 记忆管理系统

记忆是Agent实现多轮对话和持续学习的基础。记忆系统通常分为短期记忆和长期记忆:

from datetime import datetime from typing import List, Dict import json class MemorySystem: def __init__(self, max_short_term=10, long_term_storage=None): self.short_term_memory = [] self.max_short_term = max_short_term self.long_term_storage = long_term_storage def add_memory(self, content: str, memory_type: str = "conversation"): """添加记忆""" memory_item = { "timestamp": datetime.now().isoformat(), "content": content, "type": memory_type } self.short_term_memory.append(memory_item) # 维护短期记忆大小 if len(self.short_term_memory) > self.max_short_term: self.short_term_memory.pop(0) # 重要记忆存入长期存储 if memory_type == "important" and self.long_term_storage: self.long_term_storage.save(memory_item) def get_relevant_memories(self, query: str, limit: int = 5) -> List[Dict]: """检索相关记忆""" # 简单的关键词匹配,实际项目中可用向量检索 relevant = [] for memory in self.short_term_memory + self.long_term_storage.load_all(): if query.lower() in memory["content"].lower(): relevant.append(memory) return relevant[:limit]

4. 完整实战项目:智能数据分析Agent

4.1 项目需求分析

我们构建一个智能数据分析Agent,它能够:

  • 理解自然语言的数据分析需求
  • 自动生成和执行SQL查询
  • 对结果进行可视化展示
  • 提供业务洞察建议

4.2 项目结构设计

smart-data-agent/ ├── src/ │ ├── agents/ │ │ ├── __init__.py │ │ ├── analysis_agent.py │ │ └── sql_agent.py │ ├── tools/ │ │ ├── __init__.py │ │ ├── database_tool.py │ │ └── visualization_tool.py │ ├── memory/ │ │ ├── __init__.py │ │ └── memory_system.py │ └── utils/ │ ├── __init__.py │ └── config.py ├── tests/ ├── data/ ├── requirements.txt └── main.py

4.3 核心代码实现

数据库工具类

import sqlite3 import pandas as pd from typing import List, Dict, Any class DatabaseTool: def __init__(self, db_path: str): self.db_path = db_path self.conn = sqlite3.connect(db_path) def get_table_schema(self, table_name: str) -> Dict[str, Any]: """获取表结构信息""" cursor = self.conn.cursor() cursor.execute(f"PRAGMA table_info({table_name})") columns = cursor.fetchall() schema = { "table_name": table_name, "columns": [] } for col in columns: schema["columns"].append({ "name": col[1], "type": col[2], "nullable": not col[3], "default": col[4] }) return schema def execute_sql(self, sql: str) -> pd.DataFrame: """执行SQL查询""" try: return pd.read_sql_query(sql, self.conn) except Exception as e: raise ValueError(f"SQL执行错误:{str(e)}") def get_table_stats(self, table_name: str) -> Dict[str, Any]: """获取表统计信息""" df = self.execute_sql(f"SELECT * FROM {table_name} LIMIT 1000") return { "row_count": len(df), "columns": list(df.columns), "data_types": df.dtypes.to_dict(), "sample_data": df.head(5).to_dict('records') }

SQL生成Agent

from langchain.chat_models import ChatOpenAI from langchain.schema import HumanMessage, SystemMessage import json class SQLAgent: def __init__(self, api_key: str, database_tool: DatabaseTool): self.llm = ChatOpenAI( model="gpt-4", api_key=api_key, temperature=0.1 ) self.db_tool = database_tool def generate_sql(self, natural_language_query: str, table_name: str) -> str: """根据自然语言生成SQL查询""" # 获取表结构信息 schema = self.db_tool.get_table_schema(table_name) stats = self.db_tool.get_table_stats(table_name) system_prompt = f""" 你是一个专业的SQL生成专家。根据用户需求生成准确、高效的SQL查询。 表结构信息: {json.dumps(schema, indent=2)} 表统计信息: {json.dumps(stats, indent=2)} 生成要求: 1. 只生成SQL语句,不要额外解释 2. 确保SQL语法正确 3. 使用合适的WHERE条件优化查询性能 4. 避免SELECT *,明确指定需要的列 """ messages = [ SystemMessage(content=system_prompt), HumanMessage(content=natural_language_query) ] response = self.llm(messages) sql_query = response.content.strip() # 清理SQL语句(移除可能的代码块标记) if sql_query.startswith("```sql"): sql_query = sql_query[6:] if sql_query.endswith("```"): sql_query = sql_query[:-3] return sql_query.strip()

数据分析主Agent

from typing import Dict, Any import matplotlib.pyplot as plt import seaborn as sns from io import BytesIO import base64 class AnalysisAgent: def __init__(self, sql_agent: SQLAgent, database_tool: DatabaseTool): self.sql_agent = sql_agent self.db_tool = database_tool self.memory = [] def analyze_data(self, query: str, table_name: str) -> Dict[str, Any]: """执行完整的数据分析流程""" # 步骤1:生成SQL查询 sql_query = self.sql_agent.generate_sql(query, table_name) self.memory.append({"step": "sql_generation", "content": sql_query}) # 步骤2:执行查询 try: result_df = self.db_tool.execute_sql(sql_query) self.memory.append({"step": "query_execution", "row_count": len(result_df)}) except Exception as e: return {"error": f"查询执行失败:{str(e)}", "sql": sql_query} # 步骤3:生成分析结果 analysis = self._generate_analysis(result_df, query) # 步骤4:生成可视化 visualization = self._generate_visualization(result_df, query) return { "sql_query": sql_query, "result_count": len(result_df), "analysis": analysis, "visualization": visualization, "sample_data": result_df.head(10).to_dict('records') } def _generate_analysis(self, df, query): """生成数据分析洞察""" analysis = { "summary": f"数据集包含 {len(df)} 行记录", "key_insights": [], "recommendations": [] } # 简单的统计分析 numeric_columns = df.select_dtypes(include=['number']).columns if len(numeric_columns) > 0: for col in numeric_columns[:3]: # 只分析前3个数值列 stats = { "column": col, "mean": df[col].mean(), "median": df[col].median(), "std": df[col].std() } analysis["key_insights"].append(stats) return analysis def _generate_visualization(self, df, query): """生成数据可视化""" if len(df) == 0: return None # 根据数据特征选择合适的图表 numeric_columns = df.select_dtypes(include=['number']).columns if len(numeric_columns) >= 2: # 散点图 plt.figure(figsize=(10, 6)) sns.scatterplot(data=df, x=numeric_columns[0], y=numeric_columns[1]) plt.title(f"数据分布: {numeric_columns[0]} vs {numeric_columns[1]}") elif len(numeric_columns) == 1: # 直方图 plt.figure(figsize=(10, 6)) sns.histplot(data=df, x=numeric_columns[0]) plt.title(f"{numeric_columns[0]} 分布") else: # 类别数据 - 柱状图 categorical_columns = df.select_dtypes(include=['object']).columns if len(categorical_columns) > 0: plt.figure(figsize=(10, 6)) df[categorical_columns[0]].value_counts().head(10).plot(kind='bar') plt.title(f"{categorical_columns[0]} 分布") # 将图表转换为base64 buffer = BytesIO() plt.savefig(buffer, format='png', bbox_inches='tight') buffer.seek(0) image_base64 = base64.b64encode(buffer.getvalue()).decode() plt.close() return f"data:image/png;base64,{image_base64}"

4.4 项目配置与运行

配置文件

# config.py import os from dataclasses import dataclass @dataclass class Config: # API配置 openai_api_key: str = os.getenv("OPENAI_API_KEY", "") # 数据库配置 database_path: str = os.getenv("DATABASE_PATH", "data/sample.db") # Agent配置 model_name: str = "gpt-4" temperature: float = 0.1 max_tokens: int = 2000 def create_sample_database(): """创建示例数据库""" import sqlite3 import pandas as pd conn = sqlite3.connect('data/sample.db') # 创建示例数据 sales_data = pd.DataFrame({ 'date': pd.date_range('2024-01-01', periods=100, freq='D'), 'product': ['A', 'B', 'C'] * 33 + ['A'], 'sales': range(100, 200), 'region': ['North', 'South', 'East', 'West'] * 25 }) sales_data.to_sql('sales', conn, if_exists='replace', index=False) conn.close()

主程序

# main.py from src.agents.analysis_agent import AnalysisAgent from src.agents.sql_agent import SQLAgent from src.tools.database_tool import DatabaseTool from src.utils.config import Config, create_sample_database def main(): # 初始化配置 config = Config() # 创建示例数据库(如果不存在) create_sample_database() # 初始化工具和Agent db_tool = DatabaseTool(config.database_path) sql_agent = SQLAgent(config.openai_api_key, db_tool) analysis_agent = AnalysisAgent(sql_agent, db_tool) # 示例查询 queries = [ "显示最近30天的销售数据", "哪个产品的销售额最高?", "按地区分析销售分布" ] for query in queries: print(f"\n=== 分析查询: {query} ===") result = analysis_agent.analyze_data(query, "sales") if "error" in result: print(f"错误: {result['error']}") else: print(f"生成的SQL: {result['sql_query']}") print(f"结果数量: {result['result_count']}") print(f"分析摘要: {result['analysis']['summary']}") # 在实际应用中,可以将base64图片显示在Web界面 if result['visualization']: print("已生成可视化图表") if __name__ == "__main__": main()

4.5 运行结果与验证

运行项目后,你将看到类似以下的输出:

=== 分析查询: 显示最近30天的销售数据 === 生成的SQL: SELECT date, product, sales, region FROM sales WHERE date >= DATE('now', '-30 days') ORDER BY date DESC 结果数量: 30 分析摘要: 数据集包含 30 行记录 已生成可视化图表 === 分析查询: 哪个产品的销售额最高? === 生成的SQL: SELECT product, SUM(sales) as total_sales FROM sales GROUP BY product ORDER BY total_sales DESC LIMIT 1 结果数量: 1 分析摘要: 数据集包含 1 行记录

5. 多Agent协作系统设计

5.1 多Agent架构模式

在实际复杂系统中,单个Agent往往无法处理所有任务,需要多个Agent协作。常见的多Agent架构模式包括:

主管模式(Supervisor):一个主管Agent负责接收任务,分配给专业Agent执行流水线模式(Pipeline):多个Agent按顺序处理任务的不同阶段群集模式(Swarm):多个Agent并行工作,通过投票或共识机制决策

5.2 基于LangGraph的多Agent系统

使用LangGraph构建一个多Agent数据分析系统:

from langgraph.graph import Graph from typing import Dict, Any, List class MultiAgentDataSystem: def __init__(self, config: Config): self.config = config self.graph = Graph() # 定义Agent节点 self.graph.add_node("query_understanding", self.query_understanding_agent) self.graph.add_node("sql_generation", self.sql_generation_agent) self.graph.add_node("data_analysis", self.data_analysis_agent) self.graph.add_node("visualization", self.visualization_agent) self.graph.add_node("report_generation", self.report_generation_agent) # 定义工作流 self.graph.add_edge("query_understanding", "sql_generation") self.graph.add_edge("sql_generation", "data_analysis") self.graph.add_edge("data_analysis", "visualization") self.graph.add_edge("visualization", "report_generation") # 设置入口点 self.graph.set_entry_point("query_understanding") def query_understanding_agent(self, state: Dict[str, Any]) -> Dict[str, Any]: """查询理解Agent""" # 分析用户意图,确定分析类型 return state def sql_generation_agent(self, state: Dict[str, Any]) -> Dict[str, Any]: """SQL生成Agent""" # 生成优化的SQL查询 return state def data_analysis_agent(self, state: Dict[str, Any]) -> Dict[str, Any]: """数据分析Agent""" # 执行分析,生成洞察 return state def visualization_agent(self, state: Dict[str, Any]) -> Dict[str, Any]: """可视化Agent""" # 生成合适的图表 return state def report_generation_agent(self, state: Dict[str, Any]) -> Dict[str, Any]: """报告生成Agent""" # 整合所有结果生成最终报告 return state def process_query(self, query: str) -> Dict[str, Any]: """处理用户查询""" initial_state = {"query": query, "step_results": {}} final_state = self.graph.run(initial_state) return final_state

5.3 Agent间通信机制

Agent之间的通信需要定义清晰的数据格式和协议:

from pydantic import BaseModel from typing import Optional, List, Dict, Any from datetime import datetime class AgentMessage(BaseModel): """Agent间消息格式""" sender: str receiver: str message_type: str # query, result, error, control content: Dict[str, Any] timestamp: datetime message_id: str class AgentCommunication: def __init__(self): self.message_queue = [] self.agent_registry = {} def register_agent(self, agent_id: str, agent_instance): """注册Agent""" self.agent_registry[agent_id] = agent_instance def send_message(self, message: AgentMessage): """发送消息""" self.message_queue.append(message) # 异步处理消息 self._process_messages() def _process_messages(self): """处理消息队列""" while self.message_queue: message = self.message_queue.pop(0) if message.receiver in self.agent_registry: receiver = self.agent_registry[message.receiver] receiver.receive_message(message)

6. 生产环境部署与优化

6.1 性能优化策略

在生产环境中,AI Agent系统需要关注以下性能指标:

响应时间优化

  • 使用流式响应减少用户等待时间
  • 实现查询缓存避免重复计算
  • 优化提示词减少Token消耗
import redis import hashlib import json from datetime import timedelta class QueryCache: def __init__(self, redis_url: str): self.redis_client = redis.from_url(redis_url) def get_cache_key(self, query: str, params: Dict) -> str: """生成缓存键""" content = f"{query}{json.dumps(params, sort_keys=True)}" return hashlib.md5(content.encode()).hexdigest() def get(self, key: str) -> Optional[Dict]: """获取缓存""" cached = self.redis_client.get(key) return json.loads(cached) if cached else None def set(self, key: str, data: Dict, expire_hours: int = 24): """设置缓存""" self.redis_client.setex( key, timedelta(hours=expire_hours), json.dumps(data) )

6.2 安全与权限控制

企业级AI Agent系统需要严格的安全控制:

from typing import List, Set import jwt from datetime import datetime, timedelta class SecurityManager: def __init__(self, secret_key: str): self.secret_key = secret_key self.user_permissions = {} def authenticate_user(self, username: str, password: str) -> Optional[str]: """用户认证""" # 实现认证逻辑 if self._validate_credentials(username, password): token = jwt.encode({ 'username': username, 'exp': datetime.utcnow() + timedelta(hours=24) }, self.secret_key, algorithm='HS256') return token return None def authorize_action(self, token: str, action: str, resource: str) -> bool: """授权检查""" try: payload = jwt.decode(token, self.secret_key, algorithms=['HS256']) user_permissions = self.user_permissions.get(payload['username'], set()) return f"{action}:{resource}" in user_permissions except jwt.InvalidTokenError: return False def validate_sql_query(self, query: str) -> bool: """SQL查询安全验证""" dangerous_keywords = ['DROP', 'DELETE', 'UPDATE', 'INSERT', 'ALTER'] query_upper = query.upper() # 检查是否包含危险操作 for keyword in dangerous_keywords: if keyword in query_upper and 'WHERE' not in query_upper: return False return True

6.3 监控与可观测性

生产系统需要完善的监控体系:

import logging from prometheus_client import Counter, Histogram, Gauge import time class Monitoring: def __init__(self): # 定义监控指标 self.requests_total = Counter('agent_requests_total', 'Total requests') self.request_duration = Histogram('agent_request_duration', 'Request duration') self.active_agents = Gauge('active_agents', 'Number of active agents') # 配置日志 logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) self.logger = logging.getLogger('ai_agent') def track_request(self, agent_name: str): """跟踪请求""" def decorator(func): def wrapper(*args, **kwargs): start_time = time.time() self.requests_total.inc() self.active_agents.inc() try: result = func(*args, **kwargs) duration = time.time() - start_time self.request_duration.observe(duration) self.logger.info(f"Agent {agent_name} completed in {duration:.2f}s") return result except Exception as e: self.logger.error(f"Agent {agent_name} failed: {str(e)}") raise finally: self.active_agents.dec() return wrapper return decorator

7. 常见问题与解决方案

7.1 API调用问题

问题1:Token消耗过高

  • 优化提示词,减少不必要的上下文
  • 使用更高效的模型(如GPT-3.5 Turbo)
  • 实现结果缓存避免重复调用

问题2:API速率限制

  • 实现请求队列和重试机制
  • 使用多个API密钥轮询
  • 监控使用量并设置告警
import time from queue import Queue from threading import Lock class RateLimiter: def __init__(self, requests_per_minute: int): self.requests_per_minute = requests_per_minute self.request_times = [] self.lock = Lock() def acquire(self): """获取请求许可""" with self.lock: now = time.time() # 清理过期的请求记录 self.request_times = [t for t in self.request_times if now - t < 60] if len(self.request_times) >= self.requests_per_minute: # 计算需要等待的时间 oldest_time = self.request_times[0] wait_time = 60 - (now - oldest_time) if wait_time > 0: time.sleep(wait_time) now = time.time() self.request_times.append(now)

7.2 模型推理问题

问题1:回答不准确

  • 提供更详细的上下文信息
  • 使用思维链(Chain-of-Thought)提示
  • 实现自我验证和重试机制

问题2:上下文长度限制

  • 使用向量数据库进行信息检索
  • 实现摘要和压缩机制
  • 分层处理长文档

7.3 系统稳定性问题

问题1:Agent陷入循环

  • 设置最大迭代次数限制
  • 实现超时机制
  • 添加循环检测逻辑
class LoopDetector: def __init__(self, max_iterations: int = 10): self.max_iterations = max_iterations self.iteration_count = 0 self.previous_states = set() def check_loop(self, current_state: str) -> bool: """检查是否陷入循环""" self.iteration_count += 1 if self.iteration_count > self.max_iterations: return True state_hash = hash(current_state) if state_hash in self.previous_states: return True self.previous_states.add(state_hash) return False def reset(self): """重置检测器""" self.iteration_count = 0 self.previous_states.clear()

8. 最佳实践与工程建议

8.1 代码组织与架构

分层架构设计

ai-agent-system/ ├── presentation/ # 表示层 ├── application/ # 应用层(Agent逻辑) ├── domain/ # 领域层(业务模型) ├── infrastructure/ # 基础设施层(工具、数据库) └── shared/ # 共享组件

依赖注入:使用依赖注入管理组件依赖,提高可测试性:

from abc import ABC, abstractmethod from typing import List class LLMProvider(ABC): @abstractmethod def generate(self, prompt: str) -> str: pass class OpenAILLM(LLMProvider): def __init__(self, api_key: str): self.api_key = api_key def generate(self, prompt: str) -> str: # 实现OpenAI调用 pass class Agent: def __init__(self, llm: LLMProvider, tools: List[Tool]): self.llm = llm self.tools = tools

8.2 测试策略

单元测试:测试单个组件功能集成测试:测试多个组件协作端到端测试:测试完整业务流程

import pytest from unittest.mock import Mock, patch class TestAnalysisAgent: def test_sql_generation(self): """测试SQL生成功能""" # 准备测试数据 mock_llm = Mock() mock_llm.generate.return_value = "SELECT * FROM sales" agent = SQLAgent(mock_llm, Mock()) result = agent.generate_sql("测试查询", "sales") assert "SELECT" in result mock_llm.generate.assert_called_once() def test_query_execution(self): """测试查询执行""" mock_db = Mock() mock_db.execute_sql.return_value = pd.DataFrame({"col": [1, 2, 3]}) agent = AnalysisAgent(Mock(), mock_db) result = agent.analyze_data("测试", "sales") assert result["result_count"] == 3

8.3 部署与运维

容器化部署:使用Docker打包应用配置管理:环境相关的配置通过环境变量管理健康检查:实现健康检查端点监控系统状态

FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . ENV PYTHONPATH=/app ENV OPENAI_API_KEY=${OPENAI_API_KEY} EXPOSE 8000 CMD ["python", "main.py"]

通过本文的完整学习,你应该已经掌握了AI Agent开发的核心技术和工程实践。从基础概念到生产部署,从单Agent到多Agent系统,这些知识将帮助你在实际项目中构建可靠的AI智能体系统。

在实际开发过程中,记得始终关注系统可靠性、安全性和可维护性。AI技术发展迅速,但良好的软件工程实践是长期价值的保障。建议从小的项目开始,逐步积累经验,最终构建出能够真正解决业务问题的智能系统。