LCEL 接口
为了尽可能简单地创建自定义链,LangChain 提出了“Runnable”标准接口协议。目前,LangChain 中的大多数组件都已实现了 Runnable
协议,用户可以轻松构建自定义链并以标准方式调用它们。其中,标准接口包括:
对应的异步方法:
astream
:异步流式调用ainvoke
:简单异步调用abatch
:批量异步调用astream_log
:除了最终响应之外,同时返回中间步骤astream_events
:链中发生的流事件(在langchain-core
0.1.14 中引入)
各组件的输入类型和输出类型列表如下:
组件 | 输入 | 输出 |
---|---|---|
Prompt | Dictionary | PromptValue |
ChatModel | 单一字符串 / 聊天信息列表 / PromptValue | ChatMessage |
LLM | 单一字符串 / 聊天信息列表 / PromptValue | 字符串 |
OutputParser | LLM / ChatModel 的输出 | 取决于哪个解析器 |
Retriever | 单一字符串 | 文档列表 |
Tool | 单一字符串或字典,取决于哪个 Tool | 取决于哪个 Tool |
所有 runnable 组件都暴露输入和输出 schemas 以检查输入和输出:
input_schema
:从 Runnable 结构自动生成的输入 Pydantic 模型output_schema
:从 Runnable 结构自动生成的输出 Pydantic 模型
Let’s take a look at these methods. To do so, we’ll create a super simple PromptTemplate + ChatModel chain.
下面,我们将创建一个超级简单的 PromptTemplate + ChatModel 链来看看如何使用这些方法。
1 | from langchain_core.prompts import ChatPromptTemplate |
Input Schema
Input Schema 是 Runnable 对象所接收的输入的一个描述,是一个从任何 Runnable 的结构动态生成的 Pydantic 模型,可以调用 .schema()
方法来获取这个 JSON Schema 表示形式。
1 | chain.input_schema.schema() |
Output Schema
可以调用 .schema()
方法来获取这个 JSON Schema 表示形式
1 | chain.output_schema.schema() |
各接口调用方式
1 | # 流式处理 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AGI Explained!
评论