news 2026/4/28 18:10:16

组合多个工具链

作者头像

张小明

前端开发工程师

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/4/28 9:08:10

Chili3D终极指南:5步掌握浏览器3D建模

Chili3D终极指南:5步掌握浏览器3D建模 【免费下载链接】chili3d A 3D CAD application on your browser 项目地址: https://gitcode.com/GitHub_Trending/ch/chili3d Chili3D是一个革命性的开源3D CAD应用,让你直接在浏览器中创建和编辑复杂的3D模…

作者头像 李华
网站建设 2026/4/28 18:09:28

大麦抢票终极指南:从零开始快速上手自动抢票工具

还在为抢不到心仪的演唱会门票而烦恼吗?面对热门演出秒光的窘境,手动操作往往力不从心。今天为大家介绍一款强大易用的大麦抢票工具,帮助您告别抢票焦虑,轻松获得心仪票券。 【免费下载链接】ticket-purchase 大麦自动抢票&#x…

作者头像 李华
网站建设 2026/4/18 14:07:26

解锁Fusion Pixel Font:3步打造惊艳像素艺术

想要为你的数字项目注入独特的复古魅力吗?🎮 Fusion Pixel Font这款免费开源像素字体正是你需要的创意工具!作为一款专为现代数字创意设计的像素风格字体,它支持8px、10px和12px三种尺寸,每种都提供等宽和比例两种模式…

作者头像 李华
网站建设 2026/4/23 17:21:31

Apache Fesod:Java开发者的Excel数据处理革命

Apache Fesod:Java开发者的Excel数据处理革命 【免费下载链接】fastexcel easyexcel作者最新升级版本, 快速、简洁、解决大文件内存溢出的java处理Excel工具 项目地址: https://gitcode.com/gh_mirrors/fast/fastexcel "王工,这个…

作者头像 李华
网站建设 2026/4/17 16:03:54

从零开始掌握pkuseg-python:让中文分词不再困扰你的文本处理

从零开始掌握pkuseg-python:让中文分词不再困扰你的文本处理 【免费下载链接】pkuseg-python pkuseg多领域中文分词工具; The pkuseg toolkit for multi-domain Chinese word segmentation 项目地址: https://gitcode.com/gh_mirrors/pk/pkuseg-python 还在为…

作者头像 李华
网站建设 2026/4/24 15:54:06

终极PxMatrix LED矩阵库:ESP32显示屏完整控制指南

终极PxMatrix LED矩阵库:ESP32显示屏完整控制指南 【免费下载链接】PxMatrix 项目地址: https://gitcode.com/gh_mirrors/px/PxMatrix PxMatrix是一个专为ESP32设计的开源Arduino库,能够高效控制各类LED点阵显示屏,特别是P10等常见型…

作者头像 李华