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

第四章:大模型(LLM)】06.langchain原理-(2)langchain Chain的使用方法

第四章:大模型(LLM)

第六部分:langchain原理

第二节:langchain Chain的使用方法


1. 什么是 Chain?

在 LangChain 中,Chain 是将一个或多个组件(模型、工具、Prompt 等)按顺序组合起来的执行流程。
它的作用类似于一个“流水线”,输入数据后,经过多个处理步骤,得到最终的输出。

  • 优点

    • 将复杂的任务拆分为多个可复用的步骤

    • 方便调试和扩展

    • 可以嵌套使用(Chain 里可以再套 Chain)


2. Chain 的常见类型

LangChain 提供了几种常见的 Chain:

Chain 类型作用示例场景
SimpleSequentialChain简单串联多个 Chain,输出直接作为下一个 Chain 的输入问题翻译 → 问答
SequentialChain支持多个输入输出字段的串联多任务并行处理
LLMChain用 LLM 执行特定 Prompt 模板的单步骤任务问答、文本生成
RouterChain根据输入自动选择不同的子 Chain多领域问答路由
RetrievalQA结合检索器(Vector Store)做问答基于知识库的搜索问答

3. 基本使用示例

以下是一个使用 LLMChain 的简单示例:

from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain# 定义 LLM
llm = OpenAI(temperature=0)# 定义 Prompt 模板
prompt = PromptTemplate(input_variables=["topic"],template="请写一首关于 {topic} 的短诗"
)# 创建 Chain
chain = LLMChain(llm=llm, prompt=prompt)# 运行
result = chain.run("人工智能")
print(result)

说明

  • PromptTemplate 用来定义输入和输出格式

  • LLMChain 结合 LLM 和 Prompt 模板

  • .run() 方法直接执行 Chain


4. 多步骤 Chain 示例

使用 SimpleSequentialChain 串联两个步骤:翻译 → 总结

from langchain.chains import SimpleSequentialChain# 第一步:英文翻译
translate_chain = LLMChain(llm=llm,prompt=PromptTemplate(input_variables=["text"],template="将以下内容翻译成英文:{text}")
)# 第二步:英文摘要
summary_chain = LLMChain(llm=llm,prompt=PromptTemplate(input_variables=["text"],template="请用一句话总结以下内容:{text}")
)# 串联
overall_chain = SimpleSequentialChain(chains=[translate_chain, summary_chain])# 执行
print(overall_chain.run("人工智能正在改变世界"))

5. Chain 调试技巧

  • 打印中间结果verbose=True 可以输出每个步骤的结果

  • 自定义输入输出字段SequentialChain 允许命名输入输出字段,方便多个步骤传递数据

  • 结合 Memory:可以让 Chain 记住之前的对话上下文


6. 典型应用场景

  1. 数据清洗 + 分析

  2. 问答前的上下文检索

  3. 多语言翻译与总结

  4. 自动化内容生成


7. 流程图:LangChain Chain 工作原理

下面是一个 连接线清晰 的示意图(LLMChain + SimpleSequentialChain 结构):

[ 用户输入 ] │▼
[ PromptTemplate #1 ] → [ LLM ] → (输出结果1)│▼
[ PromptTemplate #2 ] → [ LLM ] → (最终输出)

http://www.dtcms.com/a/333748.html

相关文章:

  • 力扣top100(day04-03)--二分查找
  • MqSQL中的《快照读》和《当前读》
  • [论文笔记] WiscKey: Separating Keys from Values in SSD-Conscious Storage
  • Linux core dump
  • Flutter开发 webview_flutter的基本使用
  • MC0423铺砖块
  • Linux系统编程—Linux基础指令
  • OpenCV Python——图像查找(特征匹配 + 单应性矩阵)
  • Linux软件编程(五)(exec 函数族、system、线程)
  • SQL:生成日期序列(填补缺失的日期)
  • 磁悬浮轴承“幽灵振动”克星:深度解析同频振动机理与精准打击策略
  • 优先级反转问题
  • [Python 基础课程]根据描述定义一个 Person 类
  • 关注与优化:用于骨龄评估的交互式关键点定位与颈椎定量分析|文献速递-深度学习人工智能医疗图像
  • Go语言中的指针接收者
  • 语音活动检测VAD技术简介
  • 崩溃大陆2 送修改器 PC/手机双端(Crashlands2)免安装中文版
  • Fanuc机器人EtherCAT通讯配置详解
  • 思科应用中心基础设施(ACI)设计指南
  • Redis面试精讲 Day 22:Redis布隆过滤器应用场景
  • 第2篇_Go语言基础语法_变量常量与数据类型
  • Java-JVM是什么JVM的类加载机制
  • 设备 AI 知识库,管理效率新飞跃
  • 安装openmmlab时出错
  • 码上爬第七题【协程+对抗格式化检测+数组移位】
  • Linux搭建ftp服务器
  • 事务的四大特性
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘fairseq’问题
  • ubuntu安装docker
  • Python爬取推特(X)的各种数据