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

【LangChain】 入门:从分步调用到链式编程

LangChain 入门从分步调用到链式编程本文基于一段翻译助手的示例代码讲解 LangChain 的核心概念、输出解析器的作用以及普通写法与链式写法的对比。一、LangChain 是什么名字拆解缩写含义LangLanguage语言→ 大语言模型LLM LargeLanguage ModelChain链 → 把多个步骤像链条一样串起来执行核心理念把和大语言模型打交道的各种操作拆成一个个小模块再用链串起来像工厂流水线一样工作。原料 → 工序A → 工序B → 工序C → 成品 ↓ ↓ ↓ 提示词 调模型 解析结果二、完整代码示例翻译助手以下是一段使用 LangChain 调用通义千问模型进行翻译的完整代码fromlangchainimportPromptTemplatefromlangchain_community.chat_modelsimportChatTongyifromlangchain_core.output_parsersimportStrOutputParser# 1. 创建模型客户端modelChatTongyi()# 2. 构建提示词模板promptPromptTemplate(template你是一个翻译助手请讲以下内容翻译成{language}:{text})# 3. 输入参数构建真正的提示词fact_promptprompt.format(language中文,textI am a programmer)print(fact_prompt)# 4. 调用模型resultmodel.invoke(fact_prompt)# 5. 解析输出结果parserStrOutputParser()str_resultparser.invoke(result)print(str_result)三、分步详解第1步创建模型客户端modelChatTongyi()初始化通义千问 Tongyi 的聊天模型客户端后续通过它向大模型发送请求。第2步构建提示词模板promptPromptTemplate(template你是一个翻译助手请讲以下内容翻译成{language}:{text})使用PromptTemplate创建带占位符的模板{language}→ 目标语言如中文{text}→ 待翻译内容如I am a programmer好处模板可复用只需替换变量就能生成不同提示词。第3步填充参数fact_promptprompt.format(language中文,textI am a programmer)将具体值填入占位符生成真正发送给模型的提示词你是一个翻译助手请讲以下内容翻译成中文:I am a programmer第4步调用模型resultmodel.invoke(fact_prompt)向大模型发送请求返回一个复杂对象不是纯文本。第5步解析输出结果 ⭐重点parserStrOutputParser()str_resultparser.invoke(result)print(str_result)为什么要解析大模型返回的result是一个包装对象结构类似AIMessage(content我是一名程序员,# 真正的回答内容response_metadata{token_usage:{...},# Token 消耗统计model_name:qwen-turbo,# 模型名称finish_reason:stop# 结束原因},idrun-xxxxxx,usage_metadata{input_tokens:15,output_tokens:6,total_tokens:21})StrOutputParser 的作用功能说明提取 content从AIMessage对象中抽取出.content字段转为纯字符串去掉所有元数据包装只保留模型生成的文本链式兼容可以无缝接入 LangChain 的|管道操作符效果对比操作输出结果print(result)AIMessage(content我是一名程序员, ...)一大串对象信息print(str_result)我是一名程序员← 干净的人话解析的本质大模型 API 返回的是包裹在快递盒里的商品StrOutputParser就是帮你拆快递盒只把里面的商品纯文本答案拿出来。四、普通写法 vs 链式写法普通写法分步式fromlangchainimportPromptTemplatefromlangchain_community.chat_modelsimportChatTongyifromlangchain_core.output_parsersimportStrOutputParser# 创建各个组件modelChatTongyi()promptPromptTemplate(template你是一个翻译助手请讲以下内容翻译成{language}:{text})parserStrOutputParser()# 手动一步步执行fact_promptprompt.format(language中文,textI am a programmer)resultmodel.invoke(fact_prompt)str_resultparser.invoke(result)print(str_result)# 我是一名程序员特点每一步都显式写出来变量中间结果可见适合调试理解。链式写法管道式fromlangchainimportPromptTemplatefromlangchain_community.chat_modelsimportChatTongyifromlangchain_core.output_parsersimportStrOutputParser# 创建组件modelChatTongyi()promptPromptTemplate(template你是一个翻译助手请讲以下内容翻译成{language}:{text})parserStrOutputParser()# 用 | 符号把组件串成一条链chainprompt|model|parser# 一次调用全程自动流转resultchain.invoke({language:中文,text:I am a programmer})print(result)# 直接输出我是一名程序员特点一行chain prompt | model | parser定义数据流向调用时自动按顺序执行。对比总结维度普通写法链式写法代码行数多步骤分散少高度浓缩可读性适合新手流程清晰适合熟练后一眼看全貌中间变量fact_prompt、result、str_result都暴露内部自动传递无中间变量数据流向靠变量赋值串联靠|管道符号直观表达调试难度容易每步可打断点检查稍难错误可能在链中某环扩展性改流程要改多处改链定义即可如加prompt | model | parser | 其他LangChain 推荐度教学/理解用生产/工程用底层执行逻辑两者完全一样只是代码组织方式不同普通写法: prompt.format() → model.invoke() → parser.invoke() 链式写法: prompt | model | parser → chain.invoke() 实际都是: 字典参数 → 填充模板 → 调用模型 → 解析结果 → 输出字符串\|只是语法糖LangChain 内部会把A | B转成RunnableSequence(A, B)按顺序执行。五、总结Lang 语言模型Chain 链式组合LangChain 让语言模型工作流像搭积木一样简单。写法适用场景普通写法学习阶段理解每一步在干什么链式写法实际项目代码简洁、易于维护建议先理解普通写法每一步在干什么再过渡到链式写法写实际项目。普通写法是手工作坊——每一步亲力亲为看得懂链式写法是流水线——定义好工序原料进去成品出来效率高。本文基于 LangChain 翻译助手示例整理涵盖提示词模板、模型调用、输出解析及链式编程核心概念。

