Skip to content

LangChain 接入

LangChain 的 ChatOpenAI / OpenAI 类天然支持自定义 base_url——把地址指向 Router 即可让全部链与智能体走路由层。

  • 协议:OpenAI Chat Completions
  • 接入地址https://routerapi.<你的域名>/v1

准备工作

  1. 登录 Router 控制台,签发一个 Key 并保存明文
  2. 在控制台「快速接入」页记下 OpenAI Chat Completions 协议的接入地址

安装

bash
pip install langchain-openai
# 或 JS/TS:
npm install @langchain/openai

Python 示例

python
import os
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="<模型名>",
    base_url="https://routerapi.<你的域名>/v1",
    api_key=os.environ["ROUTER_API_KEY"],
    streaming=True,
)

for chunk in llm.stream("你好"):
    print(chunk.content, end="")

建议把 Key 放在环境变量 ROUTER_API_KEY 中,不要写进代码。

JS / TS 示例

ts
import { ChatOpenAI } from "@langchain/openai";

const llm = new ChatOpenAI({
  model: "<模型名>",
  configuration: {
    baseURL: "https://routerapi.<你的域名>/v1",
    apiKey: process.env.ROUTER_API_KEY,
  },
  streaming: true,
});

const stream = await llm.stream("你好");
for await (const chunk of stream) {
  process.stdout.write(String(chunk.content ?? ""));
}

在链与智能体中使用

llm 对象可以直接用于 RunnableSequence、LCEL 链、createReactAgent 等全部 LangChain 抽象——路由层的选模型、容灾与计量对上层完全透明:

python
from langchain_core.prompts import ChatPromptTemplate

chain = ChatPromptTemplate.from_template("把{input}翻译成英文") | llm
print(chain.invoke({"input": "今天天气不错"}).content)

常见问题

Q:老版本 LangChain 没有 base_url 参数?openai_api_base="https://routerapi.<你的域名>/v1" + openai_api_key=...(旧参数名),或升级 langchain-openai

Q:调路由池时行为是什么?model 填路由池名后,每次调用由路由层按任务难度自动选池内模型;x-veyra-cls-* 响应头可见分类结果(LangChain 默认不暴露响应头,需要时可用回调或 curl 验证)。

智能模型路由服务