LangChain 自定义 API 设置

将 LangChain ChatOpenAI 连接到 TokenHub 并在构建链或代理之前验证最小模型调用。

LangChain是什么?

LangChain 是一个应用程序框架,用于构建 LLM 支持的聊天、检索、工作流程和座席体验。

本 LangChain 指南配置了维护的 langchain-openai 与 TokenHub-compatible API 基础的集成。首先测试基本调用路径,然后验证流、结构化输出或工具是否满足您的应用程序所需的功能。最小的 ChatOpenAI 调用可验证基本连接,但不会验证生产应用程序使用的每个功能。独立测试流、结构化输出、工具绑定、重试和超时,然后仅在选定的 TokenHub 模型通过工作流程所需的功能后添加检索、链或代理。

LangChain Python 的官方 OpenAI 集成位于独立的 langchain-openai 包。TokenHub 通过 ChatOpenAI 的自定义 base_url 接入;这是代码集成,不存在 App 设置页。

第一步:安装官方集成包

pip install -U langchain-openai

使用 uv 的项目可改为 uv add langchain-openai。只安装基础 langchain 并不会自动提供 ChatOpenAI

第二步:显式实例化 TokenHub ChatOpenAI

export TOKENHUB_API_KEY="sk-..."
import os
from langchain_openai import ChatOpenAI

model = ChatOpenAI(
    base_url="__API_BASE_URL__/v1",
    api_key=os.environ["TOKENHUB_API_KEY"],
    model="YOUR_TOKENHUB_MODEL_ID",
    timeout=60,
    max_retries=2,
)

response = model.invoke("请用一句话确认连接成功。")
print(response.content)

官方的 Base URL 解析优先级是:构造函数 base_url / openai_api_base,然后 OPENAI_API_BASE,最后是底层 SDK 读取的 OPENAI_BASE_URL。示例显式传参,避免项目环境中旧的 OpenAI URL 覆盖 TokenHub。

第三步:按能力逐层验证

  1. 运行最小 invoke,先确认普通 Chat Completions。
  2. 需要流式时再调用 stream。如果使用 OPENAI_BASE_URL 指向第三方端点,LangChain 默认不会替你开启 stream_usage;只有 TokenHub/模型支持流式用量时才设置 stream_usage=True
  3. 需要 Agent 时,通过 bind_tools 绑定一个最小工具并检查返回对象的 tool_calls,不要只看模型是否在文本里“描述了调用”。
  4. 最后再测试 structured output、图片或 reasoning。

ChatOpenAI 官方明确只保证 OpenAI API 规范字段。第三方扩展的 reasoning_contentreasoningreasoning_details 不会被提取或保留,所以普通回答成功不能证明这些扩展能力可用。

按 LangChain 层级排错

  • import 失败:确认安装的是 langchain-openai
  • 404:确认实际生效的 base_url 包含 /v1,并检查是否被环境变量覆盖。
  • 模型错误:检查 model 是否为完整 TokenHub Model ID。
  • 流式能输出但无用量:检查 stream_usage 和端点是否支持 stream_options.include_usage
  • Agent 工具失败:用 bind_tools 单独验证;不要以基础 invoke 成功代替工具测试。
  • 非标准 reasoning 字段缺失:这是 ChatOpenAI 的已知范围,应使用对应 Provider 的专用 LangChain 集成或直接处理原始响应。

官方资料

推荐模型怎么选?

任务选择方向适合原因
复杂任务旗舰推理模型更适合规划、多步骤执行和复杂上下文。
日常使用均衡模型在效果、速度和成本之间取得平衡。
批量任务快速低成本模型减少摘要和简单处理的成本。
前往模型广场比较价格和能力

LangChain ChatOpenAI FAQ

如何将 ChatOpenAI 指向 TokenHub?

将 base_url 设置为以 /v1 结尾的 TokenHub API 根,将 TokenHub 密钥作为 api_key 传递,并将模型设置为确切的 TokenHub ID。

我可以使用 OPENAI_API_BASE 代替 base_url 吗?

LangChain 可以读取记录的 OpenAI 基础 URL 环境变量,但显式 base_url 对于单个集成来说是最清晰的。

成功的调用是否证明代理可以工作?

不。它证明了基本的聊天连接。在使用这些功能之前验证工具调用、流式传输和结构化输出。

我需要 langchain-openai 软件包吗?

是的。 ChatOpenAI在langchain-openai集成包中维护;将 compatible 版本与 LangChain 项目的其余部分一起安装。

如何对 LangChain 404 进行故障排除?

确保 base_url 以 /v1 结尾,删除重复的请求路径,并在检查 TokenHub 请求日志之前验证确切的模型 ID。

配置资料

本页配置以 TokenHub 教程和官方资料为依据,最后核验于 2026-09-08。