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

LangChain-4-chain

Chain的基本概念

Chain:链,用于将多个组件(提示模板、LLM模型、记忆、工具等)连接起来,形成可复用的 工作 流 ,完成复杂的任务。 Chain 的核心思想是通过组合不同的模块化单元,实现比单一组件更强大的功能。比如: 将 LLM 与 Prompt Template (提示模板)结合 将 LLM 与 输出解析器 结合 将 LLM 与 外部数据 结合,例如用于问答 将 LLM 与 长期记忆 结合,例如用于聊天历史记录 通过将 第一个LLM 的输出作为 第二个LLM 的输入,...,将多个LLM按顺序结合在一起

案例1没有使用chain

from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import PromptTemplate from langchain_openai import ChatOpenAI template = PromptTemplate.from_template(template="给我讲一个关于{topic}话题的简短笑话") template_invoke = template.invoke({"topic": "蛤蟆"}) llm = ChatOpenAI( model="gpt-3.5-turbo", api_key="sk-", base_url="https://api.34ku.com/v1/", temperature=0.7, max_tokens=200 ) out = llm.invoke(template_invoke) parser = StrOutputParser() resp = parser.invoke(out) print(resp)

案例2使用chain

from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import PromptTemplate from langchain_openai import ChatOpenAI template = PromptTemplate.from_template(template="给我讲一个关于{topic}话题的简短笑话") llm = ChatOpenAI( model="gpt-3.5-turbo", api_key="sk-", base_url="https://api.34ku.com/v1/", temperature=0.7, max_tokens=200 ) parser = StrOutputParser() chain = template | llm | parser resp = chain.invoke({"topic": "蛤蟆"}) print(resp)

使用LCEL,可以构造出结构最简单的Chain。 LangChain表达式语言(LCEL,LangChain Expression Language)是一种声明式方法,可以轻松地将多个组件链接成 AI 工作流。它通过Python原生操作符(如管道符 | )将组件连接成可执行流程,显著简化了AI应用的开发。 LCEL的基本构成:提示(Prompt)+ 模型(Model)+ 输出解析器(OutputParser)

Runnable

Runnable是LangChain定义的一个抽象接口(Protocol),它强制要求所有LCEL组件实现一组标准方法:

class Runnable(Protocol): def invoke(self, input: Any) -> Any: ... # 单输入单输出 def batch(self, inputs: List[Any]) -> List[Any]: ... # 批量处理 def stream(self, input: Any) -> Iterator[Any]: ... # 流式输出 # 还有其他方法如 ainvoke(异步)等

任何实现了这些方法的对象都被视为LCEL兼容组件。比如:聊天模型、提示词模板、输出解析器、检索 器、代理(智能体)等。 每个 LCEL 对象都实现了 Runnable 接口,该接口定义了一组公共的调用方法。这使得 LCEL 对象链也 自动支持这些调用成为可能。

#(分步调用) prompt_text = prompt.invoke({"topic": "猫"}) # 方法1 model_out = model.invoke(prompt_text) # 方法2 result = parser.invoke(model_out) # 方法3 #(LCEL管道式) chain = prompt | model | parser # 用管道符组合 result = chain.invoke({"topic": "猫"}) # 所有组件统一用invoke

主要实现类

LangChain中几乎所有核心组件都实现了Runnable接口

from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import PromptTemplate from langchain_openai import ChatOpenAI llm = ChatOpenAI( api_key="", base_url="https://api.baichuan-ai.com/v1", model="Baichuan3-Turbo" ) template="桌子上有{number}个苹果,4个桃子,3本身,一共有多少个水果" prompt = PromptTemplate.from_template(template) chain = prompt | llm | StrOutputParser() #invoke # resp = chain.invoke({"number": 4}) # print(resp) #stream for chunk in chain.stream({"number": 4}): print(chunk)
http://www.jsqmd.com/news/471945/

相关文章:

  • 解锁Jellyfin命令行终极武器:5大效率工具打造个人媒体中心革命
  • 医疗语音录入助手:SenseVoice-Small ONNX模型问诊记录转写应用
  • Web组件开发终极指南:如何快速构建自定义元素
  • Qwen2.5-VL 3D定位技术深度解析:从空间感知到行业变革的实战指南
  • Qwen1.5-1.8B-Chat-GPTQ-Int4多场景:新能源车企用户评论情感聚类与归因分析
  • Qwen3-0.6B-FP8部署案例:律师事务所合同关键条款提取与风险提示助手
  • React Native视频播放终极指南:从入门到精通完整教程
  • NAT44/NAT64/NAT66 之间的原理、区别与在真实应用场景
  • cv_resnet50_face-reconstruction从部署到集成:Flask API封装与前端Web界面联调教程
  • Fish Speech 1.5效果展示:医疗科普语音+法律条文朗读专业语调还原
  • PhpSpreadsheet内存优化终极指南:高效处理大型Excel文件的完整方案
  • AutoSar平台OS模块详解及配置
  • Qwen3-Reranker-0.6B环境部署:无需conda/pip依赖,Docker镜像开箱即用
  • 新手必学:邮件系统安全基础
  • ChatGLM3-6B内存优化:减少重复加载的缓存策略详解
  • SmolVLA GPU算力优化:XFORMERS_FORCE_DISABLE_TRITON作用详解
  • GPIO Service
  • 2026年不锈钢电磁加热器/电磁预热机/电磁采暖炉厂家推荐:工业电磁加热节能解决方案专业供应商 - 品牌推荐官
  • 如何实现32k上下文?Qwen2.5-0.5B长文本处理教程
  • GPT-OSS与企业微信集成:内部助手部署实战
  • 十五冶 × 易知微:打造“数字矿山分身”,实景孪生实现全域智控
  • Spark 集群搭建
  • Linux——TCP通信
  • ccmusic-database行业应用:广播电台节目自动分段并标记背景音乐流派
  • 2026年集装袋知名厂家排名公布,来样定制吨包集装袋靠谱吗 - 工业品网
  • VScode完整的跨平台适配方案
  • docker快速部署kafka
  • 2026年安徽马鞍山小程序制作靠谱的公司推荐 - 工业设备
  • JavaScript-原型链结构图
  • 盘点2026年兰州热门装修公司,楚邦装饰客户评价好不好,价格贵吗? - mypinpai