跳到主要内容
万川
文档导航
本页目录

使用 OpenAI SDK

官方 SDK 直接可用。已有项目改两处配置就能迁过来,业务代码一行不用动。

base_url 必须带 /v1,即 https://chuanapi.com/v1。SDK 会在其后拼接 /chat/completions。 这一点和 Anthropic SDK 不同,后者不要带 /v1

Python

# pip install openai
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["WANCHUAN_API_KEY"],
    base_url="https://chuanapi.com/v1",
)

resp = client.chat.completions.create(
    model="MODEL_ID",
    messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)

MODEL_ID 换成 模型目录 里的真实 id。也可以直接列出当前密钥可见的模型:

for model in client.models.list().data:
    print(model.id)

Node.js

// npm i openai
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.WANCHUAN_API_KEY,
  baseURL: "https://chuanapi.com/v1",
});

const resp = await client.chat.completions.create({
  model: "MODEL_ID",
  messages: [{ role: "user", content: "你好" }],
});
console.log(resp.choices[0].message.content);

注意 Node SDK 的字段名是 baseURL(驼峰、URL 全大写),Python 是 base_url。拼错不会报错,只会连到默认的官方域名。

流式与工具调用

写法与官方完全一致,加 stream 参数即可:

stream = client.chat.completions.create(
    model="MODEL_ID",
    messages=[{"role": "user", "content": "写一首短诗"}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

工具调用同理,tools tool_choice 语义不变。 详见 流式输出 工具调用

常见问题

  • 请求打到了官方而不是万川: 多半是 Node 里写成了 base_url, 或者环境里还留着 OPENAI_BASE_URL。SDK 的显式参数优先级高于环境变量,但拼错的字段会被静默忽略。
  • 404base_url 漏了 /v1,或 model id 不在目录里。
  • 401:环境变量没读到。 检查是不是把 OPENAI_API_KEY和万川的 Key 搞混了。
  • 超时:长输出建议开流式, 或调大 SDK 的 timeout。默认超时对推理模型往往偏短。

相关文档

本页基于 2026-08-19 校订。