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

如何通过Curl向LangServe的LangChain LLM链传递可配置参数?

正确传递session_id的实现方式

先确认服务器端链的配置

首先必须确保你的链已经明确将session_id声明为可配置参数,否则客户端传参也会被忽略。示例代码如下:

from langchain_core.runnables import RunnableConfigurable

# 假设base_chain是你的基础LLM链
chain_with_config = RunnableConfigurable(
    base_chain,
    configurable={"session_id": str}  # 明确指定session_id为可配置的字符串参数
)

# 再通过LangServe添加路由
add_route("/chainroute", chain_with_config, app)

Curl调用的正确格式

/invoke 端点调用

正确的请求体需要将config作为顶层键与input同级,注意JSON语法必须正确:

curl --no-buffer -X POST 'http://0.0.0.0:8000/chainroute/invoke' \
-H 'Content-Type: application/json' \
-d '{
  "input": {"question": "你的具体问题"},
  "config": {"configurable": {"session_id": "1234567890"}}
}'

注意:如果需要文本响应可以保留accept: text/plain头,但Content-Type必须是application/json以确保请求体被正确解析。

/stream 端点调用

格式与/invoke一致,仅端点不同:

curl --no-buffer -X POST 'http://0.0.0.0:8000/chainroute/stream' \
-H 'Content-Type: application/json' \
-d '{
  "input": {"question": "你的具体问题"},
  "config": {"configurable": {"session_id": "1234567890"}}
}'

RemoteRunnable的正确调用

你的代码结构本身没问题,只需确保session_id的类型与服务器端配置匹配(比如字符串类型):

from langserve import RemoteRunnable

chat = RemoteRunnable("http://0.0.0.0:8000/chainroute")
response = chat.invoke(
    {"question": "你的具体问题"},
    config={"configurable": {"session_id": "1234567890"}}  # 保持类型一致
)
print(response)

常见排查点

  • 服务器端未声明可配置参数:如果链没有通过RunnableConfigurable或类似方式开启session_id的配置支持,客户端传参无效。
  • JSON语法错误:比如你尝试的第二个curl请求中,input内嵌套对象的写法有语法错误,会导致服务器无法解析请求。
  • 参数类型不匹配:服务器端如果要求session_id是字符串,客户端传数字会被忽略,需保证类型一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:23:13