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

项目开发--大模型--个人问答知识库--chain控制

背景

1、langchain当中的chain = prompt | llm | output_parser这个链能更长吗?

在 LangChain 中,链(chain)可以根据需要变得非常长,并且可以包含多种不同类型的组件。链的目的是将多个步骤串联起来,以便以特定的顺序执行,从而处理复杂的任务。除了 prompt、llm 和 output_parser 之外,你还可以添加更多的步骤,例如:

验证器(Validator): 用于验证 LLM 输出是否符合预期格式或条件。
缓存(Cache): 用于存储和重用之前的 LLM 输出,以提高效率。
重试逻辑(Retry Logic): 如果 LLM 调用失败,则可以自动重试。
后处理(Post-Processing): 对 LLM 输出进行额外的处理,如文本摘要、翻译或数据格式化。
条件逻辑(Conditional Logic): 根据输出决定下一步操作,例如,使用 if-else 逻辑来决定是否需要进一步处理。
数据存储(Data Storage): 将 LLM 的输出保存到数据库或其他存储系统中。
通知(Notification): 在处理完成后发送通知,例如发送电子邮件或短信。

from langchain_core import PromptTemplate, LLM, StrOutputParser
from langchain_core.validators import TextLengthValidator
from langchain_core.cache import SimpleCache
from langchain_core.post_processors import TextSummarizer
from langchain_core.notifiers import EmailNotifier# 创建 Prompt
prompt_template = "Please answer the following question: {question}"
prompt = PromptTemplate.from_template(prompt_template)# 初始化语言模型
llm = LLM(model="gpt-3.5-turbo", api_key="your-api-key")# 创建 OutputParser
output_parser = StrOutputParser()# 创建 Validator
validator = TextLengthValidator(min_length=10, max_length=1000)# 创建 Cache
cache = SimpleCache()# 创建 Post-Processor
post_processor = TextSummarizer()# 创建 Notifier
notifier = EmailNotifier()# 构建更长的 Chain
chain = (prompt| llm| cache  # 先检查缓存| output_parser| validator  # 验证输出| post_processor  # 后处理| notifier  # 发送通知
)# 调用 Chain
response = chain.invoke({"question": "What is the capital of France?"})
print(response)

在这个例子中,链不仅包括了提示、模型调用和输出解析,还加入了缓存检查、输出验证、文本摘要和通知发送。这样的链可以非常灵活和强大,能够处理各种复杂的工作流。

记住,链中的每个组件都应该实现 Runnable 接口,并且具有 invoke 方法,这样才能确保它们可以被串联起来执行。

http://www.lryc.cn/news/456147.html

相关文章:

  • STM32—SPI通讯协议
  • Android 安装过程五 MSG_INSTALL消息的处理 安装
  • 大数据开发--1.3 Linux的常用命令大全
  • 使用PuTTY连接到Amazon Linux实例
  • Nexus搭建maven私有仓库
  • 留存率的定义与SQL实现
  • Java的锁机制详解
  • 用户登录与信息管理:实现小程序登录与用户信息存储
  • Java如何调用构造函数和方法以及使用
  • TFBoys谁最重
  • scp 通过中间机器进行远程拷贝
  • 探索 Python 高精度计算的奥秘:mpmath 库全解析
  • <<迷雾>> 第10章 用机器做一连串的加法(1)--使用两排开关分别给出被加数和加数 示例电路
  • Stable Diffusion最新版nowebui的api使用详解
  • 云服务器架构详解:X86计算_ARM_GPU/FPGA/ASIC_裸金属_超级计算集群
  • 高级java每日一道面试题-2024年10月4日-数据库篇-MySQL索引底层结构为什么使用B+树?
  • 【JVM】内存分析工具JConsole/Visual VM
  • 一静 、二平 、三忍 、四让、五淡
  • js 深入理解函数(一):函数的本质
  • MySql表结构设计
  • java:pdfbox 3.0 去除扫描版PDF中文本水印
  • python知识点100篇系列(17)-替换requests的python库httpx
  • python 实现graph list图列算法
  • LFU算法 初始频率 动态频率
  • Spring Boot 进阶-详解SpringBoot的复杂数据校验规则
  • wsl环境下安装Ubuntu,并下载MySQL5.7
  • 倪师学习笔记-天纪-01
  • 深入理解缓存穿透、缓存击穿和缓存雪崩
  • 【玩转动态规划专题】70. 爬楼梯【简单】
  • 前端开发设计模式——组合模式