OpenAI 协议接入:chat/completions 完全用法

使用 OpenAI 兼容端点调用全部 175 个模型:流式输出、工具调用、多模态图片输入、JSON 结构化输出与 embeddings 的完整示例。

端点:https://api.zaimod.com/v1/chat/completions。任何 OpenAI SDK(Python / Node / Go / Rust / Java)或其他语言的社区 SDK,只要支持自定义 base_url 就能用。

基础对话

Python
resp = client.chat.completions.create(
    model="gpt-4.1",
    messages=[
        {"role": "system", "content": "你是一个严谨的技术翻译。"},
        {"role": "user", "content": "把这段话翻译成英文:……"},
    ],
    temperature=0.2,
    max_tokens=2000,
)

流式输出

Python
stream = client.chat.completions.create(
    model="gemini-3-pro-preview",
    messages=[{"role": "user", "content": "写一首关于数据库的俳句"}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

Node.js 侧用 for await (const chunk of stream) 同理。

工具调用(Function Calling)

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.6-terra",
    messages=[{"role": "user", "content": "上海今天天气怎么样?"}],
    tools=tools,
)

call = resp.choices[0].message.tool_calls[0]
print(call.function.name, call.function.arguments)
# 把执行结果回传,继续对话即可

工具调用在 GPT、Claude、Gemini、DeepSeek 系列上均可用,但各家对并行调用、strict 模式的支持程度不同,复杂工具链建议小流量验证。

多模态:图片输入

Python
resp = client.chat.completions.create(
    model="gpt-5.6-terra",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "这张图里有什么问题?"},
            {"type": "image_url", "image_url": {"url": "https://example.com/shot.png"}},
        ],
    }],
)

支持图片 URL 与 base64 data URL。视频理解类模型(如 Gemini 优质分组)走原生端点体验更完整。

结构化 JSON 输出

Python
resp = client.chat.completions.create(
    model="gpt-4.1",
    messages=[{"role": "user", "content": "从这段文本抽取公司名和金额,返回 JSON"}],
    response_format={"type": "json_object"},
)

配合提示词中的字段说明使用,可靠性更高。

Embeddings

Python
resp = client.embeddings.create(
    model="text-embedding-3-small",
    input=["第一段文本", "第二段文本"],
)
print(len(resp.data[0].embedding))  # 1536

错误处理建议

Python
import time
from openai import APIStatusError, RateLimitError

for attempt in range(4):
    try:
        resp = client.chat.completions.create(...)
        break
    except RateLimitError:
        time.sleep(2 ** attempt)      # 429:指数退避
    except APIStatusError as e:
        if e.status_code >= 500:
            time.sleep(2 ** attempt)  # 5xx:换渠道重试
        else:
            raise

完整的错误码表见 计费与错误码。

← 快速开始:5 分钟发出第一次请求 Claude 原生端点:/v1/messages 用法 →