You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在LangChain链中为LLM与模板分配对应输入参数?

问题分析

你遇到的核心问题是:链不会自动将传入的变量池参数覆盖LLM组件的初始化配置。你初始化ChatOpenAI时硬编码了max_tokens=1,后续invoke传入的max_tokens=100只会被PromptTemplate读取(但模板里未用到该变量),并不会传递给LLM的配置项。

简便解决方案

直接使用bind方法结合lambda表达式,将输入中的max_tokens动态绑定到LLM的参数上,代码如下:

from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI

# 定义Prompt模板
prompt = PromptTemplate.from_template("write a joke about: {input_text}")
# 动态绑定max_tokens为输入中的对应值
llm = ChatOpenAI(model_name="gpt-4o").bind(max_tokens=lambda x: x["max_tokens"])
# 构建链
chain = prompt | llm

# 调用链,传入两个参数
result = chain.invoke({"max_tokens": 100, "input_text": "programming!"})
print(result.content)
原理说明
  • bind方法允许为LLM动态绑定参数,这里用lambda表达式从输入字典中提取max_tokens值,替代初始化时的固定配置。
  • 链执行时,prompt会先消费input_text生成完整提示词,随后LLM会读取输入中的max_tokens参数应用到生成配置中。

内容的提问来源于stack exchange,提问作者Michael T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:34:52