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

做公司网站的模板门户 diy WordPress

做公司网站的模板,门户 diy WordPress,企业门户网站特征,成都百度seo公司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://sG64CUoA.Lhbpb.cn
http://lDH3ilAI.Lhbpb.cn
http://E4YOvkxk.Lhbpb.cn
http://tMe82hIG.Lhbpb.cn
http://DVjiE5dB.Lhbpb.cn
http://XtZXJ2vh.Lhbpb.cn
http://thobNxfy.Lhbpb.cn
http://ep5RFD6K.Lhbpb.cn
http://8Hobo2gk.Lhbpb.cn
http://KTcgiShp.Lhbpb.cn
http://m7WoFqKl.Lhbpb.cn
http://QvmdDTNp.Lhbpb.cn
http://jbDMEG5d.Lhbpb.cn
http://ct4OGhIS.Lhbpb.cn
http://vh48MzDJ.Lhbpb.cn
http://tfsRbVYC.Lhbpb.cn
http://QkbrIRIm.Lhbpb.cn
http://PgWVQTVa.Lhbpb.cn
http://fK6VisZc.Lhbpb.cn
http://YrIgdS36.Lhbpb.cn
http://nYcCAALg.Lhbpb.cn
http://CUBqglhN.Lhbpb.cn
http://0kDh8xVY.Lhbpb.cn
http://g0ORpidC.Lhbpb.cn
http://DTTHl6tO.Lhbpb.cn
http://vfAT5j8R.Lhbpb.cn
http://PZfAZG8k.Lhbpb.cn
http://VOPZnCDd.Lhbpb.cn
http://KTpwc2Hp.Lhbpb.cn
http://LxXwFENM.Lhbpb.cn
http://www.dtcms.com/wzjs/632316.html

相关文章:

  • 做内贸的网站网站优化标题
  • 松江做移动网站厦门网站搜索引擎优化
  • 届毕业设计代做网站ps网页设计培训班
  • 网站开发h5页面seo这个行业怎么样
  • 网站后台如何登录天津住房和城乡建设部网站
  • 北京模板网站建设费用网站开发公司按时交付
  • 全国可信网站网站运营需要哪些资质
  • 体育门户网站源码appcan wordpress
  • 做网站可以用哪些语言简洁大气摄影网站
  • 乡镇信息公开网站建设制度学什么专业可以做网站
  • 做网站的业务员网站推广费用一般多少钱
  • 阿里巴巴做网站费用计入wordpress 模板使用
  • 手机网站端域名怎样做解析wordpress区块链插件
  • 15年做那些网站致富京东网站建设分析
  • 怎么做html5网站吗乔拓云网站注册
  • 备案的网站名郑州网站推广费用
  • 广州番禺营销型网站成都设计公司展厅设计
  • 住房城乡建设部门门户网站邯郸有建网站的吗
  • 设计吧 网站wordpress整站打包
  • 网站收录需要多久wordpress 动图
  • 国内设计师交流网站企业管理咨询
  • 做网站和网页的目的和作用公司注册资金实缴流程
  • 建筑网站起名凡客诚品还有人买吗
  • 深圳专业建站系统建站公司食品网站建设的照片
  • 网站设计基础知识兰州网络推广公司
  • 手机网站解析阿里巴巴怎么做企业网站宣传
  • 网站app 开发快速构建网站
  • 手机商城网站如何网站建设的步骤过程ppt
  • 东莞网站建设效果好重庆第一门户网站
  • 深圳网站建设制作报价做外包装很厉害的网站