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

【LangChain入门 6 Chain组件】单链和多链

一、单链

1.1 LCEL的语法

| 为关键字,使用 | 作为链接符号

from langchain_core.output_parsers import StrOutputParser
from langchain_ollama import ChatOllama
llm = ChatOllama( model="deepseek-r1:7b")
parser = StrOutputParser() # 加了这段后,会讲Chunk类转化成字符串,也就是获取Chunk类中的content内容

chain = prompt | llm | parser  # 使用LCEL语法创建链
response = chain.invoke({"input":"宠物"})
print(response)

1.2 LLMChain

LLMChain 是 LangChain 中最基本且最常用的链式结构,广泛应用于 LangChain 的其他复杂链和代理程序中。它由以下两个主要部分组成:

  • PromptTemplate:用于定义提示模板,将用户输入动态格式化为语言模型能够理解的提示。
  • 语言模型(LLM 或聊天模型):用于处理格式化后的提示,并生成响应。
from langchain.chains import LLMChain
from langchain_core.prompts import ChatPromptTemplate

# 1 实例化模型
llm = ChatOllama( model="deepseek-r1:7b")
# 2 定义模板
prompt = ChatPromptTemplate.from_template("给我取一个关于{input}的店名")

# 3 构建Chain,将大模型与prompt组合在一起
chain = LLMChain(prompt=prompt, llm=llm)

# 4 执行Chain
response = chain.invoke({"input":"宠物"})
print(response)

input_list = [{"input":"宠物"}, {"input":"鲜花"}]
response = chain.apply(input_list) # 批量输出

三、多链组装

将多个链条融合在一起

LangChain 提供了强大的多链功能,允许用户通过组合多个链(Chain)来实现复杂的任务。这些链可以按顺序执行,也可以并行执行,从而实现高效的模型协作和协调

  1. 串联多个链(Sequential Chains)
    通过 SimpleSequentialChain 或管道操作符 |,可以将多个链按顺序串联起来。前一个链的输出会自动作为下一个链的输入。
  2. LangChain 支持并行执行多个链,这在需要同时处理多个任务时非常有用
  3. 分支和合并(Branching and Merging) LangChain 支持创建复杂的计算图,允许将一个组件的输出分叉为多个组件的输入,并在后续步骤中合并结
from langchain_ollama import ChatOllama
from langchain_core.prompts import ChatPromptTemplate
from langchain.chains import SimpleSequentialChain, LLMChain

prompt = ChatPromptTemplate.from_template("给我取一个关于{input}的店名")
llm = ChatOllama( model="deepseek-r1:7b")

prompt_second = ChatPromptTemplate.from_template("给我的跑车取一个关于{input}的名字")

first_chain = LLMChain(prompt=prompt, llm=llm) # 创建第一个链
second_chain = LLMChain(prompt=prompt_second, llm=llm)

all_chain = SimpleSequentialChain(chains=[first_chain, second_chain], 
                                  verbose=True)

response = all_chain.invoke({"input":"狗"})

相关文章:

  • 微信小程序的业务域名配置(通过ingress网关的注解)
  • Java 中处理邮件附件:本地文件 vs 在线 URL
  • 产业观察:ASML2025.3.21
  • Git(12)GitLab持续集成(CICD)
  • 用ArcGIS做一张符合环评要求的植被类型图
  • [过程记录] 《分寝室》 一题做法思考
  • 基于springboot的教务系统(源码+lw+部署文档+讲解),源码可白嫖!
  • 《模型思维》第二十三章 “与集体行动有关的问题” 总结
  • LLM之向量数据库Chroma milvus FAISS
  • AI+视频赋能智慧农业:EasyCVR打造全域可视化农场监管平台
  • AI日报 - 2025年3月20日
  • 《Java核心三问:字符串、equals()、hashCode()的隐藏雷区与完美避坑手册》
  • UltraSearch一键直达文件,高效搜索新体验
  • 双指针算法-day14(分组循环)
  • java数据结构之双端对列
  • 力扣刷题——25.K个一组翻转链表
  • 【全国产化主板】解决方案探讨:CPU、FPGA、GPU、AI的融合与优化
  • 【最后203篇系列】020 rocksdb agent
  • 《视觉SLAM十四讲》ch13 设计SLAM系统 相机轨迹实现
  • Neo4j GDS-04-图的中心性分析介绍
  • 在工商局网站如果做注销公告/首页图片点击率如何提高
  • 上海公司查询网站/网络推广优化方案
  • 实验室网站模板/代刷网站推广
  • 做黄色网站被抓了怎么处理/网络服务电话
  • 榆垡网站建设/设计一个公司网站多少钱
  • 百度网站建设公司/指数基金定投技巧