ZestAI
API文档

OpenAI 格式调用

使用 OpenAI 兼容格式通过 Python、JavaScript 或 HTTP 请求调用 AI 模型的完整示例与参数说明。

我们的接口完全兼容 OpenAI /v1/chat/completions 标准,您只需将原有代码中的 base_urlapi_key 替换为我们平台的配置,即可零成本迁移,无需改动任何业务逻辑。

接入配置

配置项
Base URLhttps://api.zestai.pro/v1
API Key您在控制台创建的 sk- 开头的令牌
访问 模型广场 可以查看所有可用模型名称,直接复制模型 ID 使用即可。

快速示例

from openai import OpenAI

client = OpenAI(
    api_key="sk-your-api-key",  # 替换为您的令牌
    base_url="https://api.zestai.pro/v1",
)

response = client.chat.completions.create(
    model="gemini-3-flash-preview",  # 替换为您想使用的模型
    messages=[
        {"role": "system", "content": "你是一个有帮助的助手。"},
        {"role": "user", "content": "你好,请介绍一下你自己。"},
    ],
)

print(response.choices[0].message.content)

流式输出(Streaming)

流式输出可以让模型像打字一样逐字返回内容,显著提升用户体验,适合聊天类应用场景。

from openai import OpenAI

client = OpenAI(
    api_key="sk-your-api-key",
    base_url="https://api.zestai.pro/v1",
)

stream = client.chat.completions.create(
    model="gemini-3-flash-preview",
    messages=[{"role": "user", "content": "写一首关于秋天的诗。"}],
    stream=True,
)

for chunk in stream:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="", flush=True)

多轮对话

通过在 messages 数组中传入历史消息,即可实现上下文连续的多轮对话。

from openai import OpenAI

client = OpenAI(
    api_key="sk-your-api-key",
    base_url="https://api.zestai.pro/v1",
)

# 维护对话历史
history = [{"role": "system", "content": "你是一个有帮助的助手。"}]

def chat(user_input: str):
    history.append({"role": "user", "content": user_input})
    response = client.chat.completions.create(
        model="gemini-3-flash-preview",
        messages=history,
    )
    reply = response.choices[0].message.content
    history.append({"role": "assistant", "content": reply})
    return reply

print(chat("我叫小明。"))
print(chat("你还记得我叫什么名字吗?"))

图像理解(多模态)

支持视觉能力的模型(如 gpt-4ogemini-2.5-pro 等)可以直接传入图片进行理解与分析。

from openai import OpenAI

client = OpenAI(
    api_key="sk-your-api-key",
    base_url="https://api.zestai.pro/v1",
)

response = client.chat.completions.create(
    model="gemini-3-flash-preview",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "请描述这张图片的内容。"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/image.jpg",
                        # 也可以使用 base64                        # "url": "data:image/jpeg;base64,{base64_image}"
                    },
                },
            ],
        }
    ],
)

print(response.choices[0].message.content)

请求参数说明

以下为 /v1/chat/completions 接口支持的常用参数:

必填参数

参数类型说明
modelstring模型 ID,例如 gpt-4ogemini-3-flash-previewclaude-sonnet-4-20250514
messagesarray对话消息数组,每条消息包含 rolecontent 两个字段

messages[].role 可选值

说明
system系统提示词,用于设定模型的行为角色与背景,建议放在数组首位
user用户发送的消息
assistant模型上一轮的回复,用于构造多轮对话历史

常用可选参数

参数类型默认值说明
streambooleanfalse是否开启流式输出(SSE)
max_tokensinteger模型默认值限制模型单次回复的最大 Token 数量
temperaturenumber1.0随机性控制,范围 0~2。越低越确定,越高越随机创意
top_pnumber1.0核采样概率,与 temperature 二选一使用,请勿同时修改两者
ninteger1单次请求生成的候选回复数量
stopstring / arraynull遇到指定字符串时停止生成,例如 ["\n", "END"]
presence_penaltynumber0范围 -2~2,正值降低模型重复已出现词语的概率
frequency_penaltynumber0范围 -2~2,正值降低模型重复高频词语的概率

响应结构

{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1711000000,
  "model": "gemini-3-flash-preview",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "你好!我是一个 AI 助手,很高兴为你服务。"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 30,
    "completion_tokens": 25,
    "total_tokens": 55
  }
}
字段说明
choices[].message.content模型生成的回复内容
choices[].finish_reason停止原因:stop(正常结束)、length(达到 max_tokens)、content_filter(内容过滤)
usage.prompt_tokens输入消耗的 Token 数
usage.completion_tokens输出消耗的 Token 数
usage.total_tokens本次请求总 Token 消耗(计费依据)
建议在生产环境中对 4295xx 错误实现指数退避重试策略,以提升服务稳定性。