如何向Runnable添加默认调用参数

如何向Runnable添加默认调用参数

在使用LangChain进行AI模型开发时,绑定常量参数到Runnable可以简化链式调用过程。本指南将讲述如何在RunnableSequence中为Runnable添加默认参数,尤其是在它们不属于上一个Runnable的输出或用户输入时。我们将使用Runnable.bind()方法来提前设置这些参数。

技术背景介绍

LangChain是一个用于创建复杂AI处理链的库,允许你将多个处理步骤链接在一起。同时,你可以为每个步骤配置默认参数,以提高调用效率,减少手动配置的工作。

核心原理解析

在LangChain中,每个Runnable表示一个可执行的操作步骤,而Runnable.bind()允许我们为这些步骤预先绑定参数。这对于实现复杂的调用场景非常有用,例如绑定停止序列或工具调用。

代码实现演示

绑定停止序列

以下代码展示了如何在模型调用中绑定停止序列以缩短输出:

from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI

# 创建提示模板
prompt = ChatPromptTemplate.from_messages(
    [
        (
            "system",
            "Write out the following equation using algebraic symbols then solve it. Use the format\n\nEQUATION:...\nSOLUTION:...\n\n",
        ),
        ("human", "{equation_statement}"),
    ]
)

# 使用OpenAI模型,设置温度为0以减少输出随机性
model = ChatOpenAI(temperature=0)

# 绑定停止参数,减少输出长度
runnable = (
    {"equation_statement": RunnablePassthrough()}
    | prompt
    | model.bind(stop="SOLUTION")  # 绑定停止序列
    | StrOutputParser()
)

# 调用模型
print(runnable.invoke("x raised to the third plus seven equals 12"))

此代码段通过绑定stop参数,确保模型在生成解决方案时停止输出。

附加OpenAI工具

工具调用是LangChain中另一个常见的使用场景。使用bind_tools()方法可以调用不同的工具:

# 定义工具列表
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_current_weather",
            "description": "Get the current weather in a given location",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city and state, e.g. San Francisco, CA",
                    },
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
                },
                "required": ["location"],
            },
        },
    }
]

# 绑定工具到模型
model = ChatOpenAI(model="gpt-3.5-turbo-1106").bind(tools=tools)

# 执行工具调用
model.invoke("What's the weather in SF, NYC and LA?")

在此示例中,我们绑定了自定义天气查询功能,并调用模型来获取天气数据。

应用场景分析

  1. 停止序列应用:在生成包含多步骤计算的文本时,限制输出确保结果简洁明了。
  2. 工具调用应用:当需要从模型外部获取数据(如天气、股市等)时,可以通过绑定工具实现。

实践建议

  • 始终为复杂链设置默认参数以提高效率。
  • 在使用工具调用时,确保工具配置正确,以避免调用失败。
  • 利用bind()方法简化代码结构,使链条调用更可控、更易于维护。

如果遇到问题欢迎在评论区交流。

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值