Loading...

文档 · 接入指南

LangChain 接 TopxAI:langchain-topxai 包里的 ChatTopxAI

LangChain(Python)里装 langchain-topxai,用 ChatTopxAI 调 TopxAI 的文本模型。带 base URL 的 ChatOpenAI 照样能用,走 Responses API 也靠它。

langchain-topxai 是 TopxAI 的 LangChain 包。包里的 ChatTopxAI 通过 Chat Completions 调 TopxAI 的文本模型,密钥从 TOPXAI_API_KEY 读。这个包由 TopxAI 团队维护,源码在 GitHub,版本发布在 PyPI。

安装

pip install -U langchain-topxai
export TOPXAI_API_KEY="sk-..."

密钥在密钥页创建;每把密钥绑定哪条线路,见创建 API 密钥并选择线路。

Python

from langchain_topxai import ChatTopxAI

llm = ChatTopxAI(model="claude-sonnet-5-5")
print(llm.invoke("Say hello in one sentence.").content)

model 填价格表上除 Jev 以外任意一个文本模型的 ID,比如 claude-sonnet-5-5、gpt-6.1-sol、grok-4.7、kimi-k3.1-pro、deepseek-flash-Abliterated、GLM-5.3-Abliterated。ChatTopxAI 基于 langchain-openai 的 BaseChatOpenAI,流式输出、异步调用、工具调用、结构化输出和 token 用量的写法都和 ChatOpenAI 一样。

参数 环境变量 默认值
api_key TOPXAI_API_KEY 无,必填。不读 OPENAI_API_KEY。
base_url TOPXAI_API_BASE https://api.topxai.xyz/v1

因为不读 OPENAI_API_KEY,同一个环境里就算放着 OpenAI 的密钥,也不会误发给 TopxAI。

推理过程

会返回推理过程的模型(比如 deepseek-flash-Abliterated、GLM-5.3-Abliterated),ChatTopxAI 把这段文字放进 additional_kwargs["reasoning_content"],流式输出也一样。ChatTopxAI 能读取 reasoning 和 reasoning_content 两个字段,具体设置见 GLM 说明页与 deepseek-flash-Abliterated 说明页。

msg = ChatTopxAI(model="deepseek-flash-Abliterated").invoke("What is 17 * 3?")
print(msg.additional_kwargs.get("reasoning_content"))

ChatOpenAI 不提取这个字段,换成它就拿不到推理文字。

结构化输出

with_structured_output 默认发 JSON Schema(method="json_schema"),和 ChatOpenAI 一致。Claude 模型(claude-sonnet-5-5、claude-opus-5-5、claude-fable-5-2)保持默认就好:这几个模型不接受强制调用工具,用 method="function_calling" 会失败,TopxAI 直接返回 400。

用 Claude 时,TopxAI 把 json_schema 格式转成 Anthropic 的结构化输出。Anthropic 只支持 JSON Schema 的一部分:ge、le 这类数值范围和列表长度不强制执行,改写进字段描述,给 Claude 当提示;LangChain 拿到结果后仍会用 Pydantic 模型校验。schema 里有 dict 或 Any 字段、递归模型或元组时,TopxAI 返回 400,错误信息写明哪一处 Claude 不支持。method="json_mode" 不带 schema,TopxAI 在系统提示里要求 Claude 只回一个 JSON 对象。

ChatOpenAI 和 ChatAnthropic

langchain-openai 的 ChatOpenAI 传 base URL 照样能用。要走 TopxAI 的 Responses API 也得用 ChatOpenAI:ChatTopxAI 只调 Chat Completions,传 use_responses_api=True 会直接报错。/v1/responses 支持哪些模型,见 API 参考。

import os

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="gpt-6.1-sol",
    base_url="https://api.topxai.xyz/v1",
    api_key=os.environ["TOPXAI_API_KEY"],
)

responses_llm = ChatOpenAI(
    model="gpt-6.1-sol",
    base_url="https://api.topxai.xyz/v1",
    api_key=os.environ["TOPXAI_API_KEY"],
    use_responses_api=True,
)

langchain-anthropic 的 ChatAnthropic 通过 Messages 接口接 Claude,可以用提示缓存。要结构化输出,with_structured_output 得传 method="json_schema"。默认的 function_calling 在这三个 Claude 模型上没法强制调用工具,langchain-anthropic 1.7.6 会给出警告,Claude 没调用工具时抛出 OutputParserException。

import os

from langchain_anthropic import ChatAnthropic

claude = ChatAnthropic(
    model="claude-sonnet-5-5",
    base_url="https://api.topxai.xyz",
    api_key=os.environ["TOPXAI_API_KEY"],
    max_tokens=1024,
)

不传 base_url 和 api_key 时,这两个类会读 OPENAI_BASE_URL / OPENAI_API_KEY 和 ANTHROPIC_BASE_URL / ANTHROPIC_API_KEY(设置了 OPENAI_API_BASE 或 ANTHROPIC_API_URL 时以这两个为准),部署时换端点不用改代码。

JavaScript

langchain-topxai 只有 Python 版。LangChain.js 里把 base URL 传给 ChatOpenAI 或 ChatAnthropic:

import { ChatOpenAI } from '@langchain/openai'
import { ChatAnthropic } from '@langchain/anthropic'

const llm = new ChatOpenAI({
  model: 'gpt-6.1-sol',
  apiKey: process.env.TOPXAI_API_KEY,
  configuration: { baseURL: 'https://api.topxai.xyz/v1' },
})

const claude = new ChatAnthropic({
  model: 'claude-sonnet-5-5',
  apiKey: process.env.TOPXAI_API_KEY,
  anthropicApiUrl: 'https://api.topxai.xyz',
})

向量模型

目录里没有向量模型,OpenAIEmbeddings 继续用你现在的供应商。

不通时

模型:claude-sonnet-5-5, gpt-6.1-sol, deepseek-flash-Abliterated · 模型与价格

相关

上一页:ChatBox 接 TopxAI:自定义服务商 · 下一页:Vercel AI SDK 接 TopxAI:createOpenAI、createAnthropic 和 openai-compatible

其他语言:English