相关文章:

【LangChain】 入门:从分步调用到链式编程

LangChain 入门:从分步调用到链式编程本文基于一段翻译助手的示例代码,讲解 LangChain 的核心概念、输出解析器的作用,以及普通写法与链式写法的对比。一、LangChain 是什么? 名字拆解缩写含义LangLanguage(语言&#…...

实测46MB/s!基于FPGA与CY7C68013A的USB 2.0高速数据传输项目实战(附Streamer速率测试方法)

FPGA与CY7C68013A实现USB 2.0高速传输的工程实践 当我们需要在嵌入式系统中实现高速数据传输时,USB 2.0接口因其广泛兼容性和480Mbps的理论带宽成为首选。本文将详细介绍如何基于Siga-S16 FPGA开发板和CY7C68013A芯片构建一个实测传输速率可达46MB/s的高速数据通道…...

告别开发板:用QEMU+STM32虚拟环境,零成本开启你的ARM Cortex-M汇编学习之旅

零成本构建ARM Cortex-M开发环境:QEMU模拟STM32实战指南 为什么选择虚拟化环境学习嵌入式开发? 记得第一次接触嵌入式开发时,面对琳琅满目的开发板和动辄上千元的调试器,作为学生的我一度望而却步。直到发现了QEMU这个开源神器&…...

若依框架实战:参数验证异常处理(手机号码格式验证案例)

一、前言在后端开发中,参数校验是保证接口健壮性的第一道防线。若依(Ruoyi)框架作为主流的 Java 后台管理系统框架,内置了完善的参数验证与全局异常处理机制。本文将以用户管理模块的手机号码格式验证为例,从触发验证、…...

Colmap生成的点云太密?试试这个‘瘦身’组合拳:用Colmap稠密点云驱动OpenMVS高效建模

Colmap点云优化与OpenMVS高效建模实战指南 三维重建领域的技术迭代日新月异,但硬件资源与计算效率始终是开发者面临的现实瓶颈。当Colmap生成的稠密点云数据量超出内存承载能力,或OpenMVS重建过程陷入性能泥潭时,一套精准的优化策略比盲目升级…...

终点亦是起点

小端AI经过8个月的反复打磨,不仅领先外国顶级水平,而且功能稳定,我也永久保持纯本地运行100%开源,如今已超过30万下载,不管未来百万还是千万用户,绝不开会员,献给国家的申明永久有效&#xff0c…...

收藏必看!2026 网安行业深度解析,人才缺口巨大,五大高薪技术方向详解

2026年网络安全行业迎来黄金发展期,全球人才缺口达480万,岗位年增37%,薪资普遍高于IT行业20%以上。热门方向包括AI安全、零信任架构、数据安全合规、云安全和工业互联网安全。入行可通过四大阶段系统学习:基础入门、技术进阶、高阶…...

量子机器学习框架互操作性挑战与解决方案

1. 量子机器学习框架互操作性挑战与解决方案量子机器学习(QML)作为量子计算与经典机器学习的交叉领域,近年来在理论和实践层面都取得了显著进展。变分量子算法(VQAs)和参数化量子电路(PQCs)已成…...

Skill Library:AI智能体技能库的模块化设计与工程实践

1. 项目概述:一个为AI智能体打造的“技能武器库”如果你和我一样,每天都在和Claude、ChatGPT、Cursor这些AI工具打交道,那你肯定也经历过这样的时刻:想让AI帮你写个复杂的SQL查询、设计一个微服务架构,或者起草一份产品…...

从「LLM 使用者」到「LLM 驾驭者」:小白程序员必备的大模型核心知识体系与实战指南(收藏版)

本文将从底层原理、工程落地、应用优化三个维度,系统拆解大语言模型的核心知识体系,既保证技术深度,又用通俗的语言和实战案例降低理解门槛,适合所有想要从「LLM 使用者」进阶为「LLM 驾驭者」的读者。 一、LLM 核心原理入门&…...

Thorium浏览器终极指南:如何打造最快的Chromium分支浏览器

Thorium浏览器终极指南:如何打造最快的Chromium分支浏览器 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Source code and Linux releases. Windows/MacOS/ARM builds served in different repos, links are towards the top of…...

k8s——RBAC认证中心

一、整体流程:认证 → 授权 → 准入控制在 Kubernetes 中,所有操作都要通过 API Server。当你(或某个程序)想对集群做任何事(比如创建一个 Pod),必须经过三步检查:认证:你…...

AI编程提效:用系统提示词实现测试驱动开发与可靠交付

1. 项目概述:一个为AI编程工作流设计的“系统指令集”如果你经常用Claude、Cursor或者ChatGPT来辅助写代码,大概率遇到过这种情况:AI助手给出的代码片段看起来能跑,但一放到项目里就各种报错;或者它自作主张地“优化”…...

通用AGI终极范式:从多模态感知到意识涌现的统一理论(世毫九实验室原创研究)

通用AGI终极范式:从多模态感知到意识涌现的统一理论作者:方见华单位:世毫九实验室摘要本研究基于世毫九理论体系的数学框架,构建了通用人工智能(AGI)的完整理论体系和演化路径。通过建立包含拓扑复杂度、动…...

【2025最新】基于SpringBoot+Vue的夕阳红公寓管理系统管理系统源码+MyBatis+MySQL

💡实话实说:有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。摘要 随着人口老龄化趋势加剧,养老服务需求日益增长,传统的养老机构管理模式已难以满足高效、智能化的运营需求。夕阳红公寓管理…...

NVIDIA Profile Inspector终极指南:200+隐藏参数解锁显卡性能新高度

NVIDIA Profile Inspector终极指南:200隐藏参数解锁显卡性能新高度 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款功能强大的显卡驱动参数调校工具&#xf…...

Ruby开发者指南:使用chatgpt-ruby轻量级封装集成OpenAI API

1. 项目概述:一个为Ruby开发者打造的OpenAI API轻量级封装 如果你是一名Ruby开发者,正琢磨着如何在自己的Rails应用、Sinatra服务或者一个简单的CLI工具里,优雅地集成ChatGPT的能力,那么 chatgpt-ruby 这个Gem很可能就是你正在…...

Awesome List Creator:基于规则引擎的自动化资源清单生成工具

1. 项目概述:一个清单的“引擎”在信息过载的时代,无论是开发者寻找工具库,还是学习者梳理知识体系,一份结构清晰、内容精选的“Awesome List”(优质资源清单)都堪称无价之宝。然而,维护一份高质…...

2026主流远控软件综合横测:4款工具全方位测试,谁更适合你?

用心测评,全程无广2026主流远控软件综合横测:4款工具全方位测试,谁更适合你?远程控制已成为个人办公、家庭协助、企业运维、游戏串流的刚需工具。本次横测聚焦ToDesk、向日葵、TeamViewer、网易 UU 远程四款主流产品,从连接性能、…...

一文读懂添加产品展示模块后,但模块不显示产品价格,如何解决(附实操教程)

关于这个问题,很多商家都不太清楚。今天来详细解答。一、问题背景在实际运营小程序商城的过程中,不少商家会遇到:添加产品展示模块后,但模块不显示产品价格,如何解决二、详细解答请按下图操作查看是否未勾选展示的内容…...

异构GPU推理优化:Tessera架构解析与实践

1. 异构GPU推理的性能瓶颈与挑战在当前的AI推理服务部署中,混合使用不同代际的GPU已经成为提升性价比的常见做法。比如将最新的H100与相对便宜的L40S搭配使用,或者将计算密集型的B200与内存优化的H100组合部署。然而,这种异构环境下的资源利用…...

Prompt工程实战:从CRISPE框架到垂直应用,解锁AI模型高效协作

1. 项目概述与核心价值 如果你正在寻找一套能真正“榨干”ChatGPT、Midjourney、Stable Diffusion等主流AI模型潜力的中文提示词(Prompt)集合,那么你找对地方了。 langgptai/wonderful-prompts 这个开源项目,正是由《ChatGPT中文…...

全域矩阵防封指南:脱离“连点器”思维,揭秘店群RPA底层的跨平台指纹隔离基建

大家好,我是林焱,一名专注电商底层业务逻辑与 RPA 自动化架构定制的独立开发者。 在 CSDN 的私信里,最近很多同行都在向我大吐苦水:“林大,我用 Python 写了一套非常完美的自动化脚本,单号跑的时候无比丝滑…...

Arm SMMUv3_ROOT寄存器架构与颗粒保护机制详解

1. SMMUv3_ROOT寄存器架构解析SMMUv3_ROOT是Arm系统内存管理单元(SMMU)架构中的核心控制模块,负责管理物理内存的访问权限和隔离机制。作为现代SoC中不可或缺的安全组件,它通过一组精心设计的寄存器实现对内存访问的细粒度控制。1.1 寄存器分类与功能矩阵…...

CSS如何利用Sass实现透明度动态化_通过函数计算CSS颜色值

...

Go语言单例模式如何实现_Go语言单例模式教程【通俗】

sync.Once是最安全的单例初始化方式,天然解决并发首次调用竞态问题,只执行一次闭包;须作包级或结构体字段,避免局部变量失效;panic后会持续失败,需自行兜底。Go 里 sync.Once 是最安全的单例初始化方式直接…...

功率MOSFET工作原理与电力电子应用解析

1. 功率MOSFET基础概念解析 功率MOSFET(金属氧化物半导体场效应晶体管)是现代电力电子系统的核心开关器件。与普通MOSFET不同,功率MOSFET专为处理高电压(通常>60V)和大电流(>1A)而设计。其…...

SLEICL框架:用“魔法书”提示工程提升小模型上下文学习性能

1. 项目概述:用“魔法书”解锁小模型的大潜能 如果你最近在折腾大语言模型,尤其是那些参数规模在7B、13B左右的“小模型”,可能会发现一个头疼的问题:想让它们通过上下文学习(In-context Learning, ICL)的方…...

SyntaxUI:基于Tailwind CSS与Framer Motion的React组件库实战指南

1. 项目概述:SyntaxUI,一个为现代Web开发者提速的组件库如果你和我一样,常年奋战在React、Next.js项目的一线,那你一定对“重复造轮子”这件事深恶痛绝。每次新项目启动,从零开始搭建按钮、卡片、模态框、导航栏&#…...

Docker多阶段构建与镜像优化实战

Docker多阶段构建与镜像优化实战:从1GB到50MB的瘦身之旅 🐳 镜像太大?构建太慢?安全隐患太多?本文通过真实 Node.js + Python 项目,手把手教你用多阶段构建把 Docker 镜像从 1GB 压缩到 50MB,附带完整的优化策略和踩坑指南。 一、为什么你的 Docker 镜像这么大? 很多…...