LangChain 接入
LangChain 的 ChatOpenAI / OpenAI 类天然支持自定义 base_url——把地址指向 Router 即可让全部链与智能体走路由层。
- 协议:OpenAI Chat Completions
- 接入地址:
https://routerapi.<你的域名>/v1
准备工作
- 登录 Router 控制台,签发一个 Key 并保存明文
- 在控制台「快速接入」页记下 OpenAI Chat Completions 协议的接入地址
安装
bash
pip install langchain-openai
# 或 JS/TS:
npm install @langchain/openaiPython 示例
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 验证)。