当前位置: 首页 > wzjs >正文

温州市网站建设色盲测试图数字

温州市网站建设,色盲测试图数字,成都网站备案查询,宁波医院通网站建设01. bind 函数用途与使用技巧 在使用 LangChain 开发时,某些场景我们希望在一个 Runnable 队列中调用另一个 Runnable 并传递常量参数,这些参数既非前序 Runnable 的输出,也不是用户输入,而是组件自身的部分参数。此时可以使用 R…

01. bind 函数用途与使用技巧

在使用 LangChain 开发时,某些场景我们希望在一个 Runnable 队列中调用另一个 Runnable 并传递常量参数,这些参数既非前序 Runnable 的输出,也不是用户输入,而是组件自身的部分参数。此时可以使用 Runnable.bind() 传递默认参数。

典型应用场景

  1. 创建 ChatOpenAI 大语言模型构建两条链:
    • 第 1 条链设置 temperature=0.7(确定性输出)
    • 第 2 条链设置 temperature=1.2(创意性输出)
  2. 通过 LLM.bind(temperature=0.7)LLM.bind(temperature=1.2) 设置不同参数

bind() 用于修改 Runnable 底层的默认调用参数,调用时自动传递无需手动输入。适合在构建链时已知参数值的场景。


1.1 动态添加默认调用参数

通过绑定运行时参数实现 LLM 的多场景复用:

import dotenv
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAIdotenv.load_dotenv()prompt = ChatPromptTemplate.from_messages([("system","你正在执行一项测试,请重复用户传递的内容,除了重复其他均不要操作"),("human", "{query}")
])
llm = ChatOpenAI(model="gpt-4o")chain = prompt | llm.bind(stop="world") | StrOutputParser()content = chain.invoke({"query": "Hello world"})print(content)

输出:

Hello

资料推荐

  • 🔗 官方文档参考
  • 💡大模型中转API推荐
  • ✨中转使用教程

1.2 解决 RunnableLambda 多参传递问题

在 LangChain 中,如果要将一个函数变成 Runnable 组件,可以通过 RunnableLambda 函数进行包装。但是封装后,所有的 Runnable 组件的 invoke 函数,调用时,只能传递一个参数(类型不限制),如果原本的函数支持多个参数,并且是必填参数,就会出现报错。
例如:

import randomfrom langchain_core.runnables import RunnableLambdadef get_weather(location: str, unit: str) -> str:"""根据传入的位置+温度单位获取对应的天气信息"""print("location:", location)print("unit:", unit)return f"{location}天气为{random.randint(24, 40)}{unit}"get_weather_runnable = RunnableLambda(get_weather)resp = get_weather_runnable.invoke({"location": "北京", "unit": "摄氏度"})print(resp)

上述代码在执行 invoke 时虽然传递了字典,并且包含了 location 和 unit 两个参数,但是这个参数只会作为唯一的一个值,传递给 get_weather 函数的 location 参数,所以实际上 get_weather 函数接收的参数如下:

{"location": {"location": "北京", "unit": "摄氏度"},"unit": None
}

而使用 bind() 函数绑定添加其他默认调用参数,从而巧妙实现 RunnableLambda 组件实现接收多个参数,修改示例:

import randomfrom langchain_core.runnables import RunnableLambdadef get_weather(location: str, unit: str) -> str:"""根据传入的位置+温度单位获取对应的天气信息"""print("location:", location)print("unit:", unit)return f"{location}天气为{random.randint(24, 40)}{unit}"get_weather_runnable = RunnableLambda(get_weather).bind(unit="摄氏度")resp = get_weather_runnable.invoke("北京")print(resp)

输出内容:

location: {'location': '北京', 'unit': '摄氏度'}
unit: 摄氏度
{'location': '北京', 'unit': '摄氏度'}天气为31摄氏度

资料推荐

  • 🔗 官方文档参考
  • 💡大模型中转API推荐
  • ✨中转使用教程

02 bind 函数运行流程解析

通过上述的案例,可以知道 .bind() 函数是在构建应用的时候添加上对应的默认调用参数,而在 Runnable.bind() 函数的底层,本质上是往 Runnable 的 kwargs 属性添加对应的字段,并生成一个新的 Runnable,当 Runnable 组件执行调用时(invoke、ainvoke、stream、astream、batch、abatch等),会自动将 kwargs 字段里的所有参数合并并覆盖默认调用参数。

从而完成动态添加默认调用参数的效果,Runnable.bind() 的实现原理:

  1. 在构建时向 Runnable 的 kwargs 属性添加字段
  2. 调用时自动合并覆盖默认参数
  3. 生成携带新参数的新 Runnable 实例

运行流程为:在这里插入图片描述

注意事项
虽然 .bind() 是所有 Runnable 共有的方法,但是并不是所有的 Runnable 组件都支持绑定默认调用参数,部分组件底层并没有默认调用参数的概念,例如 PromptTemplate 底层的 invoke 方法,并没有使用到 .bind() 的逻辑。

# langchain_core/prompts/base.py -> BasePromptTemplate
def invoke(self, input: Dict, config: Optional[RunnableConfig] = None
) -> PromptValue:config = ensure_config(config)if self.metadata:config["metadata"] = {**config["metadata"], **self.metadata}if self.tags:config["tags"] = config["tags"] + self.tagsreturn self._call_with_config(self._format_prompt_with_error_handling,input,config,run_type="prompt",)

"

http://www.dtcms.com/wzjs/300042.html

相关文章:

  • 做网站分为哪几个岗位最近新闻热点
  • 手机网站 普通网站网络推广员是干什么的
  • 免费网站制作新闻百度怎样发布信息
  • 网站开发公司怎么找客户万能搜索引擎网站
  • 网站建设的课程设计微商软文范例大全100
  • 做购物平台网站客户体验活动中国域名网官网
  • 网络代理工具免费广州网络优化最早的公司
  • 哪儿能做网站建设seo网站首页推广
  • 移动网站和桌面网站区别热点新闻事件今日最新
  • 分销平台网站建设合肥做网站哪家好
  • 手机商城网站建设百度指数如何分析
  • 网站前台界面模板下载seo关键词搜索和优化
  • 手机在线做ppt的网站有哪些问题新网域名
  • wordpress 新变量揭阳市seo上词外包
  • 免费网站可以做cpa营销软文300字
  • 怎么样在公司配置服务器做网站如何做一个网站的seo
  • 国外wordpress移动主题上海专业seo服务公司
  • 网上做论文的网站有哪些免费的seo优化
  • 企业管理类的网站关键词优化公司
  • 深圳网站建设哪家最好石家庄seo推广
  • 门户网站那个程序比较优化网站快速排名软件
  • 网站建设公司特色产品销售方案与营销策略
  • 网站改版 域名网店推广方案范文
  • 百度为什么不收录网站的某个版块武汉网站seo德升
  • 做美食网站的优势揭阳百度快照优化排名
  • 江门网站建设自助建站谷歌sem
  • 软件营销网站建设搜索引擎排名优化建议
  • 佛山顺德网站建设公司日本粉色iphone
  • 网站的点击率怎么查网站模板定制
  • 江都网站制作什么叫口碑营销