LangChain-v0.2文档翻译:3.12、如何将输入参数从一个链步骤传递到下一个链

如何将参数从一个步骤传递到下一个

在构建包含多个步骤的链时,有时您可能希望将前一步骤的数据原封不动地传递给后续步骤作为输入。RunnablePassthrough类允许您这样做,通常与RunnableParallel一起使用,以便在构建的链中将数据传递到后续步骤。

请看下面的示例:

# 安装LangChain和langchain-openai库
%pip install -qU langchain langchain-openai

import os
from getpass import getpass

# 设置环境变量OPENAI_API_KEY
os.environ["OPENAI_API_KEY"] = getpass()
from langchain_core.runnables import RunnableParallel, RunnablePassthrough

# 创建RunnableParallel实例,使用RunnablePassthrough传递数据
runnable = RunnableParallel(
    passed=RunnablePassthrough(),  # 使用RunnablePassthrough传递数据
    modified=lambda x: x["num"] + 1,  # 使用lambda表达式修改数据
)

# 调用runnable,传递包含数字1的字典
runnable.invoke({"num": 1})
# 输出结果:{'passed': {'num': 1}, 'modified': 2}

#如上所见,'passed’键使用了RunnablePassthrough(),因此它简单地传递了{‘num’: 1}。

#我们还设置了第二个键’modified’,它使用lambda表达式将num的值加1,结果是’modified’键的值为2。

检索示例

在下面的示例中,我们看到一个更实际的用例,其中我们使用RunnablePassthroughRunnableParallel在链中,以正确格式化输入到提示:

from langchain_community.vectorstores import FAISS
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI, OpenAIEmbeddings

# 创建FAISS向量存储实例
vectorstore = FAISS.from_texts(
    ["harrison worked at kensho"], embedding=OpenAIEmbeddings()
)
# 将向量存储转换为检索器
retriever = vectorstore.as_retriever()

# 定义提示模板
template = "Answer the question based only on the following context:\n{context}\n\nQuestion: {question}"
prompt = ChatPromptTemplate.from_template(template)

# 创建ChatOpenAI模型实例
model = ChatOpenAI()

# 构建检索链
retrieval_chain = (
    {"context": retriever, "question": RunnablePassthrough()}
    | prompt
    | model
    | StrOutputParser()
)

# 使用检索链,传递问题"where did harrison work?"
retrieval_chain.invoke("where did harrison work?")
# 输出结果:'Harrison worked at Kensho.'

这里,提示的输入期望是一个包含"context"和"question"键的映射。用户输入只是问题。

因此,我们需要使用检索器获取上下文,并将用户输入传递到"question"键下。

RunnablePassthrough允许我们将用户的问题传递给提示和模型。

总结:

本文介绍了LangChain框架中的RunnablePassthrough类,它允许将数据从一个步骤原封不动地传递到另一个步骤。通过示例代码,我们学习了如何使用RunnablePassthroughRunnableParallel结合使用,以及如何在实际应用中格式化输入到提示。

扩展知识:

LangChain是一个用于构建和执行复杂模型链的框架,它提供了灵活的组件来处理数据流和模型调用。RunnablePassthrough是LangChain中用于数据传递的组件之一,它在构建需要数据连续传递的模型链时非常有用。通过本文的学习,读者可以更好地理解如何在LangChain中构建和使用模型链。

从你的输出来看: ```bash py --list -V:3.12 * Python 3.12 (64-bit) ``` 说明你的系统中已经通过 Python Launcher(`py`)安装了 Python 3.12,并且它已经被标记为默认版本(带 `*` 号)。 接着你运行: ```bash py -3.12 ``` 成功进入了 Python 3.12 的交互式 Shell,说明 Python 已经正确安装并可以正常使用。 --- ### ✅ 当前 Python 环境状态总结: | 项目 | 状态 | |------|------| | Python Launcher (`py`) | ✅ 已安装 | | Python 3.12 | ✅ 已安装 | | 默认版本 | ✅ 设置为 3.12 | | 是否可以使用 pip | ✅ 可以使用(见下方说明) | --- ### 🧪 如何验证 pip 是否可用? 在 CMD 中运行: ```bash py -3.12 -m pip --version ``` 如果输出类似如下内容: ``` pip 24.x.x from C:\Users\xiekehanmu\AppData\Local\Programs\Python\Python312\lib\site-packages\pip (python 3.12) ``` 说明 pip 也已经安装并可用。 --- ### 🛠 使用 pip 安装包的推荐方式 你可以使用如下方式安装包(比如 `MaixPy`): ```bash py -3.12 -m pip install MaixPy ``` 或者使用国内镜像加速安装: ```bash py -3.12 -m pip install MaixPy -i https://pypi.tuna.tsinghua.edu.cn/simple ``` --- ### 📌 建议配置环境变量(可选) 虽然你可以通过 `py` 命令使用 Python,但为了方便使用 `python` 和 `pip` 命令,建议你将 Python 安装路径添加到系统环境变量中: 1. 添加以下路径到 `PATH`: - `C:\Users\xiekehanmu\AppData\Local\Programs\Python\Python312\` - `C:\Users\xiekehanmu\AppData\Local\Programs\Python\Python312\Scripts\` 2. 设置完成后,你可以直接使用: ```bash python --version pip --version ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值