AI 工具开发实战(10):开发一个 AI Agent 自动化工作流——让多个 Agent 协作完成复杂任务
系列最后一篇,做一个最有野心的工具——AI Agent 工作流引擎。
不是写一个 Agent,而是做一个框架,让你可以定义多个 Agent 角色,让它们协作完成复杂任务。
框架做什么
定义一个任务:"调研 AI 编程工具市场,输出一份分析报告"
↓
1. 研究员 Agent:搜索信息,收集数据
2. 分析师 Agent:分析数据,提炼观点
3. 写手 Agent:整理成报告
↓
最终输出:一份结构化的分析报告
项目结构
agentflow/
├── agentflow.py # CLI + 工作流引擎
├── agents.py # Agent 定义
└── requirements.txt
核心实现
# agentflow.py
from openai import OpenAI
import os, json, click
from dotenv import load_dotenv
load_dotenv()
client = OpenAI(
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="https://api.deepseek.com/v1",
)
class Agent:
"""工作流中的单个 Agent。"""
def __init__(self, name, role, instruction):
self.name = name
self.role = role
self.instruction = instruction
def run(self, context, task):
prompt = f"""## 你的角色
{self.role}
## 任务
{self.instruction.format(task=task, context=context)}
## 当前上下文
{context}
请完成你的任务,输出结果。"""
resp = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": prompt}],
temperature=0.5 if "写手" in self.name else 0.3,
max_tokens=2048,
)
return resp.choices[0].message.content
class AgentWorkflow:
"""Agent 工作流引擎。"""
def __init__(self):
self.agents = []
self.context = ""
def add_agent(self, agent):
self.agents.append(agent)
def run(self, task):
results = []
for i, agent in enumerate(self.agents):
print(f"🤖 [{i+1}/{len(self.agents)}] {agent.name} 工作中...")
result = agent.run(self.context, task)
self.context += f"\n\n## {agent.name} 输出\n{result}"
results.append({"agent": agent.name, "result": result})
return results
# 预定义的工作流
def create_research_workflow():
wf = AgentWorkflow()
wf.add_agent(Agent("研究员", "信息收集专家",
"搜索并收集关于「{task}」的关键信息、数据、趋势。"
"输出格式:按要点列出 5-10 个关键发现。"))
wf.add_agent(Agent("分析师", "数据分析专家",
"基于研究员的发现,分析「{task}」的核心趋势和洞察。"
"上下文:{context}"
"输出格式:3-5 个核心洞察,每个包含趋势分析和影响评估。"))
wf.add_agent(Agent("写手", "技术写作专家",
"基于研究员和分析师的工作,撰写一份关于「{task}」的综合报告。"
"上下文:{context}"
"输出格式:Markdown 结构,包含:概述、关键发现、趋势分析、建议。"))
return wf
def create_code_review_workflow():
wf = AgentWorkflow()
wf.add_agent(Agent("安全审查员", "安全专家",
"审查代码安全问题:注入、XSS、密钥泄露。"
"代码:{task}\n输出有问题的行号和修复建议。"))
wf.add_agent(Agent("性能审查员", "性能优化专家",
"审查性能问题:N+1查询、内存泄漏、低效算法。"
"上下文:{context}\n代码:{task}\n输出具体问题和优化方案。"))
wf.add_agent(Agent("代码规范审查员", "代码规范专家",
"审查代码规范:命名、注释、结构。"
"上下文:{context}\n代码:{task}\n输出不合规的代码和建议。"))
return wf
@click.group()
def cli(): pass
@cli.command()
@click.argument("task")
def research(task):
"""多 Agent 协作研究。"""
wf = create_research_workflow()
results = wf.run(task)
for r in results:
print(f"\n{'='*60}")
print(f"📋 {r['agent']}")
print(f"{'='*60}")
print(r['result'])
@cli.command()
@click.argument("file", type=click.Path(exists=True))
def review(file):
"""多 Agent 代码审查。"""
with open(file, encoding="utf-8") as f:
code = f.read()
wf = create_code_review_workflow()
results = wf.run(code)
for r in results:
print(f"\n{'='*60}")
print(f"📋 {r['agent']}")
print(f"{'='*60}")
print(r['result'])
if __name__ == "__main__":
cli()
使用方式
# 多 Agent 研究模式
python agentflow.py research "2026年AI编程工具市场"
# 🤖 [1/3] 研究员 工作中...
# 🤖 [2/3] 分析师 工作中...
# 🤖 [3/3] 写手 工作中...
# 输出完整分析报告
# 多 Agent 代码审查
python agentflow.py review src/api/auth.py
# 🤖 [1/3] 安全审查员 工作中...
# 🤖 [2/3] 性能审查员 工作中...
# 🤖 [3/3] 代码规范审查员 工作中...
# 输出三维度审查报告
自定义工作流
# 创建自己的 Agent 协作工作流
wf = AgentWorkflow()
wf.add_agent(Agent("翻译员", "...", "..."))
wf.add_agent(Agent("润色员", "...", "..."))
wf.add_agent(Agent("校对员", "...", "..."))
wf.run("翻译并发布这篇技术文章")
总结
Agent 工作流引擎的核心就两层:
1. Agent 定义:角色 + 指令模板
2. 工作流编排:顺序执行,上下文传递
10 篇文章,10 个工具,从翻译到代码审查再到多 Agent 协作——这个系列的目标就是让每个开发者都能用 AI 做出实用工具。
本文是 《AI 开发者工具链实战》 系列的第 10 篇(完结篇)🎉
全系列 10 篇已完结
本文由 Zyentor(智元界)原创发布