AI Agent 垂直应用场景
不同领域对 Agent 有不同的需求和特点。
通过领域定制,Agent 能够提供更专业的服务。
代码 Agent
代码 Agent 是当前最成功的 Agent 应用领域之一。
能够理解代码库、编写新代码、调试问题。
核心能力
代码补全:根据上下文预测下一段代码。
代码生成:根据自然语言描述生成代码。
代码审查:发现代码中的问题和改进点。
Bug 定位:分析错误信息,定位问题根源。
代码重构:提出并执行代码优化建议。
代表系统
| 系统 | 开发公司 | 特点 |
|---|---|---|
| GitHub Copilot | GitHub/OpenAI | 代码补全为主,实时建议 |
| Claude Code | Anthropic | 命令行助手,深度代码理解 |
| Devin | Cognition | 自主编程,端到端任务执行 |
| Cursor | Cursor | AI 代码编辑器,深度 IDE 集成 |
代码实现示例
Text2SQL Agent 实现
"""
Text2SQL Agent
将自然语言转换为 SQL 查询
"""
def __init__(self, llm, schema):
self.llm = llm
# 数据库 Schema 信息
self.schema = schema
def convert(self, question):
"""
将自然语言问题转换为 SQL
:param question: 自然语言问题
:return: SQL 查询语句
"""
prompt = f"""
你是一个 SQL 专家。
数据库 Schema:
{self.schema}
规则:
1. 只生成 SELECT 查询(不支持 INSERT/UPDATE/DELETE)
2. 使用合理的表别名
3. 添加必要的 JOIN 条件
4. 使用清晰的列别名
问题:{question}
请生成对应的 SQL 查询。
"""
sql = self.llm.generate(prompt)
# 安全检查
return self.sanitize(sql)
def sanitize(self, sql):
"""
SQL 安全检查
确保不包含危险操作
"""
# 转小写检查
sql_lower = sql.lower().strip()
# 检查是否只包含 SELECT
forbidden_keywords = [
"insert", "update", "delete", "drop",
"create", "alter", "truncate", "exec",
"execute", "grant", "revoke"
]
for keyword in forbidden_keywords:
if keyword in sql_lower:
raise ValueError(f"禁止的关键字: {keyword}")
return sql
def execute(self, question, db_connection):
"""
执行 Text2SQL 查询
"""
sql = self.convert(question)
cursor = db_connection.cursor()
cursor.execute(sql)
results = cursor.fetchall()
columns = [desc[0] for desc in cursor.description]
return {"columns": columns, "rows": results}
数据分析 Agent
数据分析 Agent 能够理解数据需求,执行查询,生成分析报告。
让非技术人员也能进行复杂的数据分析。
核心能力
数据理解:理解数据库结构和数据含义。
查询生成:Text2SQL,将自然语言转为查询。
可视化:生成图表建议和配置。
报告生成:分析结果,生成自然语言报告。
代码实现
数据分析 Agent 实现
"""
数据分析 Agent
理解数据需求,执行分析,生成报告
"""
def __init__(self, llm, db_connection, chart_generator):
self.llm = llm
self.db = db_connection
self.chart_generator = chart_generator
def analyze(self, request):
"""
处理数据分析请求
"""
# 第一步:理解分析需求
intent = self.parse_intent(request)
# 第二步:生成查询
query = self.generate_query(intent)
# 第三步:执行查询
data = self.execute_query(query)
# 第四步:分析数据
analysis = self.perform_analysis(data, intent)
# 第五步:生成可视化建议
charts = self.suggest_charts(analysis)
# 第六步:生成报告
report = self.generate_report(analysis, charts)
return {
"intent": intent,
"query": query,
"data": data,
"analysis": analysis,
"charts": charts,
"report": report
}
def parse_intent(self, request):
"""解析用户意图"""
prompt = f"""
分析以下数据请求,提取关键信息:
请求:{request}
请提取:
1. 分析目标(比较、趋势、分布等)
2. 涉及的表和字段
3. 时间范围(如果有)
4. 筛选条件(如果有)
"""
return self.llm.generate(prompt)
def generate_query(self, intent):
"""生成 SQL 查询"""
prompt = f"""
基于以下意图生成 SQL 查询:
{intent}
数据库 Schema:
{self.get_schema()}
"""
return self.llm.generate(prompt)
def execute_query(self, query):
"""执行查询"""
cursor = self.db.cursor()
cursor.execute(query)
columns = [desc[0] for desc in cursor.description]
rows = cursor.fetchall()
return {"columns": columns, "rows": rows}
def perform_analysis(self, data, intent):
"""执行数据分析"""
# 简化实现
import statistics
rows = data["rows"]
columns = data["columns"]
analysis = {
"row_count": len(rows),
"summary": {}
}
# 对数值列计算统计信息
for i, col in enumerate(columns):
if self.is_numeric(rows, i):
values = [row[i] for row in rows if row[i] is not None]
if values:
analysis["summary"][col] = {
"min": min(values),
"max": max(values),
"avg": statistics.mean(values),
"median": statistics.median(values)
}
return analysis
def suggest_charts(self, analysis):
"""推荐可视化图表"""
suggestions = []
# 根据分析类型推荐图表
if "trend" in str(analysis).lower():
suggestions.append({
"type": "line",
"description": "折线图,适合展示趋势变化"
})
if "comparison" in str(analysis).lower():
suggestions.append({
"type": "bar",
"description": "柱状图,适合对比不同类别"
})
suggestions.append({
"type": "table",
"description": "数据表格,展示详细数据"
})
return suggestions
def generate_report(self, analysis, charts):
"""生成分析报告"""
prompt = f"""
基于以下分析结果,生成自然语言报告:
分析结果:
{analysis}
推荐图表:
{charts}
请生成一份清晰的分析报告。
"""
return self.llm.generate(prompt)
客服 Agent
客服 Agent 需要处理多轮对话,理解用户意图,提供准确的回复。
是 AI 落地最广泛的场景之一。
核心能力
意图识别:理解用户想做什么。
槽位填充:提取关键信息(时间、地点等)。
对话状态跟踪:管理多轮对话上下文。
回复生成:生成自然、专业的回复。
代码实现
客服 Agent 实现
"""
客服 Agent
处理用户咨询,提供服务支持
"""
def __init__(self, llm, knowledge_base, dialogue_manager):
self.llm = llm
# 知识库
self.knowledge_base = knowledge_base
# 对话管理器
self.dialogue_manager = dialogue_manager
def handle(self, user_input, session_id):
"""
处理用户消息
"""
# 获取对话历史
history = self.dialogue_manager.get_history(session_id)
# 识别用户意图
intent = self.recognize_intent(user_input, history)
# 根据意图处理
if intent.type == "greeting":
response = self.handle_greeting()
elif intent.type == "inquiry":
response = self.handle_inquiry(intent)
elif intent.type == "complaint":
response = self.handle_complaint(intent)
elif intent.type == "order_status":
response = self.handle_order_status(intent)
elif intent.type == "refund":
response = self.handle_refund(intent)
else:
response = self.handle_general(user_input)
# 更新对话历史
self.dialogue_manager.add_message(
session_id,
{"role": "user", "content": user_input}
)
self.dialogue_manager.add_message(
session_id,
{"role": "assistant", "content": response}
)
return response
def recognize_intent(self, text, history):
"""识别用户意图"""
prompt = f"""
分析用户消息,识别意图类型。
当前消息:{text}
对话历史:
{history}
意图类型:
- greeting: 打招呼
- inquiry: 咨询问题
- complaint: 投诉
- order_status: 查订单
- refund: 退款
- goodbye: 道别
请输出意图类型和置信度。
"""
result = self.llm.generate(prompt)
return Intent.parse(result)
def handle_inquiry(self, intent):
"""处理咨询"""
# 从知识库检索相关内容
relevant_docs = self.knowledge_base.search(intent.query)
if relevant_docs:
# 有相关文档,基于文档回答
prompt = f"""
基于以下文档回答用户问题。
文档:
{relevant_docs}
问题:{intent.query}
"""
return self.llm.generate(prompt)
else:
# 没有相关文档,转人工或记录
return "这个问题我需要进一步了解,请稍等我来为您查询。"
class Intent:
"""用户意图"""
def __init__(self, type, query, confidence):
self.type = type
self.query = query
self.confidence = confidence
@classmethod
def parse(cls, text):
"""解析意图文本"""
# 简化实现
return cls(type="inquiry", query=text, confidence=0.9)
调研 Agent
调研 Agent 能够自主进行深入调研,搜集和综合信息。
模拟人类研究员的工作方式。
核心能力
搜索规划:制定信息搜集计划。
多源搜集:从多个来源收集信息。
信息验证:交叉验证信息准确性。
报告生成:综合信息,生成结构化报告。
代码实现
调研 Agent 实现
"""
调研 Agent
自主进行深度调研,生成报告
"""
def __init__(self, search_tools, llm):
# 搜索工具列表
self.search_tools = search_tools
self.llm = llm
def research(self, topic, depth=3):
"""
执行调研任务
:param topic: 调研主题
:param depth: 调研深度(搜索轮数)
"""
# 第一步:制定调研计划
plan = self.create_research_plan(topic, depth)
# 第二步:执行多轮搜索
findings = []
for phase in plan.phases:
# 并行搜索多个方向
phase_results = self.search_phase(phase)
findings.extend(phase_results)
# 综合当前发现
synthesis = self.synthesize(findings)
findings.append({
"type": "synthesis",
"content": synthesis,
"phase": phase.number
})
# 第三步:生成最终报告
report = self.generate_report(findings)
return {
"topic": topic,
"plan": plan,
"findings": findings,
"report": report
}
def create_research_plan(self, topic, depth):
"""创建调研计划"""
prompt = f"""
为以下调研主题制定详细计划:
主题:{topic}
深度:{depth}
请规划:
1. 需要调研的关键方向(3-5 个)
2. 每个方向需要回答的核心问题
3. 信息来源建议
"""
return ResearchPlan.parse(self.llm.generate(prompt))
def search_phase(self, phase):
"""执行单个搜索阶段"""
results = []
for query in phase.queries:
# 使用搜索工具搜索
for tool in self.search_tools:
search_results = tool.search(query)
results.extend(search_results)
return results
def synthesize(self, findings):
"""综合发现"""
prompt = f"""
综合以下研究发现,提取关键信息:
发现列表:
{findings}
请提取:
1. 主要结论
2. 支持结论的证据
3. 存在的争议或不确定性
4. 需要进一步调研的问题
"""
return self.llm.generate(prompt)
def generate_report(self, findings):
"""生成最终报告"""
prompt = f"""
基于以下研究发现,生成结构化报告:
研究发现:
{findings}
报告要求:
1. 执行摘要
2. 背景介绍
3. 主要发现(分主题)
4. 结论和建议
5. 参考来源
请生成完整报告。
"""
return self.llm.generate(prompt)
class ResearchPlan:
"""调研计划"""
@classmethod
def parse(cls, text):
"""解析计划文本"""
# 简化实现
return cls(phases=[
ResearchPhase(number=1, queries=["相关主题1"], goals=["了解基本概念"]),
ResearchPhase(number=2, queries=["相关主题2"], goals=["深入分析"]),
])
def __init__(self, phases):
self.phases = phases
class ResearchPhase:
"""调研阶段"""
def __init__(self, number, queries, goals):
self.number = number
self.queries = queries
self.goals = goals
其他垂直应用
RPA + Agent
RPA(机器人流程自动化)与 Agent 的结合。
能够实现更复杂的业务流程自动化。
Agent 赋予 RPA 智能决策能力。
游戏 NPC Agent
游戏中的 NPC(非玩家角色)Agent。
能够进行动态对话、情节生成、角色扮演。
创造更真实的游戏世界体验。
科研 Agent
AI for Science 正在改变科学研究。
文献综述:自动阅读和总结大量论文。
实验设计:提出实验方案和假设。
数据分析:处理实验数据,发现规律。
论文写作:辅助撰写科研论文。
章节小结
本章节介绍了 Agent 在各个垂直领域的应用。
代码 Agent 辅助编程,提高开发效率。
数据分析 Agent 让非技术人员也能分析数据。
客服 Agent 提供智能客户服务。
调研 Agent 自主进行深度调研。
还有 RPA+Agent、游戏 NPC、科研 Agent 等更多场景。
垂直领域的 Agent 需要结合领域知识进行定制。
选择合适的场景和切入点,是成功落地的关键。
