>
AI Agent(人工智能智能体)是一种能够自主理解目标、规划路径、执行任务并反思迭代的AI系统。与简单的问答不同,Agent可以像人一样思考和行动:拿到一个任务,自己拆解步骤、调用工具、遇到问题自己调整。
用一句话总结:Agent = 思考链(Chain of Thought)+ 工具调用(Tool Use)+ 记忆(Memory)
Agent 能接收多种形式的输入:文字、图像、音频、文件、API返回的数据。它"看到"这些信息后,理解任务目标。
拿到任务后,Agent 会将大任务拆解成小步骤。这叫思维链(Chain of Thought)。
Agent 不是一个人在战斗。它可以调用各种工具:搜索引擎、数据库、代码执行器、第三方API。相当于给Agent装上了"手"和"脚"。
Agent 具备短期记忆(当前对话上下文)和长期记忆(知识库、向量数据库)。让它能够跨任务保持一致性。
执行完一个步骤后,Agent 会评估结果:如果没达到预期,自己调整策略重来。这是最接近人类思维的部分。
AutoGPT 是最早被广泛认知的 Agent 开源项目。你可以给它一个目标,它会自动拆解任务、调用工具、循环执行,直到完成目标。
# AutoGPT 安装
git clone https://github.com/Significant-Gravitas/AutoGPT.git
cd AutoGPT
pip install -r requirements.txt
python -m autogpt --ai-name "MyAgent" --ai-role "你的AI助手"
CrewAI 是目前最火的多Agent框架,专注于"多个Agent组队工作"。每个Agent有固定的角色和职责,通过协作完成任务。
# CrewAI 安装
pip install crewai crewai-tools
# 简单示例
from crewai import Agent, Task, Crew
researcher = Agent(
role="高级研究员",
goal="获取最新的AI行业动态",
backstory="你是一名资深科技记者,擅长挖掘深度信息",
verbose=True
)
writer = Agent(
role="内容编辑",
goal="将研究内容整理成通俗易懂的报告",
backstory="你是一名专业内容编辑,文章清晰有条理",
verbose=True
)
task1 = Task(description="调研2024年AI Agent领域的重要进展", agent=researcher)
task2 = Task(description="将研究报告写成一篇2000字的文章", agent=writer)
crew = Crew(agents=[researcher, writer], tasks=[task1, task2], process="sequential")
result = crew.kickoff()
print(result)
LangGraph 是 LangChain 团队出品,专注于构建有状态、多步骤的Agent工作流。通过图的形式定义节点和边,直观可控。
国内最流行的Agent搭建平台,拖拽即可完成Agent配置,无需写代码。
用户请求
↓
[API 网关] → 鉴权、限流
↓
[Agent 调度层]
├─ 意图识别
├─ 任务拆解
└─ 路由分发
↓
[工具层]
├─ 搜索工具
├─ 数据库工具
├─ 代码执行器
└─ 第三方API
↓
[知识库层]
├─ 向量数据库(语义检索)
└─ RAG Pipeline
↓
[大模型层]
├─ 主模型(GPT-4 / Claude 3)
└─ 本地模型(可选)
↓
[记忆层]
├─ 短期记忆(对话上下文)
└─ 长期记忆(知识图谱)
↓
[输出层]
├─ 内容生成
└─ 格式化 / 工具调用结果
很多Agent效果差,不是因为模型不够强,而是工具定义太粗糙。一个好的工具应该有明确的输入输出、清晰的边界。
当Agent反复尝试后仍然失败,应该有机制让它主动放弃并上报,而不是无限循环浪费Token。
# 设置最大尝试次数
max_retries = 3
current_attempts = 0
while current_attempts < max_retries:
result = agent.execute_step()
if result.success:
break
current_attempts += 1
# 加入反思,调整策略
agent.reflect()
else:
# 超过最大尝试,上报人工处理
escalate_to_human()
每次工具调用都要记录:调用时间、输入参数、输出结果、耗时。这既是Debug的需要,也是审计合规的要求。
做一个公司产品FAQ客服Agent,能回答产品功能、定价、使用问题,超出范围的问题转人工。
# 工具1:搜索FAQ知识库
def search_faq(question: str) -> str:
"""
搜索FAQ知识库
输入:用户问题
输出:最相关的FAQ答案
"""
results = faq_vector_db.similarity_search(question, k=3)
return "\n".join([r.content for r in results])
# 工具2:创建工单转人工
def create_ticket(question: str, user_email: str) -> str:
"""
创建人工客服工单
输入:用户问题、邮箱
输出:工单ID
"""
ticket_id = ticket_system.create(
title=question,
email=user_email,
priority="normal"
)
return f"工单已创建,编号:{ticket_id},客服将在2小时内联系您"
from crewai import Agent
faq_agent = Agent(
role="产品客服专员",
goal="准确回答用户关于产品的问题,超出范围的及时转人工",
backstory="""
你是一家科技公司的客服专员,对公司产品有深入了解。
你服务态度好,回答专业简洁。
当用户问题涉及:价格谈判、技术故障投诉、定制需求时,
必须转人工处理。
""",
tools=[search_faq, create_ticket],
verbose=True
)
result = faq_agent.run("你们产品的价格是多少?")
# → 返回定价信息
result = faq_agent.run("我要定制一个功能,能便宜点吗?")
# → 检测到价格谈判场景,触发 create_ticket 转人工
Agent 反复执行同一个步骤无法结束。解决:设置max_steps限制,加入步骤计数器,每次迭代记录日志。
大模型有上下文长度限制,工具返回太长会被截断。解决:对工具输出做摘要/分页,只传递最相关的内容给模型。
同一个问题,每次回答不一样。解决:加强System Prompt,用few-shot examples约束行为,增加输出schema强校验。
Agent 迭代次数多,Token消耗惊人。解决:使用更快的本地小模型做路由判断(意图分类),减少大模型调用次数。
AI Agent 是大模型落地企业场景的终极形态。它让AI从"你问我答"的工具,变成了"你说目标,我来完成"的助手。
入门建议:
Agent 时代已经到来。越早掌握,越早受益。
将AI Agent从demo走向生产,需要关注可靠性、可观测性、安全性三个维度。
# 容错机制示例:重试+降级策略
def agent_execute_with_fallback(agent, task, max_retry=3):
for attempt in range(max_retry):
try:
result = agent.execute(task)
return {"success": True, "result": result}
except ToolExecutionError as e:
logging.warning(f"尝试 {attempt+1} 失败: {e}")
if attempt == max_retry - 1:
# 降级到简单策略
return agent.fallback_strategy(task)
return {"success": False, "error": "所有重试失败"}
# LangSmith集成示例
from langchain.callbacks import LangChainTracer
tracer = LangChainTracer(project_name="ai-agent-production")
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.CONVERSATION_REACT_DESCRIPTION,
callbacks=[tracer]
)
# 执行会被自动追踪
result = agent.run("帮我分析这份销售数据")
# Prompt注入检测示例
def detect_prompt_injection(user_input: str) -> bool:
suspicious_patterns = [
r"忽略之前的指令",
r"你是一个.*助手",
r"请假装你是",
r"system.*instruction",
]
for pattern in suspicious_patterns:
if re.search(pattern, user_input, re.IGNORECASE):
return True
return False
# 在Agent执行前检查
if detect_prompt_injection(user_input):
raise SecurityError("检测到可疑输入,已拒绝执行")
Agent在没有终止条件时会重复调用工具。解决方案:设置max_iterations(如10次),超时后强制终止。
长对话会导致上下文堆积,模型变慢甚至报错。解决方案:定期summary+压缩历史消息。
不同工具返回格式不一致导致解析失败。解决方案:统一工具输出Schema,严格校验。
部署前检查项:
[ ] Agent核心流程单元测试覆盖 >80%
[ ] 容错机制已实现(重试/降级/超时)
[ ] 日志系统完整(执行轨迹/错误记录)
[ ] 监控告警已配置(执行成功率/响应时间)
[ ] Prompt注入检测已实现
[ ] 工具权限已最小化
[ ] 上下文窗口有上限保护
企业级AI Agent需要处理复杂业务逻辑,单一Agent往往不够用。以下是几种经过验证的架构模式。
最简单也最常用的模式。一个Agent配备多个工具,Agent自己决定调用哪个工具。适合中等复杂度任务(10个以内工具)。
from langchain.agents import initialize_agent, AgentType
tools = [search_tool, calculator_tool, db_tool, email_tool]
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.CONVERSATION_REACT_DESCRIPTION,
verbose=True
)
# 直接处理复杂任务
result = agent.run("帮我查一下Q1销售额,如果增长超过20%就发邮件给财务总监")
一个中央Agent根据任务类型分发到专门的子Agent。适合多业务线、多场景的企业应用。
# 中央路由Agent示例
class AgentRouter:
def __init__(self):
self.agents = {
"sales": SalesAgent(),
"support": SupportAgent(),
"hr": HRAgent(),
"tech": TechAgent(),
}
def route(self, message: str) -> str:
# 用LLM判断意图
intent = self.classify_intent(message)
agent = self.agents.get(intent, self.agents["default"])
return agent.process(message)
def classify_intent(self, message: str) -> str:
# 调用LLM进行意图分类
prompt = f"判断以下用户消息属于哪个业务类型:sales/support/hr/tech
消息:{message}"
return llm.invoke(prompt).content.strip()
router = AgentRouter()
result = router.route("我想查下本月的销售数据")
多个Agent分工协作完成复杂任务。适合需要多种能力组合的复杂场景。
# 多Agent协作示例
class ResearchTeam:
def __init__(self):
self.researcher = ResearcherAgent() # 搜索整理信息
self.analyst = AnalystAgent() # 分析数据
self.writer = WriterAgent() # 生成报告
def research_report(self, topic: str):
# Step1: 研究员搜集资料
data = self.researcher.search(topic)
# Step2: 分析师处理数据
analysis = self.analyst.analyze(data)
# Step3: 写手生成报告
report = self.writer.write(analysis)
return report
team = ResearchTeam()
report = team.research_report("AI在金融行业的应用趋势")
AI Agent技术正在快速演进。短期看,工具调用能力会越来越强,Agent能做的事情会越来越多。中期看,多Agent协作会成为主流,单Agent难以处理的复杂任务会通过Agent团队解决。长期看,Agent可能具备自我学习和自我改进能力,形成真正的AI原生应用形态。