LangChain系列文章
- LangChain 29 调试Debugging 详细信息verbose
- LangChain 30 ChatGPT LLM将字符串作为输入并返回字符串Chat Model将消息列表作为输入并返回消息
- LangChain 31 模块复用Prompt templates 提示词模板
- LangChain 32 输出解析器Output parsers
- LangChain 33: LangChain表达语言LangChain Expression Language (LCEL)
- LangChain 34: 一站式部署LLMs使用LangServe
- LangChain 35: 安全最佳实践深度防御Security
- LangChain 36 深入理解LangChain 表达式语言优势一 LangChain Expression Language (LCEL)
- LangChain 37 深入理解LangChain 表达式语言二 实现prompt+model+output parser LangChain Expression Language (LCEL)
- LangChain 38 深入理解LangChain 表达式语言三 实现RAG检索增强生成 LangChain Expression Language (LCEL)
- LangChain 39 深入理解LangChain 表达式语言四 为什么要用LCEL LangChain Expression Language (LCEL)
- LangChain 40 实战Langchain访问OpenAI ChatGPT API Account deactivated的另类方法,访问跳板机API
- LangChain 41 深入理解LangChain 表达式语言五 为什么要用LCEL调用大模型LLM LangChain Expression Language (LCEL)
- LangChain 42 深入理解LangChain 表达式语言六 Runtime调用不同大模型LLM LangChain Expression Language (LCEL)
- LangChain 43 深入理解LangChain 表达式语言七 日志和Fallbacks异常备选方案 LangChain Expression Language (LCEL)
- LangChain 44 深入理解LangChain 表达式语言八 Runnable接口输入输出模式 LangChain Expression Language (LCEL)
- LangChain 45 深入理解LangChain 表达式语言九 Runnable 调用、流输出、批量调用、异步处理 LangChain Expression Language (LCEL)
- LangChain 46 深入理解LangChain 表达式语言十 Runnable 调用中间状态调试日志 LangChain Expression Language (LCEL)
- LangChain 47 深入理解LangChain 表达式语言十一 Runnable 并行处理 LangChain Expression Language (LCEL)
- LangChain 48 终极解决 实战Langchain访问OpenAI ChatGPT API Account deactivated的另类方法,访问跳板机API
1. 透传数据
通过RunnablePassthrough
传递数据允许保持输入不变或添加额外的键。这通常与RunnableParallel
一起使用,将数据分配给字典中的新键。
单独调用RunnablePassthrough()
将简单地取输入并传递它。
通过assign
调用的RunnablePassthrough(RunnablePassthrough.assign(...))
将获取输入,并将额外传递给assign
函数的参数添加进去。
请参阅下面的示例:
from langchain_core.runnables import RunnablePassthrough
from langchain.prompts import ChatPromptTemplate
from langchain.chat_models import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnableParallel
from dotenv import load_dotenv
load_dotenv()
# from langchain.globals import set_debug
# set_debug(True)
runnable = RunnableParallel(
passed=RunnablePassthrough(),
extra=RunnablePassthrough.assign(mult=lambda x: x["num"] * 3),
modified=lambda x: x["num"] + 1,
)
result = runnable.invoke({"num": 1})
print('result >> ', result)
运行输出
$ python LCEL/runnable_pass_through.py
result >> {'passed': {'num': 1}, 'extra': {'num': 1, 'mult': 3}, 'modified': 2}
在上面的代码中,我们使用了 RunnablePassthrough()
来调用传递的key,所以它简单地传递了 {'num': 1}
。
在第二行,我们使用了 RunnablePastshrough.assign
和一个乘以 3 的 lambda
表达式。在这种情况下,额外的键被设置为 {'num': 1, 'mult': 3}
,这是原始值加上了 mult
键。
最后,我们还在映射中设置了第三个键 modified
,它使用一个 labmda
函数来将一个值加 1 到 num
,这导致了 modified
键的值为 2。
代码
https://github.com/zgpeace/pets-name-langchain/tree/develop
参考
https://python.langchain.com/docs/expression_language/how_to/passthrough