2026/1/29 4:03:33
网站建设
项目流程
广东网站建设服务商,给公司建网站需要多少钱,wordpress外链缩略图,html门户网站模板day38:组合多个工具链
组合多个工具链
定义#xff1a;
组合多个工具链 让 Agent 能在一次任务中#xff0c;按需调用多个 Tool / Chain#xff0c;并把中间结果作为上下文继续使用解决的问题是#xff1a; 真实任务≠单一工具可以完成
示例#xff1a;用户问#xff1a…day38:组合多个工具链组合多个工具链定义组合多个工具链 让 Agent 能在一次任务中按需调用多个 Tool / Chain并把中间结果作为上下文继续使用解决的问题是 真实任务≠单一工具可以完成示例用户问「根据这篇小说总结人物关系并判断谁是悲剧核心人物」实际需要文本解析 / 检索RAG / GraphRAG人物关系分析图谱/规则推理判断LLM结构化输出这就必须 多工具协作。核心概念拆解Tool ≠ Chain ≠ Agent你必须分清概念本质举例Tool一个能力函数搜索、计算、查天气Chain固定流程的工具组合Prompt → LLM → ParserAgent动态决策调用工具先搜再算 or 先算再搜组合多个工具链Agent 在执行过程中调用多个 Chain / Tool并把结果串起来工具链组合的 3 种典型模式串行Sequential输入 → Tool A → Tool B → Tool C → 输出示例文本 → 实体抽取 → 关系整理 → 总结特点简单可预测适合确定流程条件分支Router→ Tool A 输入 → 判断 → Tool B示例如果是「数学问题」→ Calculator 如果是「事实问题」→ Search 如果是「总结」→ RAGAgent 动态组合Agent ├─ decide → Tool A ├─ decide → Tool B ├─ decide → Tool C └─ synthesize answer特点非固定顺序可多轮调用可失败重试Demofromlanggraph.prebuiltimportcreate_react_agentfromlangchain_core.toolsimportToolfromlangchain_openaiimportChatOpenAI llmChatOpenAI(modelqwen-plus-latest,api_keysk-YOUR-key,base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,temperature0.7)defsummarize_text(text:str)-str:promptf请用不超过5句话总结以下文本\n{text}returnllm.invoke(prompt).content summary_toolTool(nameSummarizeText,funcsummarize_text,description用于对长文本进行摘要。)# 人物关系抽取defextract_relations(text:str)-str:promptf 请从以下文本中抽取人物关系用列表输出 格式人物A - 关系 - 人物B 文本{text}returnllm.invoke(prompt).content relation_toolTool(nameExtractRelations,funcextract_relations,description从文本中抽取人物关系)# 关系分析defanalyze_relations(relations:str)-str:promptf 根据以下人物关系判断 1. 谁是核心人物 2. 是否存在悲剧冲突 关系{relations}returnllm.invoke(prompt).content analysis_toolTool(nameAnalyzeRelations,funcanalyze_relations,description分析人物关系并给出判断)tools[Tool(nameSummarizeText,funcsummarize_text,description用于对长文本进行摘要。),Tool(nameExtractRelations,funcextract_relations,description从文本中抽取人物关系),Tool(nameAnalyzeRelations,funcanalyze_relations,description分析人物关系并给出判断)]agentcreate_react_agent(llm,tools)defmain():text 张三深爱李四但李四被迫嫁给王五。 王五性格暴躁经常伤害李四。 最终张三为救李四而死。 # 将文本作为输入传递给代理resultagent.invoke({messages:[(user,f请分析这段故事的人物关系并判断悲剧核心人物是谁。故事内容{text})]})print(result[messages][-1].content)if__name____main__:main()# 根据分析悲剧核心人物是**李四**。## 理由如下# - 所有关键关系均以她为枢纽张三的深爱与牺牲、王五的强迫婚姻与暴力伤害皆围绕她展开# - 她身陷多重结构性压迫——情感自主权被剥夺被迫嫁、人身安全受威胁被伤害、成为他人牺牲的动因张三为其而死却无主动解局之力# - 张三之死虽具强烈悲壮感但其行为逻辑完全由对李四的爱与拯救欲驱动王五的暴行也以李四为直接对象。因此李四是悲剧能量的汇聚点与承受体是命运不可逆性的最深刻体现。## ✅ 结论明确**李四为本故事的悲剧核心人物。**