Langchain 的 LLMChain
Langchain 的 LLMChain
- 1. 开始使用
- 运行 LLM 链的其他方式
- 解析输出
- 从字符串初始化
LLMChain 是一个简单的链,它围绕语言模型添加了一些功能。它在整个LangChain中广泛使用,包括在其他链和代理中。
LLMChain 由 PromptTemplate 和语言模型(LLM 或聊天模型)组成。它使用提供的输入键值(以及内存键值,如果可用)格式化提示模板,将格式化的字符串传递给 LLM 并返回 LLM 输出。
1. 开始使用
示例代码,
import os
import openaifrom dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file
os.environ['OPENAI_API_KEY'] = os.environ['OPENAI_API_KEY']
os.environ['OPENAI_API_BASE'] = os.environ['OPENAI_API_BASE']
openai.api_key = os.environ['OPENAI_API_KEY']
openai.api_base = os.environ['OPENAI_API_BASE']import warnings
warnings.filterwarnings('ignore')
from langchain import PromptTemplate, OpenAI, LLMChainprompt_template = "对于一家生产{产品}的公司来说,取一个什么中文名字好?只需回复一个答案。"llm = OpenAI(temperature=0)
llm_chain = LLMChain(llm=llm,prompt=PromptTemplate.from_template(prompt_template)
)
llm_chain("彩色袜子")
输出结果,
{'产品': '彩色袜子', 'text': '\n\n彩趣袜业'}
运行 LLM 链的其他方式
除了所有 Chain 对象共享的 call 和 run 方法之外, LLMChain 还提供了几种调用链逻辑的方法:
apply 允许您针对输入列表运行链:
示例代码,
input_list = [{"产品": "袜子"},{"产品": "计算机"},{"产品": "鞋"}
]llm_chain.apply(input_list)
输出结果,
[{'text': '\n\n袜袜家'}, {'text': '\n\n计算之星'}, {'text': '\n\n鞋之家'}]
generate 与 apply 类似,只是它返回 LLMResult 而不是字符串。 LLMResult 通常包含有用的生成,例如令牌用法和完成原因。
llm_chain.generate(input_list)
输出结果,
LLMResult(generations=[[Generation(text='\n\n袜袜家', generation_info={'finish_reason': 'stop', 'logprobs': None})], [Generation(text='\n\n计算之星', generation_info={'finish_reason': 'stop', 'logprobs': None})], [Generation(text='\n\n鞋之家', generation_info={'finish_reason': 'stop', 'logprobs': None})]], llm_output={'token_usage': {'prompt_tokens': 198, 'total_tokens': 227, 'completion_tokens': 29}, 'model_name': 'text-davinci-003'}, run=[RunInfo(run_id=UUID('4c04d0ca-c183-4723-a1ad-8949ec0a67c9')), RunInfo(run_id=UUID('c581efac-f58d-447d-a7d7-df84088987db')), RunInfo(run_id=UUID('932ab858-8eda-494d-91b4-8f75dbfa1096'))])
predict 与 run 方法类似,只不过输入键被指定为关键字参数而不是 Python 字典。
# 单个输入示例
llm_chain.predict(产品="彩色袜子")
输出结果,
'\n\n彩趣袜业'
# 多个输入示例template = """告诉我一个关于{主题}的{形容词}笑话。"""
prompt = PromptTemplate(template=template, input_variables=["形容词", "主题"])
llm_chain = LLMChain(prompt=prompt, llm=OpenAI(temperature=0))llm_chain.predict(形容词="悲伤", 主题="鸭子")
输出结果,
'\n\n一只鸭子在湖边游泳,突然发现自己被困在了一个漩涡里,它拼命地挣扎,但是没有用,它只能眼睁睁地看着自己被淹死。这时,一只鹅飞过来,看到了这一幕,它对鸭子说:“别担心,我会帮你!”于是,鹅用它的嘴巴把鸭子吸出了漩涡,鸭子很感激'
解析输出
默认情况下,即使底层 prompt 对象具有输出解析器, LLMChain 也不解析输出。如果您想在 LLM 输出上应用该输出解析器,请使用 predict_and_parse 而不是 predict 和 apply_and_parse 而不是 apply 。
对于 predict :
from langchain.output_parsers import CommaSeparatedListOutputParseroutput_parser = CommaSeparatedListOutputParser()
template = """列出彩虹中的所有颜色"""
prompt = PromptTemplate(template=template, input_variables=[], output_parser=output_parser)
llm_chain = LLMChain(prompt=prompt, llm=llm)llm_chain.predict()
输出结果,
'\n\n红色、橙色、黄色、绿色、青色、蓝色、紫色'
对于 predict_and_parser :
llm_chain.predict_and_parse()
输出结果,
['红色、橙色、黄色、绿色、青色、蓝色、紫色']
# 英文的输出结果
# ['Red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet']
从字符串初始化
您还可以直接从字符串模板构造LLMChain。
template = """告诉我一个关于{主题}的{形容词}笑话。"""
llm_chain = LLMChain.from_string(llm=llm, template=template)
llm_chain.predict(形容词="悲伤", 主题="鸭子")
输出结果,
'\n\n一只鸭子在湖边游泳,突然发现自己被困在了一个漩涡里,它拼命地挣扎,但是没有用,它只能眼睁睁地看着自己被淹死。这时,一只鹅飞过来,看到了这一幕,它对鸭子说:“别担心,我会帮你!”于是,鹅用它的嘴巴把鸭子吸出了漩涡,鸭子很感激'
完结!
相关文章:
Langchain 的 LLMChain
Langchain 的 LLMChain 1. 开始使用运行 LLM 链的其他方式解析输出从字符串初始化 LLMChain 是一个简单的链,它围绕语言模型添加了一些功能。它在整个LangChain中广泛使用,包括在其他链和代理中。 LLMChain 由 PromptTemplate 和语言模型(LL…...
100天精通Golang(基础入门篇)——第17天:深入解析Go语言中的指针
🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《I…...
第七章:WILDCAT: 弱监督学习的深度卷积神经网络用于图像分类、点位定位和分割
0.摘要 本文介绍了WILDCAT,一种深度学习方法,它旨在通过对齐图像区域来获得空间不变性和学习强烈局部化特征。我们的模型仅使用全局图像标签进行训练,并致力于三个主要的视觉识别任务:图像分类、弱监督的逐点对象定位和语义分割。…...
Axios-post请求下载文件
场景背景 1.一般来说,都是使用get请求后台接口,如此后台返回文件流于浏览器,则可直接下载。 2.那么除一般情况,就有特殊情况,比如你的请求接口参数特别长,此时便不可使用get请求,get请求的参数…...
视频增强技术-对比度增强
在图像处理中,由于获取的图像质量不好,需要通过对比度增强来提升图片质量,主要解决的是由于图像灰度级范围较小造成的对比度较低的问题,作用是使图像的灰度级范围放大,从而让图像更加清晰。主要对比度增强方法包括线性…...
uni-app点击按钮弹出提示框(以弹窗的形式显示),选择确定和取消
学习目标: 学习目标如下所示: uni-app点击提交按钮后弹出提示框,(以弹窗的形式显示),提示用户是否确认提交(即确定和取消),点击确定后调用真正的提交方法,将数据传给后端…...
linux部署es+kibana
部署kibana与es 3.4.1、拷贝文件 首先把elasticsearch-7.3.1-linux-x86_64.tar.gz 和kibana-7.3.1-linux-x86_64.tar.gz拷贝到linux上,比如我是拷贝/usr/local 目录下 3.4.2、解压文件 然后分别执行tar -zxvf elasticsearch-7.3.1-linux-x86_64.tar.gz和tar -zx…...
二十三种设计模式第十七篇--迭代子模式
迭代子模式是一种行为型设计模式,它允许你按照特定方式访问一个集合对象的元素,而又不暴露该对象的内部结构。迭代子模式提供了一种统一的方式来遍历容器中的元素,而不需要关心容器的底层实现。 该模式包含以下几个关键角色: 迭…...
《零基础入门学习Python》第056讲:论一只爬虫的自我修养4:网络爬图
今天我们结合前面学习的知识,进行一个实例,从网络上下载图片,话说我们平时闲来无事会上煎蛋网看看新鲜事,那么,熟悉煎蛋网的朋友一定知道,这里有一个 随手拍 的栏目,我们今天就来写一个爬虫&…...
23.7.26总结(博客项目)
接下来要完成: 从主页面点击进入时,通过作者id从数据库查找作者的nickname点击文章收藏(需要有收藏列表)首页还要加最新发布,点赞收藏最多作者名得改成文章作者(通过user_id从user表中拿数据)消…...
安全第一天
1. 编码 1.1 ASCLL编码 ASCII 是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。 1.2 URL编码 URL:(统一资源定位器、定位地址,俗称网页…...
SpringCloud学习路线(12)——分布式搜索ElasticSeach数据聚合、自动补全、数据同步
一、数据聚合 聚合(aggregations): 实现对文档数据的统计、分析、运算。 (一)聚合的常见种类 桶(Bucket)聚合: 用来做文档分组。 TermAggregation: 按照文档字段值分组…...
cloudstack的PlugNicCommand的作用
PlugNicCommand是CloudStack中的一个命令,用于将一个网络接口卡(NIC)插入到虚拟机实例中。它的作用是将一个已存在的NIC连接到指定的虚拟机,以扩展虚拟机的网络功能。 具体来说,PlugNicCommand可以完成以下几个步骤&a…...
LT9211C 是一款MIPI/RGB/2PORT LVDS互转的芯片
LT9211C 1.描述: Lontium LT9211C是一个高性能转换器,可以在MIPI DSI/CSI-2/双端口LVDS和TTL之间相互转换,除了24位TTL到24位TTL,并且不推荐同步和DE的2端口10位LVDS和24位TTL之间的转换。LT9211C反序列化输入的MIPI/LVDS/TTL视…...
【Rust 基础篇】Rust 通道(Channel)
导言 在 Rust 中,通道(Channel)是一种用于在多个线程之间传递数据的并发原语。通道提供了一种安全且高效的方式,允许线程之间进行通信和同步。本篇博客将详细介绍 Rust 中通道的使用方法,包含代码示例和对定义的详细解…...
学习 C语言第二天 :C语言数据类型和变量(下)
目录: 1.变量的介绍以及存储 2.算术操作符、赋值操作符、单目操作符 3.scanf和printf的介绍 1.变量的介绍以及存储 1.1.变量的创建 了解了什么是类型了,类型是用来创建变量的。 变量是什么呢?在C语言当中不经常变的量称为常量,经常…...
【Kubernetes资源篇】ingress-nginx最佳实践详解
文章目录 一、Ingress Controller理论知识1、Ingress Controller、Ingress简介2、四层代理与七层代理的区别3、Ingress Controller中封装Nginx,为什么不直接用Nginx呢?4、Ingress Controller代理K8S内部Pod流程 二、实践:部署Ingress Control…...
Java基础阶段学习哪些知识内容?
Java是一种面向对象的编程语言,刚接触Java的人可能会感觉比较抽象,不要着急可以先从概念知识入手,先了解Java,再吃透Java,本节先来了解下Java的基础语法知识。 对象:对象是类的一个实例,有状态…...
【HISI IC萌新虚拟项目】ppu整体uvm验证环境搭建
关于整个虚拟项目,请参考: 【HISI IC萌新虚拟项目】Package Process Unit项目全流程目录_尼德兰的喵的博客-CSDN博客 前言 本篇文章完成ppu整体uvm环境搭建的指导,在进行整体环境搭建之前,请确认spt_utils、cpu_utils和ral_model均已经生成。此外,如果参考现在的工程目录…...
图像处理之hough圆形检测
hough检测原理 点击图像处理之Hough变换检测直线查看 下面直接描述检测圆形的方法 基于Hough变换的圆形检测方法 对于一个半径为 r r r,圆心为 ( a , b ) (a,b) (a,b)的圆,我们将…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
