当前位置: 首页 > news >正文

[智能体-166]:Langchain有哪些结构化地方和对应的方法?代码示例

LangChain 全场景结构化能力 + 对应方法 + 代码示例

提示词结构化、流程链路结构化、模型输出结构化、数据传递结构化四大核心场景划分,每个场景说明作用、组件、用法 + 可运行代码。

前置依赖

bash

运行

pip install langchain langchain-openai

python

运行

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(model="gpt-3.5-turbo", temperature=0)

一、提示词结构化(Prompt 层:输入)

作用

统一提示词格式、角色分层、固定指令框架,约束模型上下文与指令结构。

对应组件

  1. ChatPromptTemplate角色结构化(system/human/ai 分层)
  2. 模板内固定排版、字段、格式要求:文本结构约束

示例 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_ascii=False, indent=2))

三、模型输出结构化(Output 层,核心高频)

作用

强制大模型输出JSON、对象、固定字段、数组等结构化数据,避免自由文本。

对应组件

  1. JsonOutputParser输出标准 JSON 字符串 / 字典
  2. PydanticOutputParser:基于 Pydantic 模型强类型结构化(推荐)

示例 1:JSON 结构化输出(JsonOutputParser)

python

运行

# 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_object=UserInfo) format_instructions = parser.get_format_instructions() # 3. 提示词嵌入结构化格式要求 prompt = ChatPromptTemplate.from_template(""" 解析人物信息,严格按照指定格式输出。 {format_instructions} 信息内容:{content} """).partial(format_instructions=format_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_text=RunnableLambda(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链路中保留、转换、新增数据字段

六、核心总结

  1. 提示词结构化:靠模板分层、固定文本框架,规范输入给大模型的内容;
  2. 流程结构化:靠 LCEL 管道、Runnable 系列组件,编排执行顺序与分支;
  3. 输出结构化:靠各类 OutputParser,把模型自由文本转为 JSON / 对象等规范数据;
  4. 数据结构化:靠透传、Lambda 转换,保证全链路字段格式统一。
http://www.rkmt.cn/news/1432261.html

相关文章:

  • 保姆级教程:用Unity UGUI与World Space Canvas搞定3D游戏中的动态血条与摇杆控制
  • GRBL算法调参避坑指南:如何根据你的步进电机和机械结构优化STM32运动性能
  • VASP过渡态计算避坑指南:CI-NEB方法中INCAR参数设置与收敛性诊断实战
  • 手把手调优:如何榨干寒武纪MLU的算力?从Cluster到Core的并发与流水线实战
  • 新手别慌!一文拆解SMIC 180nm工艺库里的那些文件夹都是干啥的
  • 别再傻傻分不清!TVS管选型必懂的三个电压:VRWM、VBR、VCL实战解析
  • 从调度脚本到自主决策,AI-ETL整合全路径拆解,手把手落地4类高危场景改造方案
  • 低成本语音AI实战:本地部署TTS与大模型集成方案
  • AI搜索隐私保卫战进入倒计时:监管新规落地前最后窗口期,如何用3个命令行工具实时监控自身数据流向?
  • AI如何重塑数字营销:从个性化推荐到人机协同创意
  • 手把手教你用高云FPGA的Video Frame Buffer IP核搞定OV5640摄像头到HDMI显示(附源码)
  • 企业规模化应用AI的五大成熟度信号与实施路线图
  • AI重塑师生关系:从工具到伙伴的动态三角模型与实操策略
  • ImageJ进阶玩法:用Trainable Weka Segmentation,让机器学习帮你自动数免疫组化的阳性细胞
  • 从弹珠游戏到工业分选:Rocky DEM模拟揭示的颗粒动力学秘密(附高尔顿板案例文件)
  • AI工具供应商尽职调查全流程(含12份法律条款审查红标模板)
  • 怎样高效自动化下载Google Drive共享文件:Python开发者的终极实践指南
  • 从2017年语音AI预测复盘看技术落地:场景、混合智能与实战方法论
  • 径向基函数(RBF)插值:从数学原理到工程实战的完整指南
  • 明末:渊虚之羽下载2026最新
  • 别再死记硬背了!用‘温室控制器’和‘牙科诊所’两个例子,彻底搞懂面向对象分析的三大模型
  • 告别动画师地狱:用UE5 IK重定向器,5分钟让不同骨架的角色共享一套动作库
  • 构建高效技术阅读系统:从信息过载到知识沉淀的实践指南
  • 传统对讲在工业噪声下形同虚设?A-59P用AI降噪+8米拾音交出满分答卷
  • MediaPipe姿势捕捉实战:结合Pygame,教你开发一个体感小游戏(附完整源码)
  • 语音助手安全漏洞剖析与多层防御实践指南
  • 游戏修改入门:用Cheat Engine 7.5搞定单双浮点数(附第三关详细图文)
  • 智慧建筑物分割图像识别 混凝土裂缝分割 房屋巡检识别 老旧房屋缺陷检测 yolo+voc+coco数据集第10732期
  • 从数据手册的V-I曲线到实际板级测试:深入解读TVS管VRWM、VBR、VCL的工程意义
  • 【Gemini系统架构设计核心机密】:谷歌内部未公开的5层解耦模型与实时推理优化策略