LangChain 全场景结构化能力 对应方法 代码示例按提示词结构化、流程链路结构化、模型输出结构化、数据传递结构化四大核心场景划分每个场景说明作用、组件、用法 可运行代码。前置依赖bash运行pip install langchain langchain-openaipython运行from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import ( StrOutputParser, PydanticOutputParser, JsonOutputParser ) from langchain_core.runnables import RunnableLambda, RunnablePassthrough, RunnableMap from pydantic import BaseModel, Field from typing import List import json # 初始化模型示例通用 llm ChatOpenAI(modelgpt-3.5-turbo, temperature0)一、提示词结构化Prompt 层输入作用统一提示词格式、角色分层、固定指令框架约束模型上下文与指令结构。对应组件ChatPromptTemplate角色结构化system/human/ai 分层模板内固定排版、字段、格式要求文本结构约束示例 1多角色结构化对话模板python运行# 按角色结构化组织提示词固定系统人设 用户提问 prompt ChatPromptTemplate.from_messages([ (system, 你是专业数据分析师回答必须分点说明语言简洁), (human, 请分析{content}) ]) # 渲染查看结构化后的提示内容 print(prompt.format(content本月订单量上涨30%客单价小幅下降))示例 2自定义固定段落结构在模板中强行规定段落、标题、区块属于纯文本结构化python运行template 【问题】{question} 【分析】请简要分析原因 【结论】给出最终总结 prompt ChatPromptTemplate.from_template(template) res prompt.format(question为什么夏季销量更高) print(res)二、执行流程结构化LCEL 管道 Chain作用把多个组件按固定顺序串联形成标准化执行链路流程可复用、可拆解、可维护。对应组件管道符|串行结构化流程RunnableMap并行结构化多分支同时执行RunnablePassthrough透传字段保持数据结构示例 1标准串行结构化链路最常用固定流程提示词 → 大模型 → 解析器python运行# 结构化流程prompt | llm | 字符串解析器 chain prompt | llm | StrOutputParser() # 统一入口调用 result chain.invoke({content: 线上流量环比上升20%}) print(result)示例 2并行结构化RunnableMap 多分支同一输入分多路并行处理再汇总结果典型分支结构化python运行# 定义两个分支任务 branch1 ChatPromptTemplate.from_template(总结{text}) | llm | StrOutputParser() branch2 ChatPromptTemplate.from_template(提取关键词{text}) | llm | StrOutputParser() # RunnableMap 实现并行结构化 parallel_chain RunnableMap({ 总结: branch1, 关键词: branch2, 原文: RunnablePassthrough() # 透传原始数据 }) out parallel_chain.invoke({text: 人工智能正在赋能各行各业提升生产效率}) print(json.dumps(out, ensure_asciiFalse, indent2))三、模型输出结构化Output 层核心高频作用强制大模型输出JSON、对象、固定字段、数组等结构化数据避免自由文本。对应组件JsonOutputParser输出标准 JSON 字符串 / 字典PydanticOutputParser基于 Pydantic 模型强类型结构化推荐示例 1JSON 结构化输出JsonOutputParserpython运行# 1. 定义模板要求输出JSON prompt ChatPromptTemplate.from_template( 请把下面人物信息转为JSON格式仅返回JSON 姓名、年龄、职业 内容{info} ) # 2. JSON解析器 json_parser JsonOutputParser() # 3. 组装链路 chain prompt | llm | json_parser # 4. 调用直接得到字典结构化数据 data chain.invoke({info: 张三28岁软件工程师}) print(type(data)) # class dict print(data)示例 2强类型结构化PydanticOutputParser通过模型定义字段名、类型、描述严格约束输出结构企业级首选。python运行# 1. 定义Pydantic结构化模型 class UserInfo(BaseModel): name: str Field(description用户姓名) age: int Field(description用户年龄) hobby: List[str] Field(description爱好列表) # 2. 初始化解析器 自动获取格式说明 parser PydanticOutputParser(pydantic_objectUserInfo) format_instructions parser.get_format_instructions() # 3. 提示词嵌入结构化格式要求 prompt ChatPromptTemplate.from_template( 解析人物信息严格按照指定格式输出。 {format_instructions} 信息内容{content} ).partial(format_instructionsformat_instructions) # 4. 链路组装 chain prompt | llm | parser # 5. 调用直接得到结构化对象 result chain.invoke({content: 李四25岁喜欢游泳、读书、爬山}) print(result.name, result.age, result.hobby) print(type(result)) # class __main__.UserInfo四、数据传递结构化输入 / 字段透传作用在链式调用中保留、拆分、重组输入字典结构保证上下游数据字段对齐。对应组件RunnablePassthrough原样透传字段RunnableLambda自定义转换数据结构字典映射重组 Key示例 1字段透传 结构重组python运行# 原始输入是字典链路中保留原有字段同时新增处理后字段 def upper_text(data: dict) - str: # 自定义结构转换逻辑 return data[raw_text].upper() chain ( RunnablePassthrough.assign( upper_textRunnableLambda(upper_text) # 新增结构化字段 ) | ChatPromptTemplate.from_template( 原文{raw_text} 大写{upper_text} 请简要评价内容 ) | llm | StrOutputParser() ) # 输入结构化字典 res chain.invoke({raw_text: LangChain 结构化开发}) print(res)五、结构化场景总览表结构化场景核心组件用途简述提示词结构化ChatPromptTemplate角色分层、固定指令 / 段落框架流程串行结构化管道符 按顺序串联组件标准化执行链路流程并行结构化RunnableMap多分支并行执行结果汇总输出 JSON 结构化JsonOutputParser强制模型输出标准 JSON 字典输出强类型结构化PydanticOutputParser基于数据模型约束字段、类型、数组数据透传 / 重组RunnablePassthrough/RunnableLambda链路中保留、转换、新增数据字段六、核心总结提示词结构化靠模板分层、固定文本框架规范输入给大模型的内容流程结构化靠 LCEL 管道、Runnable 系列组件编排执行顺序与分支输出结构化靠各类 OutputParser把模型自由文本转为 JSON / 对象等规范数据数据结构化靠透传、Lambda 转换保证全链路字段格式统一。