当前位置: 首页 > news >正文

AI 工具开发实战(10):开发一个 AI Agent 自动化工作流——让多个 Agent 协作完成复杂任务(完结篇)

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.pyfromopenaiimportOpenAIimportos,json,clickfromdotenvimportload_dotenv load_dotenv()client=OpenAI(api_key=os.getenv("DEEPSEEK_API_KEY"),base_url="https://api.deepseek.com/v1",)classAgent:"""工作流中的单个 Agent。"""def__init__(self,name,role,instruction):self.name=name self.role=role self.instruction=instructiondefrun(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.5if"写手"inself.nameelse0.3,max_tokens=2048,)returnresp.choices[0].message.contentclassAgentWorkflow:"""Agent 工作流引擎。"""def__init__(self):self.agents=[]self.context=""defadd_agent(self,agent):self.agents.append(agent)defrun(self,task):results=[]fori,agentinenumerate(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})returnresults# 预定义的工作流defcreate_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 结构,包含:概述、关键发现、趋势分析、建议。"))returnwfdefcreate_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输出不合规的代码和建议。"))returnwf@click.group()defcli():pass@cli.command()@click.argument("task")defresearch(task):"""多 Agent 协作研究。"""wf=create_research_workflow()results=wf.run(task)forrinresults:print(f"\n{'='*60}")print(f"📋{r['agent']}")print(f"{'='*60}")print(r['result'])@cli.command()@click.argument("file",type=click.Path(exists=True))defreview(file):"""多 Agent 代码审查。"""withopen(file,encoding="utf-8")asf:code=f.read()wf=create_code_review_workflow()results=wf.run(code)forrinresults: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 篇已完结

http://www.cnnetsun.cn/news/3346607.html

相关文章:

  • 16K上下文长度在DeepSeek-R1-Distill-Qwen-1.5B中的应用:处理长文本的终极方案 [特殊字符]
  • 【JavaScript】键盘事件深度解析:从基础监听、组合键到输入法处理
  • 科研基金立项结果公告采集:从目录页到项目制数据入库的 Python 爬虫实战
  • Agent 高可用设计:多实例部署下的状态同步和故障转移策略
  • keras-resnet迁移学习实战:利用预训练模型解决实际问题
  • Wand-Enhancer终极指南:免费解锁WeMod专业版的高效解决方案
  • 【更新至2025年】2000-2025年上市公司年报文本数据(pdf+txt格式)
  • DAKeyboardControl实战指南:3种方法轻松处理键盘遮挡问题
  • DIFY-09:多工具协作——搜索 + 总结
  • 父母做好自身榜样,言行潜移默化影响孩童
  • GEO优化源码二次开发:企业私有化部署功能改造实战方案
  • TVA具身智能的概念、架构与应用(8)
  • 5分钟快速入门Archipel:从安装到创建第一个XMPP管理的虚拟机
  • TVA具身智能的概念、架构与应用(10)
  • 【前端+跨域】跨域问题全面解析与解决方案指南
  • Windows Defender彻底卸载工具:释放系统性能的终极解决方案
  • 我与IT三十年:1998,蝴蝶落到表单上
  • logos-in-pure-css Apple Logo实现分析:复杂形状的CSS绘制策略
  • ArkTS 搜索旧请求覆盖新结果怎么办:中式美食输入框怎么防止慢请求回写
  • 3 种混合波束成形方案对比:传统优化 vs 深度学习 vs 深度强化学习
  • Realtek RTL8821CU Linux驱动终极指南:三步解决无线网卡兼容性问题
  • 革命性AI空气动力学工具XMeshGraphNet DrivAerML:NVIDIA如何用图神经网络加速汽车设计
  • Lumino部署与打包:从开发到生产的完整工作流程
  • JavaString知识梳理
  • C# Task WaitAll、WaitAny、WhenAll、WhenAny
  • nabla.nvim插件开发指南:如何为项目贡献新的数学符号支持
  • NLP核心技术实践之(四)命名实体识别与关系抽取的端到端应用
  • 革命性AI视频生成工具AnyFlow-FAR-Wan2.1-1.3B-Diffusers:NVIDIA推出的任意步数视频扩散模型完全指南
  • SGM 代价聚合:4路径与8路径性能对比,P1/P2惩罚项调参实战
  • 让qoder操作doc的步骤