数据传递
RunnablePassthrough 允许不改变或添加额外的键来传递输入。这通常与 RunnableParallel 结合使用,将数据分配给映射中的新键。
RunnablePassthrough() 单独调用,将简单地获取输入并将其传递。
使用分配 ( RunnablePassthrough.assign(…) ) 调用的 RunnablePassthrough 将获取输入,并将添加传递给分配函数的额外参数。
from langchain_core.runnables import RunnableParallel, RunnablePassthrough
runnable = RunnableParallel(
passed=RunnablePassthrough(),
extra=RunnablePassthrough.assign(mult=lambda x: x["num"] * 3),
modified=lambda x: x["num"] + 1,
)
runnable.invoke({
"num": 1})
# 输出结果:{'passed': {'num': 1}, 'extra': {'num': 1, 'mult': 3}, 'modified': 2}
如上所示, passed 键是用 RunnablePassthrough() 调用的,因此它只是传递 {‘num’: 1} 。
在第二行中,我们使用 RunnablePastshrough.assign 和一个将数值乘以 3 的 lambda。在这种情况下, extra 设置为 {‘num’: 1, ‘mult’: 3} ,这是原始的添加了 mult 键的值。
最后,我们还在映射中使用 modified 设置了第三个键,它使用 lambda 来设置单个值,在 num 上加 1,从而得到 modified 键,其值为 < b2> 。
运行自定义函数
可以在管道中使用任意函数。
请注意,这些函数的所有输入都必须是单个参数。如果有一个接受多个参数的函数,则应该编写一个接受单个输入并将其解包为多个参数的包装器。