跳到正文

官方厂商 SDK ​

官方 SDK 是各厂商的「母语」入口。经网关用它们,与直连厂商唯一的区别就是 通用三步:改 base_url、换访问密钥、填网关模型名。本节按厂商给 Python 与 Node 双语示例,覆盖语言、图像、向量、语音等能力(实时在 实时会话与语音 单列)。

示例里的模型名是某套网关配置下的真实名字,实际以你的控制台为准。密钥统一用占位符 <你的访问密钥>。

OpenAI SDK ​

bash
pip install openai            # Python
npm i openai                  # Node

base_url 指到 /v1。Python 与 Node 都能调语言、图像、向量、语音;rerank 端点(/v1/rerank)官方 SDK 暂无对应方法,用 HTTP 直调。

语言(Chat Completions):

python
from openai import OpenAI

client = OpenAI(base_url="http://localhost:7890/v1", api_key="<你的访问密钥>")

resp = client.chat.completions.create(
    model="gpt-5.4-mini",
    messages=[{"role": "user", "content": "用一句话介绍你自己"}],
)
print(resp.choices[0].message.content)
ts
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "http://localhost:7890/v1",
  apiKey: "<你的访问密钥>",
});

const resp = await client.chat.completions.create({
  model: "gpt-5.4-mini",
  messages: [{ role: "user", content: "用一句话介绍你自己" }],
});
console.log(resp.choices[0].message.content);

Responses API(上游模型为 openai_response 协议时也可用):

python
resp = client.responses.create(
    model="gpt-5.6-sol",
    input="用一句话介绍你自己",
    max_output_tokens=64,
)
print(resp.output_text)
ts
const resp = await client.responses.create({
  model: "gpt-5.6-sol",
  input: "用一句话介绍你自己",
  max_output_tokens: 64,
});
console.log(resp.output_text);

跨协议字段会被翻译、并受目标协议约束:若你网关里 gpt-5.6-sol 的上游是 Responses 协议,用 Chat Completions 客户端传 max_tokens 时,网关会把它译成 max_output_tokens,而上游可能要求该值不低于某个下限(例如 ≥16),传太小会 400。直接用 Responses 客户端(上例)则字段原样对齐。

流式(Chat Completions):

python
stream = client.chat.completions.create(
    model="gpt-5.4-mini",
    messages=[{"role": "user", "content": "数到 5"}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="")

工具调用:

python
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "查询城市天气",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]
resp = client.chat.completions.create(
    model="gpt-5.4-mini",
    messages=[{"role": "user", "content": "北京天气怎么样?"}],
    tools=tools,
)
print(resp.choices[0].message.tool_calls)

向量:

python
r = client.embeddings.create(
    model="text-embedding-3-small",
    input=["你好", "世界"],
)
print(len(r.data[0].embedding))  # 向量维度

图像生成:

python
img = client.images.generate(
    model="gpt-image-2",
    prompt="一只在代码海洋里游泳的猫,赛博朋克风",
    size="1024x1024",
)
print(img.data[0].url)

语音转写(ASR):

python
audio = open("speech.mp3", "rb")
t = client.audio.transcriptions.create(model="whisper-1", file=audio)
print(t.text)

文本转语音(TTS):

python
speech = client.audio.speech.create(model="tts-1", voice="alloy", input="你好,世界")
speech.write_to_file("out.mp3")

重排(rerank,HTTP 直调):

python
import requests

r = requests.post(
    "http://localhost:7890/v1/rerank",
    headers={"Authorization": "Bearer <你的访问密钥>"},
    json={"model": "bge-m3-reranker", "query": "猫", "documents": ["一只猫", "一辆车"]},
)
print([res["relevance_score"] for res in r.json()["results"]])

Anthropic SDK ​

bash
pip install anthropic          # Python
npm i @anthropic-ai/sdk        # Node

base_url 指到根(SDK 自动拼 /v1/messages)。Anthropic 是语言类协议,支持图像输入理解,无图像/视频生成与实时会话端点。

python
import anthropic

client = anthropic.Anthropic(base_url="http://localhost:7890", api_key="<你的访问密钥>")

