前言
这一次 , 整理 LECL 常用 api(旧 api 舍弃) , 如果开发需要用到的 api 不在下面文中的范围的 , 可以到下面网址中查找
- js.langchain.ac.cn/docs/how_to… (中文-推荐)
- js.langchain.com/docs/introd… (英文-推荐)
环境配置
首先你必须有 : deno + jupyter 环境
参考我之前的文章 : deno+Jupyter Notebook😀 | js也可以和python玩交互式🤔
之后我统一配置引入的包
deno.json 配置
{
"imports": {
"lodash": "npm:/lodash@4.17.21",
"dotenv": "https://deno.land/std@0.220.0/dotenv/mod.ts",
"langchain": "npm:/langchain@0.1.28",
"langchain/": "npm:/langchain@0.1.28/",
"@langchain/openai": "npm:/@langchain/openai@0.0.22",
"@langchain/openai/": "npm:/@langchain/openai@0.0.22/",
"@langchain/core": "npm:/@langchain/core@0.1.48",
"@langchain/core/": "npm:/@langchain/core@0.1.48/"
},
"deno.enable": true
}
建立.env 文件 , 从环境变量中读取秘钥和中转路径
常用 api
速览
invoke
- 调用方式:它是用于
Runnable
对象的基础调用方法,通过在对应的Runnable
实例后面使用.
操作符来调用,例如:runnableInstance.invoke(inputParameters)
,其中runnableInstance
就是一个具体的Runnable
对象,而inputParameters
则是根据该对象要求传入的相应参数。 - 功能特点:执行单个参数集的操作,通常等待操作完成并返回最终结果,适用于简单的、一次性的任务执行场景,比如向语言模型发起一次提问并获取完整回答的情况。
batch
- 调用方式:同样是作用于
Runnable
对象,也是借助.
操作符来调用,像runnableInstance.batch(batchInputParameters)
。这里的runnableInstance
为Runnable
对象,batchInputParameters
是一组参数的集合,往往是多个符合输入要求的参数组组成的数组形式。 - 功能特点:支持批量传入多组参数,能一次性对多组输入执行对应的
Runnable
操作,适合同时处理多个相似任务的场景,例如批量向语言模型发送多个不同的提问,然后统一获取所有问题对应的回答结果,提高执行效率,减少多次单个调用带来的开销。
stream
- 调用方式:通过
.
操作符在Runnable
对象上调用,即runnableInstance.stream(inputParameters)
,输入合适的参数后,以流的形式返回相关数据。 - 功能特点:它的独特之处在于返回的数据是以流的方式呈现,在执行过程中不是等待整个操作全部完成才返回结果,而是可以逐步返回中间产生的数据,比如在语言模型生成文本回复时,能够实时获取逐字、逐句或者按一定数据块生成的内容,便于实时展示或者进行其他实时处理,常用于需要实时反馈的交互场景中。
withFallbacks
- 调用方式:作为任何
Runnable
对象都有的函数,可以这样使用,例如runnableInstance.withFallbacks(fallbackConfigs)
,其中fallbackConfigs
一般包含了备用Runnable
对象等配置信息,用于定义备用策略。 - 功能特点:提供了一种容错机制,通过创建具有容错、备用策略的可运行对象序列,当主
Runnable
在执行过程中出现故障(像网络问题、服务不可用等原因导致无法正常返回结果)时,能够自动切换到备用的Runnable
对象继续执行任务,尽力保障整个操作流程不会因为某个环节的问题而完全失败,增强了系统的可靠性和稳定性,在依赖外部服务(如不同的语言模型 API)的场景中应用价值较大。
实战
invoke
invoke
通常用于单个参数的简单调用执行
batch
batch
用于批量传入多组参数进行调用,比如同时向语言模型发送多个不同的提问等情况:
stream
stream
接口以流的方式返回数据,常用于需要逐步获取结果的场景,比如实时展示语言模型生成回复的内容片段等情况。在Langchain.js
中,部分模块支持流式响应,以下是一个简单示例(注意不同模块对流式的具体实现细节和支持情况可能有差异):
下面就是大模型 , 一个一个字蹦出来 , 就是"流"的形式
由于 jupyter notebook 有限制 , 部分文字为展现
withFallbacks
在 Langchain.js
(以及更广泛的 LangChain 相关框架概念中),withFallbacks
是一个很有用的机制,通常用于创建具有容错、备用策略的可运行对象(Runnable
)序列
withFallbacks
允许你指定一个主 Runnable
对象以及一个或多个备用(fallback
)Runnable
对象。当主 Runnable
在执行过程中出现故障(例如,由于网络问题、服务不可用等原因导致无法正常返回结果)时,框架会自动尝试使用备用的 Runnable
对象来继续执行任务,以尽量获取有效的结果,避免整个流程完全失败。
使用 Langchain.js
尝试创建两个不同的 ChatOpenAI
实例,一个是 fakeLLM
,一个是 realLLM
,并打算给 fakeLLM
设置备用策略(通过 withFallbacks
),让它在出现问题时可以切换使用 realLLM
来进行调用。
以下结果 , 正常运行
后记
日后使用 langchain 过程中 , 觉得常用的 api , 将会持续更新 ~