好猫API 查看模型价格

用 OpenAI SDK 调用多家模型:兼容写法与注意事项

更新于 2026-11-02 · 约 4 分钟读完

兼容 OpenAI 接口的好处是:代码不用改,换一个 base_url 和一个 model 就能切到别的模型。但“兼容”不等于“完全一样”,下面把能直接复用的部分和不一致的部分分开说。

一、Python:三行换家

from openai import OpenAI

client = OpenAI(api_key="sk-你的密钥", base_url="https://newmao.cn/v1")

for model in ["claude-sonnet-4-5", "gpt-5.1", "gemini-2.5-pro"]:
    r = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": "你好,用一句话介绍你自己"}],
    )
    print(model, "->", r.choices[0].message.content)

二、Node / TypeScript

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.NEWMAO_API_KEY,
  baseURL: "https://newmao.cn/v1",
});

const stream = await client.chat.completions.create({
  model: "claude-sonnet-4-5",
  messages: [{ role: "user", content: "写一句产品 slogan" }],
  stream: true,
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

三、哪些参数是通用的

参数通用性说明
messages通用system / user / assistant 三种角色都被支持
stream通用SSE 流式输出,各模型行为一致
temperature基本通用部分推理模型会忽略该参数
max_tokens通用各模型上下文长度不同,超限会返回 400
tools / function calling多数支持格式一致,但各模型的调用成功率差别较大
response_format部分支持结构化输出不是每个模型都有,建议先小样本验证

四、图片输入怎么写

多模态模型统一用 content 数组传图片,URL 和 base64 都支持:

resp = client.chat.completions.create(
    model="gemini-2.5-pro",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "这张图里有什么?"},
            {"type": "image_url", "image_url": {"url": "https://example.com/a.png"}},
        ],
    }],
)

五、三个容易踩的坑

想先确认某个模型名是否存在,调一次 /v1/models 就行;价格见 模型广场。