【LangChain】不同的调用方式(Different call methods)

news/2024/11/14 14:21:35/

LangChain学习文档

Chains(链)

【LangChain】不同的调用方式(Different call methods)


概述

本笔记:讲述Chain的不同调用方式。

所有从 Chain 继承的类中都提供了几种运行链逻辑的方法。最直接的方法是使用 __call__
说明:__call__这个是python版中的方法已经实现了。

内容

chat = ChatOpenAI(temperature=0)
prompt_template = "Tell me a {adjective} joke"
llm_chain = LLMChain(llm=chat, prompt=PromptTemplate.from_template(prompt_template))llm_chain(inputs={"adjective": "corny"})

结果:

    {'adjective': 'corny','text': 'Why did the tomato turn red? Because it saw the salad dressing!'}

默认情况下,__call__返回的是键值对:输入和输出。我们可以通过将return_only_outputs设置为True:仅返回输出键值对。

只有一个输出key的情况

如果我们想Chain只输出一个key(即:output_keys中只有一个元素),则可以使用run方法。
请注意:run方法输出一个字符串而不是键值对(或者叫:字典)。

# llm_chain only has one output key, so we can use run
# llm_chain 输出只有一个key的情况下,我们可以使用run方法。
llm_chain.output_keys
# 结果['text']

则,使用run方法:

llm_chain.run({"adjective": "corny"})
# 结果
'Why did the tomato turn red? Because it saw the salad dressing!'

只有一个输入key的情况

在只有一个输入key的情况下,可以直接输入字符串,无需指定输入映射:

# These two are equivalent 这两个是等价的
llm_chain.run({"adjective": "corny"})
llm_chain.run("corny")# These two are also equivalent 这两个也是等价的
llm_chain("corny")
llm_chain({"adjective": "corny"})

结果:

    {'adjective': 'corny','text': 'Why did the tomato turn red? Because it saw the salad dressing!'}

我们可以通过其run方法轻松地将Chain对象作为Tool集成Agent中。请参阅此处的示例。

这里给个理解代码:

tools.append(Tool.from_function(func=llm_math_chain.run,name="Calculator",description="useful for when you need to answer questions about math",args_schema=CalculatorInput# coroutine= ... <- you can specify an async method if desired as well)
)
# Construct the agent. We will use the default agent type here.
# See documentation for a full list of options.
# 集成到了agent中
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
)
agent.run("Who is Leo DiCaprio's girlfriend? What is her current age raised to the 0.43 power?"
)

总结

要调用Chain的方法。

  1. 先构造llm_chain
llm_chain = LLMChain(llm=chat, prompt=PromptTemplate.from_template(prompt_template))
  1. 执行llm_chain(xxx),即可。默认情况下,输入和输出都会打印出来
llm_chain(inputs={"adjective": "corny"})
# 结果{'adjective': 'corny','text': 'Why did the tomato turn red? Because it saw the salad dressing!'}
  1. 单个输出就使用run方法。
  2. 单个输入,可以不用写key:llm_chain("corny")
  3. 单个输入和输出的简写:llm_chain.run("corny")

参考地址:

Different call methods


http://www.ppmy.cn/news/714789.html

相关文章

CrossEntropy(交叉熵损失函数pytorch)

介绍 crossentropy损失函数主要用于多分类任务。它计算了模型输出与真实标签之间的交叉熵损失&#xff0c;可以作为模型优化的目标函数。 在多分类任务中&#xff0c;每个样本有多个可能的类别&#xff0c;而模型输出的是每个样本属于每个类别的概率分布。交叉熵损失函数可以…

惠普暗夜精灵3plus配置ubuntu18.0.4、cuda9.0、cudnn7.0、anaconda(python2.7)、tensorflow-gpu1.8、keras、opencv等

一、ubuntu18.0.4 新的版本内核为22&#xff0c;&#xff0c;安装用u盘启动&#xff0c;分区为&#xff0f;&#xff0c;swap&#xff0c;&#xff0f;boot。桌面版画面更精致&#xff0c;ubuntu图形界面越来越漂亮。自带集成显卡。 二、cuda9.0 先安装显卡驱动&#xff0c;…

上半年结束,下半年继续冲!

前言: 这周直播也把雷神写的Ffmpeg推流器讲解完了&#xff0c;而一同时&#xff0c;一转眼间&#xff0c;2023年已经过半&#xff0c;正式进入了下半年&#xff1a; 因为上半年已经开始在做解析Ffmpeg 最新版本的源码&#xff0c;所以下半年&#xff0c;我会继续坚持讲解Ffmpeg…

Flutter 引入包import的各种含义,及常用命名规范

一、import含义 import dart:xxx; 引入Dart标准库 import xxx/xxx.dart;引入相对路径的Dart文件 import package:xxx/xxx.dart;引入Pub仓库pub.dev&#xff08;或者pub.flutter-io.cn&#xff09;中的第三方库 import package:project/xxx/xxx.dart;引入自定义的dart文件 impo…

基于html的漫画静态网站设计

目 录 摘 要 1 第一章 引言 2 1.1研究背景 2 1.2研究意义 2 第二章 漫画网站设计概述 2 2.1选题的目的和意义 3 2.2课题研究的主要简介 4 第三章 具体实现与分析 4 3.1静态设计 4 3.2站点的建设与收集素材 4 3.2.1创建本地站点的具体操作步骤如下&#xff1a; 4 3.2.2收集素材&…

python接口自动化(十二)--https请求(SSL)(详解)

简介 本来最新的requests库V2.13.0是支持https请求的&#xff0c;但是一般写脚本时候&#xff0c;我们会用抓包工具fiddler&#xff0c;这时候会 报&#xff1a;requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) 小编…

TextMining day1 电力设备运维过程中的短文本挖掘框架

电力设备运维过程中的短文本挖掘框架 III. 短文本挖掘框架的具体设计A. 预处理模块的具体设计B. 数据清洗模块的具体设计C. 表示模块的具体设计D. 数据分析模块的具体设计 IV. 案例研究A. 基于文本分类的缺陷程度判断B. 基于文本检索的缺陷处理决策 V. 结论 预处理 首先&#x…

Agilent/HP 8753D网络分析仪 30kHz-6GHz

性能特点&#xff1a; *频率范围&#xff1a;30kHz&#xff5e;3或6GHz *带有固态转换的集成化S参数测试装置 *达110dB的动态范围 *快的测量速度和数据传递速率 *大屏幕LCD显示器加上供外部监视器用的VGA输出 *同时显示所有4个S参数 *将仪器状态和数据存储/调用到内置软盘驱动…