智能体学习2——执行流的艺术与提示链模式
文章目录1. 提示链模式复杂任务的“流水线”化2. 执行流中的“艺术”从线性到动态3. 典型实践应用场景4. 实战架构以 LangChain 为例1. 环境准备2. 完整实战代码代码逻辑解析在智能体设计中执行流Execution Flow的艺术在于如何将大语言模型LLM的概率性输出转化为稳定、可预测且高效的任务达成路径。它是智能体从“聊天机器人”演进为“生产力工具”的第一步。本章的核心模式——提示链Prompt Chaining以及互补的路由Routing与并行化Parallelization共同构成了执行流的基础架构。1. 提示链模式复杂任务的“流水线”化提示链又称流水线模式主张采取“分而治之”的策略。与其期望 LLM 一步到位解决复杂问题不如将其拆解为一系列易于管理的子问题。核心逻辑每个步骤由专门设计的提示单独处理前序步骤的输出作为后续步骤的输入从而建立起逻辑上的依赖链条。解决的局限性单一复杂提示Single Prompt往往会导致模型遗漏指令、丢失上下文或产生幻觉。通过拆解模型在每一环节的认知负担更轻准确性更高。结构化输出的重要性提示链的健壮性高度依赖于各步骤间的数据完整性。建议强制模型使用JSON 或 XML格式输出以确保后续步骤能精准解析数据减少自然语言理解偏差。2. 执行流中的“艺术”从线性到动态执行流不仅包括简单的线性串联还涉及更复杂的决策引导。上下文工程Context Engineering这是提示工程的系统性升级。它不仅仅是优化问题描述而是为智能体构建一个包含历史交互、检索文档RAG和工具输出的完整信息环境。路由模式Routing引入条件逻辑。智能体根据用户意图、环境状态或前序结果在多个潜在动作间进行仲裁。例如客户咨询会被路由到“订单查询”或“技术支持”等专用子智能体使系统具备上下文感知的动态响应能力。并行化Parallelization识别流程中彼此无依赖的部分并同时执行。例如在调研任务中同时进行新闻搜索和股价拉取能显著缩短整体执行时间提升系统响应速度。3. 典型实践应用场景提示链及其扩展模式在以下领域展现了卓越的价值信息处理流从文档摘要、实体提取到查询数据库最后生成整合报告。该方法广泛用于自动化内容分析。内容创作从主题构思、生成大纲、分段撰写到最终的语气审阅与语法优化通过多步迭代产出高质量内容。代码生成与优化将需求拆解为生成伪代码、撰写初稿、静态分析纠错、最终优化及补充测试用例。多模态推理例如解析图片时先提取文本再关联标签最后结合表格信息输出结果。4. 实战架构以 LangChain 为例在代码实现层面**LangChain 表达式语言LCEL**是实现执行流艺术的典型工具。根据您深入学习第一章“执行流的艺术——提示链模式”的需求以下是书中所提供的基于LangChain实现的完整实战代码示例。这段代码演示了一个两步提示链第一步从非结构化文本中提取技术规格第二步将提取结果转换为结构化的 JSON 格式。1. 环境准备首先需要安装所需的依赖库pipinstalllangchain langchain-community langchain-openai langgraph2. 完整实战代码以下是实现该模式的 Python 代码importosfromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.output_parsersimportStrOutputParser# 1. 初始化语言模型建议将 API Key 设置在环境变量或 .env 文件中# os.environ[OPENAI_API_KEY] 您的API密钥llmChatOpenAI(temperature0)# --- 提示 1信息提取 ---# 负责从原始文本中抓取关键技术参数prompt_extractChatPromptTemplate.from_template(请从以下文本中提取技术规格\n\n{text_input})# --- 提示 2格式转换 ---# 接收上一步的输出并要求模型强制输出结构化的 JSONprompt_transformChatPromptTemplate.from_template(请将以下技术规格转为 JSON 格式包含 cpu、memory 和 storage 三个键\n\n{specifications})# --- 使用 LCEL (LangChain 表达式语言) 构建链 ---# 步骤 A定义提取链# StrOutputParser() 确保 LLM 的消息输出被转换为纯字符串方便传递给下一步extraction_chainprompt_extract|llm|StrOutputParser()# 步骤 B构建全链提示链的核心# 将 extraction_chain 的输出映射为变量 specifications 传递给第二个提示full_chain({specifications:extraction_chain}|prompt_transform|llm|StrOutputParser())# --- 运行链 ---input_text新款笔记本配备 3.5GHz 八核处理器、16GB 内存和 1TB NVMe SSD。# 执行全链它会先执行 extraction_chain再将结果喂给后续步骤final_resultfull_chain.invoke({text_input:input_text})print(\n--- 最终 JSON 输出 ---)print(final_result)代码逻辑解析分而治之代码没有尝试在一个复杂的提示词中同时完成“提取”和“格式化”而是拆分为两个独立的步骤prompt_extract和prompt_transform这显著降低了模型出错的概率。LCEL 管道符利用 LangChain 的|符号优雅地实现了“前序步骤输出作为后续步骤输入”的依赖链条。结构化保障第二步明确要求输出 JSON 格式。这种做法在提示链中至关重要因为它能确保后续系统或其他智能体可以精准解析数据减少自然语言理解带来的偏差。线性串联利用管道符|将提示Prompt、模型LLM和输出解析器Output Parser优雅地串联起来。复杂逻辑管理对于更复杂的、有状态的执行流可以使用LangGraph。它支持有状态的循环计算允许智能体根据工具调用结果反复迭代直到达成最终目标。并行构造通过RunnableParallel结构开发者可以并发运行多个链路在降低延迟的同时处理多维度的任务。总结要点提示链模式通过任务拆解提升了可靠性路由模式赋予了系统灵活性而并行化则优化了性能。掌握执行流的编排是构建具备复杂流程执行能力、情境感知且可靠的智能体系统的关键。