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

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一只鸭子在湖边游泳,突然发现自己被困在了一个漩涡里,它拼命地挣扎,但是没有用,它只能眼睁睁地看着自己被淹死。这时,一只鹅飞过来,看到了这一幕,它对鸭子说:“别担心,我会帮你!”于是,鹅用它的嘴巴把鸭子吸出了漩涡,鸭子很感激'

完结!

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

相关文章:

  • 100天精通Golang(基础入门篇)——第17天:深入解析Go语言中的指针
  • 第七章:WILDCAT: 弱监督学习的深度卷积神经网络用于图像分类、点位定位和分割
  • Axios-post请求下载文件
  • 视频增强技术-对比度增强
  • uni-app点击按钮弹出提示框(以弹窗的形式显示),选择确定和取消
  • linux部署es+kibana
  • 二十三种设计模式第十七篇--迭代子模式
  • 《零基础入门学习Python》第056讲:论一只爬虫的自我修养4:网络爬图
  • 23.7.26总结(博客项目)
  • 安全第一天
  • SpringCloud学习路线(12)——分布式搜索ElasticSeach数据聚合、自动补全、数据同步
  • cloudstack的PlugNicCommand的作用
  • LT9211C 是一款MIPI/RGB/2PORT LVDS互转的芯片
  • 【Rust 基础篇】Rust 通道(Channel)
  • 学习 C语言第二天 :C语言数据类型和变量(下)
  • 【Kubernetes资源篇】ingress-nginx最佳实践详解
  • Java基础阶段学习哪些知识内容?
  • 【HISI IC萌新虚拟项目】ppu整体uvm验证环境搭建
  • 图像处理之hough圆形检测
  • el-upload文件上传(只能上传一个文件且再次上传替换上一个文件) vue3+vite+ts
  • 随手笔记——根据点对来估计相机的运动综述
  • ip校园广播音柱特点
  • 用 Node.js 手写 WebSocket 协议
  • Xilinx AXI VIP使用教程
  • mysql主主架构搭建,删库恢复
  • pythonweek1
  • 进程虚拟地址空间区域划分
  • OpenAI Code Interpreter 的开源实现:GPT Code UI
  • macOS Ventura 13.5 (22G74) 正式版发布,ISO、IPSW、PKG 下载
  • Electron 主进程和渲染进程传值及窗口间传值