news 2026/3/1 3:18:55

组合多个工具链

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
组合多个工具链

day38:组合多个工具链

组合多个工具链

定义:

组合多个工具链 = 让 Agent 能在一次任务中,按需调用多个 Tool / Chain,并把中间结果作为上下文继续使用

解决的问题是: 真实任务≠单一工具可以完成

示例:

  • 用户问:「根据这篇小说,总结人物关系,并判断谁是悲剧核心人物」

  • 实际需要:

    • 文本解析 / 检索(RAG / GraphRAG)

    • 人物关系分析(图谱/规则)

    • 推理判断(LLM)

    • 结构化输出

这就必须 多工具协作。


核心概念拆解

Tool ≠ Chain ≠ Agent(你必须分清)

概念本质举例
Tool一个能力函数搜索、计算、查天气
Chain固定流程的工具组合Prompt → LLM → Parser
Agent动态决策调用工具先搜再算 or 先算再搜

组合多个工具链:Agent 在执行过程中,调用多个 Chain / Tool,并把结果串起来


工具链组合的 3 种典型模式

  1. 串行(Sequential)
输入 → Tool A → Tool B → Tool C → 输出

示例:

  • 文本 → 实体抽取 → 关系整理 → 总结

特点:

  • 简单

  • 可预测

  • 适合确定流程


  1. 条件分支(Router)
→ Tool A 输入 → 判断 → Tool B

示例:

如果是「数学问题」→ Calculator 如果是「事实问题」→ Search 如果是「总结」→ RAG
  1. Agent 动态组合
Agent ├─ decide → Tool A ├─ decide → Tool B ├─ decide → Tool C └─ synthesize answer

特点:

  • 非固定顺序

  • 可多轮调用

  • 可失败重试


Demo

fromlanggraph.prebuiltimportcreate_react_agentfromlangchain_core.toolsimportToolfromlangchain_openaiimportChatOpenAI llm=ChatOpenAI(model="qwen-plus-latest",api_key="sk-YOUR-key",base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",temperature=0.7)defsummarize_text(text:str)->str:prompt=f"请用不超过5句话总结以下文本:\n{text}"returnllm.invoke(prompt).content summary_tool=Tool(name="SummarizeText",func=summarize_text,description="用于对长文本进行摘要。")# 人物关系抽取defextract_relations(text:str)->str:prompt=f""" 请从以下文本中抽取人物关系,用列表输出: 格式:人物A - 关系 - 人物B 文本:{text}"""returnllm.invoke(prompt).content relation_tool=Tool(name="ExtractRelations",func=extract_relations,description="从文本中抽取人物关系")# 关系分析defanalyze_relations(relations:str)->str:prompt=f""" 根据以下人物关系,判断: 1. 谁是核心人物? 2. 是否存在悲剧冲突? 关系:{relations}"""returnllm.invoke(prompt).content analysis_tool=Tool(name="AnalyzeRelations",func=analyze_relations,description="分析人物关系并给出判断")tools=[Tool(name="SummarizeText",func=summarize_text,description="用于对长文本进行摘要。"),Tool(name="ExtractRelations",func=extract_relations,description="从文本中抽取人物关系"),Tool(name="AnalyzeRelations",func=analyze_relations,description="分析人物关系并给出判断")]agent=create_react_agent(llm,tools)defmain():text=""" 张三深爱李四,但李四被迫嫁给王五。 王五性格暴躁,经常伤害李四。 最终张三为救李四而死。 """# 将文本作为输入传递给代理result=agent.invoke({"messages":[("user",f"请分析这段故事的人物关系,并判断悲剧核心人物是谁。故事内容:{text}")]})print(result["messages"][-1].content)if__name__=="__main__":main()# 根据分析,悲剧核心人物是**李四**。## 理由如下:# - 所有关键关系均以她为枢纽:张三的深爱与牺牲、王五的强迫婚姻与暴力伤害,皆围绕她展开;# - 她身陷多重结构性压迫——情感自主权被剥夺(被迫嫁)、人身安全受威胁(被伤害)、成为他人牺牲的动因(张三为其而死),却无主动解局之力;# - 张三之死虽具强烈悲壮感,但其行为逻辑完全由对李四的爱与拯救欲驱动;王五的暴行也以李四为直接对象。因此,李四是悲剧能量的汇聚点与承受体,是命运不可逆性的最深刻体现。## ✅ 结论明确:**李四为本故事的悲剧核心人物。**
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/11 22:12:38

PaddlePaddle镜像在电商图像搜索中的实际应用效果

PaddlePaddle镜像在电商图像搜索中的实际应用效果 如今,用户打开购物App,随手拍下一件街边潮牌外套的照片,几秒内就能找到同款甚至更低价的相似商品——这种“所见即所得”的体验背后,是一整套复杂的视觉智能系统在支撑。而在这类…

作者头像 李华
网站建设 2026/2/27 0:23:08

JeecgBoot低代码平台实战指南:从零开始构建企业级应用系统

JeecgBoot低代码平台实战指南:从零开始构建企业级应用系统 【免费下载链接】jeecg-boot 项目地址: https://gitcode.com/gh_mirrors/jee/jeecg-boot 想要在短时间内开发出功能完善的企业级应用系统吗?JeecgBoot低代码开发平台正是您需要的解决方…

作者头像 李华
网站建设 2026/2/28 3:02:15

3分钟掌握QRCoder:C开发者的QR码生成终极指南

3分钟掌握QRCoder:C#开发者的QR码生成终极指南 【免费下载链接】QRCoder A pure C# Open Source QR Code implementation 项目地址: https://gitcode.com/gh_mirrors/qr/QRCoder 想要在C#项目中快速生成专业级QR码吗?QRCoder作为纯C#开源实现&…

作者头像 李华
网站建设 2026/2/27 20:29:27

OpenEMS 完整入门指南:从零开始掌握免费电磁场仿真

OpenEMS 完整入门指南:从零开始掌握免费电磁场仿真 【免费下载链接】openEMS openEMS is a free and open-source electromagnetic field solver using the EC-FDTD method. 项目地址: https://gitcode.com/gh_mirrors/ope/openEMS 想要快速上手强大的电磁场…

作者头像 李华
网站建设 2026/2/25 23:00:14

Open-AutoGLM用户增长引擎曝光:3个被低估的社区运营法则

第一章:Open-AutoGLM月活增长的核心驱动力 Open-AutoGLM 自发布以来,月活跃用户数持续攀升,其背后的增长引擎不仅依赖于强大的开源技术底座,更得益于社区驱动的协作模式与工具链的无缝集成。 极致的开发者体验 Open-AutoGLM 提供…

作者头像 李华
网站建设 2026/2/23 2:20:25

32feet.NET 项目实战指南:轻松掌握个人区域网络开发

32feet.NET 项目实战指南:轻松掌握个人区域网络开发 【免费下载链接】32feet Personal Area Networking for .NET. Open source and professionally supported 项目地址: https://gitcode.com/gh_mirrors/32/32feet 1. 项目核心功能与开发语言解析 32feet.N…

作者头像 李华