msg = client.messages.create(
    model="claude-haiku-4-5",
    max_tokens=256,
    messages=[{"role": "user", "content": "用一句话介绍你自己"}],
)
# content 是数组;Claude 思考模型可能先返回 type=="thinking" 再返回 type=="text"
text = "".join(b.text for b in msg.content if b.type == "text")
print(text)
ts
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  baseURL: "http://localhost:7890",
  apiKey: "<你的访问密钥>",
});

const msg = await client.messages.create({
  model: "claude-haiku-4-5",
  max_tokens: 256,
  messages: [{ role: "user", content: "用一句话介绍你自己" }],
});
const text = msg.content.filter((b) => b.type === "text").map((b) => b.text).join("");
console.log(text);

思考块:Claude 的思考模型(如 claude-opus-5、claude-sonnet-5)可能先返回一个 type == "thinking" 的内容块,再返回 type == "text"。取正文时按 type 过滤,别假设 content[0] 一定是文本。

经协议互译,这个 SDK 也能调非 Claude 模型——model 填网关里配的任意模型名即可,见 协议互通矩阵。

Google GenAI SDK ​

bash
pip install google-genai        # Python
npm i @google/genai             # Node

base_url 指到根,经 http_options.base_url(不是参数里的 base_url)。

python
from google import genai

client = genai.Client(
    api_key="<你的访问密钥>",
    http_options={"base_url": "http://localhost:7890"},
)

resp = client.models.generate_content(
    model="gemini-3.5-flash",
    contents="用一句话介绍你自己",
)
print(resp.text)
ts
import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({
  apiKey: "<你的访问密钥>",
  httpOptions: { baseUrl: "http://localhost:7890" },
});

const resp = await client.models.generateContent({
  model: "gemini-3.5-flash",
  contents: "用一句话介绍你自己",
});
console.log(resp.text);

图像生成(generateContent 内联图像输出,与 openai_images 互译):

python
from google.genai import types

resp = client.models.generate_content(
    model="gemini-3.1-flash-image",
    contents="画一只在代码海洋里游泳的猫,赛博朋克风",
    config=types.GenerateContentConfig(response_modalities=["IMAGE", "TEXT"]),
)
for part in resp.candidates[0].content.parts:
    if part.inline_data:
        with open("cat.png", "wb") as f:
            f.write(part.inline_data.data)

OpenAI 兼容第三方 ​

DeepSeek、Moonshot Kimi、智谱 GLM、xAI Grok、MiniMax、字节豆包、Groq、Together、Mistral、Cohere、OpenRouter、Azure OpenAI、Cerebras,以及 vLLM / Ollama 等自托管服务,都提供 OpenAI 兼容端点——客户端侧原样用 OpenAI SDK,只改 base_url 与 model。

python
from openai import OpenAI

client = OpenAI(base_url="http://localhost:7890/v1", api_key="<你的访问密钥>")

# model 填网关里配的第三方模型名
resp = client.chat.completions.create(
    model="deepseek-v4-pro",   # 换成 glm-5.2 / kimi-k3 / grok-4.5 等
    messages=[{"role": "user", "content": "用一句话介绍你自己"}],
)
print(resp.choices[0].message.content)

差异只在「上游真实端点」:这些供应商的上游仍是它们自己的 OpenAI 兼容地址,网关在中间做翻译或透传。对你(客户端)来说,代码与调 OpenAI 完全一致。各供应商能开的能力(图像/向量/重排等)取决于上游自身,见 支持的供应商与模型。

供应商示例模型名(网关配置)说明
DeepSeekdeepseek-v4-pro / deepseek-v4-flash纯文本/代码
智谱 GLMglm-5.2 / glm-5.1纯文本
Moonshot Kimikimi-k3 / kimi-k2.7-code文本/代码
xAI Grokgrok-4.5纯文本
Azure OpenAI你的部署名base_url 换成 https://<resource>.openai.azure.com,网关侧走 openai 兼容

AWS Bedrock(上游侧协议) ​

Bedrock 不是客户端协议——网关不暴露 Bedrock 形态的客户端端点。想调 Bedrock 托管的模型,客户端用 OpenAI / Anthropic / Gemini 等 SDK,经协议互译访问;或经 /v3/{model}/{*rest} 透传。详见 端点 · 关于 AWS Bedrock 与透传 与 接入 AWS Bedrock 上游。

下一步 ​