langchain学习总结-Runnable组件 bind 函数

Runnable组件 bind 函数

是什么

bind() 是 LangChain 中 Runnable 组件的方法,用于动态添加默认调用参数,在创建 Runnable 实例时预设部分参数值。

有什么用

  • 简化调用:提前绑定固定参数,调用时只需传入变化参数
  • 参数复用:避免每次 invoke 都重复传相同参数
  • 多参场景:解决 RunnableLambda 只能接收单参的问题,通过 bind 预设部分参数
  • 动态覆盖:在链式调用中动态修改 LLM 参数(如 model、temperature 等)

代码示例

示例1:RunnableLambda 预设默认参数

python 复制代码
from langchain_core.runnables import RunnableLambda

def get_weather(location: str, unit: str, name: str) -> str:
    return f"{name}你好,查询到{location}的天气是25度{unit}"

# 绑定 unit 和 name,调用时只需传 location
get_weather_runnable = RunnableLambda(get_weather).bind(unit="摄氏度", name="muxiaoke")

res = get_weather_runnable.invoke("广州")
# 输出: muxiaoke你好,查询到广州的天气是25度摄氏度

示例2:LLM 链式调用中动态覆盖模型参数

python 复制代码
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser

prompt = ChatPromptTemplate.from_messages([("human", "{query}")])
llm = ChatOpenAI(model="moonshot-v1-8k")

# 使用 bind 动态覆盖 model 参数,从 8k 切换到 32k
chain = prompt | llm.bind(model="moonshot-v1-32k") | StrOutputParser()

content = chain.invoke({"query": "你好,你是什么模型,版本号是多少"})
# 实际使用的是 moonshot-v1-32k 模型
相关推荐
不是株2 小时前
零到全栈(让部署更稳、更简单:systemd、Nginx 反向代理与前后端同源)
全栈
前端双越老师4 小时前
程序员 1v1 访谈系列第一期:转行也不会等到失业以后
程序员·agent·全栈
濮水大叔14 小时前
Cabloy 双引擎架构详解:Vona 与 Zova 是如何协作的
typescript·node.js·全栈
全栈Agent 小李1 天前
【无标题】
前端·后端·agent·ai编程·全栈·cursor·mcp
三天不学习2 天前
Egg.js 4 突然爆火,原因是否归结于AI 原生落地需求爆发?
前端·javascript·全栈·egg.js
濮水大叔2 天前
AI 编码实战:一句提示词,实现 CRUD、SSR 与多任务
node.js·ai编程·全栈
SL_staff3 天前
Excel如何自动升级为可搜索的知识节点:JVS文档平台的语义解析实践
开源·github·全栈
白兰地空瓶3 天前
项目要上线了,我连夜学完 Docker:从底层原理到容器化部署全记录
docker·全栈
SL_staff3 天前
3分钟零代码配置带审批流的报销单:JVS三引擎可视化串联实战
spring boot·开源·全栈
泡泡oO4 天前
“如果你还在用Superpowers,那我不要和你说话”
前端·后端·全栈