智能体学习2——执行流的艺术与提示链模式

文章目录

      • [1. 提示链模式:复杂任务的"流水线"化](#1. 提示链模式:复杂任务的“流水线”化)
      • [2. 执行流中的"艺术":从线性到动态](#2. 执行流中的“艺术”:从线性到动态)
      • [3. 典型实践应用场景](#3. 典型实践应用场景)
      • [4. 实战架构:以 LangChain 为例](#4. 实战架构:以 LangChain 为例)
      • [1. 环境准备](#1. 环境准备)
      • [2. 完整实战代码](#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. 环境准备

首先需要安装所需的依赖库:

bash 复制代码
pip install langchain langchain-community langchain-openai langgraph

2. 完整实战代码

以下是实现该模式的 Python 代码:

python 复制代码
import os
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

# 1. 初始化语言模型(建议将 API Key 设置在环境变量或 .env 文件中)
# os.environ["OPENAI_API_KEY"] = "您的API密钥"
llm = ChatOpenAI(temperature=0)

# --- 提示 1:信息提取 ---
# 负责从原始文本中抓取关键技术参数
prompt_extract = ChatPromptTemplate.from_template(
    "请从以下文本中提取技术规格:\n\n{text_input}"
)

# --- 提示 2:格式转换 ---
# 接收上一步的输出,并要求模型强制输出结构化的 JSON
prompt_transform = ChatPromptTemplate.from_template(
    "请将以下技术规格转为 JSON 格式,包含 'cpu'、'memory' 和 'storage' 三个键:\n\n{specifications}"
)

# --- 使用 LCEL (LangChain 表达式语言) 构建链 ---

# 步骤 A:定义提取链
# StrOutputParser() 确保 LLM 的消息输出被转换为纯字符串,方便传递给下一步
extraction_chain = prompt_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_result = full_chain.invoke({"text_input": input_text})

print("\n--- 最终 JSON 输出 ---")
print(final_result)

代码逻辑解析:

  • 分而治之 :代码没有尝试在一个复杂的提示词中同时完成"提取"和"格式化",而是拆分为两个独立的步骤(prompt_extractprompt_transform),这显著降低了模型出错的概率。

  • LCEL 管道符 :利用 LangChain 的 | 符号,优雅地实现了"前序步骤输出作为后续步骤输入"的依赖链条。

  • 结构化保障:第二步明确要求输出 JSON 格式。这种做法在提示链中至关重要,因为它能确保后续系统(或其他智能体)可以精准解析数据,减少自然语言理解带来的偏差。

  • 线性串联 :利用管道符 | 将提示(Prompt)、模型(LLM)和输出解析器(Output Parser)优雅地串联起来。

  • 复杂逻辑管理 :对于更复杂的、有状态的执行流,可以使用 LangGraph 。它支持有状态的循环计算,允许智能体根据工具调用结果反复迭代,直到达成最终目标。

  • 并行构造 :通过 RunnableParallel 结构,开发者可以并发运行多个链路,在降低延迟的同时处理多维度的任务。

总结要点 :提示链模式通过任务拆解提升了可靠性,路由模式赋予了系统灵活性,而并行化则优化了性能。掌握执行流的编排,是构建具备复杂流程执行能力、情境感知且可靠的智能体系统的关键。

相关推荐
金融RPA机器人丨实在智能2 小时前
OpenClaw正在重写AI产业逻辑:当“行动式AI”席卷全球,实在Agent如何定义商业新范式?
人工智能·ai
码上生存指南3 小时前
我让 Claude、ChatGPT、Kimi 同时帮我写代码,差距有点大
ai·chatgpt
D_FW3 小时前
WorkBuddy 使用指南:如何高效使用你的 AI 助手
ai
带娃的IT创业者3 小时前
AI 时代产品经理能取代程序员吗?一人全栈背后的残酷真相
人工智能·ai·程序员·产品经理·全栈·职业焦虑
marsh02063 小时前
22 openclaw身份认证与授权:构建安全的访问控制
安全·ai·编程·技术
nbsaas-boot4 小时前
基于 HTTP 构建 MCP Tools 的完整工程解析
网络·网络协议·http·ai
GISer_Jing4 小时前
Claude Code架构深度解析:从核心文件到Harness的确定性控制体系
ai·架构·aigc
AI自动化工坊4 小时前
AI Agent框架深度解析:Superpowers与gstack如何重构开发工作流?
人工智能·ai·重构·开源