Skip to content

OpenAI Chat API

概述

Chat API 提供与 OpenAI Chat Completions API 完全兼容的接口,支持多轮对话、流式响应、工具调用等功能。

接口详情

接口地址: POST /v1/chat/completions

功能描述: 根据对话历史创建模型响应。支持流式和非流式响应。

认证方式: Bearer Token

http
Authorization: Bearer YOUR_API_TOKEN

请求参数

Header 参数

参数名类型必填说明示例
AuthorizationstringBearer Token 认证Bearer sk-xxx...
Content-Typestring内容类型application/json

Body 参数

参数名类型必填默认值说明约束
modelstring-模型 IDgpt-4, gpt-3.5-turbo
messagesarray-对话消息列表最少 1 条消息
temperaturenumber1采样温度0 ≤ x ≤ 2
top_pnumber1核采样参数0 ≤ x ≤ 1
ninteger1生成数量≥ 1
streambooleanfalse是否流式响应-
stream_optionsobject-流式选项-
stopstring/array-停止序列-
max_tokensinteger-最大生成 Token 数≥ 0
max_completion_tokensinteger-最大补全 Token 数≥ 0
presence_penaltynumber0存在惩罚-2 ≤ x ≤ 2
frequency_penaltynumber0频率惩罚-2 ≤ x ≤ 2
logit_biasobject-Token 偏置-
userstring-用户标识-
toolsarray-工具列表-
tool_choicestring/objectauto工具选择策略none, auto, required
response_formatobject-响应格式-
seedinteger-随机种子-
reasoning_effortstring-推理强度low, medium, high

Messages 对象

参数名类型必填说明
rolestring消息角色:system, user, assistant, tool, developer
contentstring/array消息内容
namestring发送者名称
tool_callsarray工具调用列表
tool_call_idstring工具调用 ID(tool 角色消息)

Tool 对象

参数名类型必填说明
typestring工具类型,通常为 function
functionobject函数定义
function.namestring函数名称
function.descriptionstring函数描述
function.parametersobject函数参数 Schema

ResponseFormat 对象

参数名类型必填说明
typestring响应类型:text, json_object, json_schema
json_schemaobjectJSON Schema 定义

响应格式

成功响应 (200)

非流式响应:

参数名类型说明
idstring响应 ID
objectstring对象类型,固定为 chat.completion
createdinteger创建时间戳
modelstring使用的模型
choicesarray选择列表
usageobject使用统计
system_fingerprintstring系统指纹

Usage 对象

参数名类型说明
prompt_tokensinteger提示词 Token 数
completion_tokensinteger补全 Token 数
total_tokensinteger总 Token 数

流式响应 (SSE)

流式响应以 data: 开头的数据块形式返回:

data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk",...}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk",...}
data: [DONE]

示例代码

基础对话

bash
curl -X POST https://api.ezmodel.cloud/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
    "model": "gpt-4",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "Hello, how are you?"
      }
    ],
    "temperature": 0.7,
    "max_tokens": 150
  }'
python
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_TOKEN",
    base_url="https://api.ezmodel.cloud/v1"
)

response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello, how are you?"}
    ],
    temperature=0.7,
    max_tokens=150
)

print(response.choices[0].message.content)
javascript
import OpenAI from 'openai';

const openai = new OpenAI({
  apiKey: 'YOUR_API_TOKEN',
  baseURL: 'https://api.ezmodel.cloud/v1'
});

const response = await openai.chat.completions.create({
  model: 'gpt-4',
  messages: [
    { role: 'system', content: 'You are a helpful assistant.' },
    { role: 'user', content: 'Hello, how are you?' }
  ],
  temperature: 0.7,
  max_tokens: 150
});

console.log(response.choices[0].message.content);

响应示例:

json
{
  "id": "chatcmpl-8abcd1234efgh5678",
  "object": "chat.completion",
  "created": 1699012345,
  "model": "gpt-4",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! I'm doing well, thank you for asking. How can I assist you today?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 22,
    "completion_tokens": 18,
    "total_tokens": 40
  }
}

流式响应

bash
curl -X POST https://api.ezmodel.cloud/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
    "model": "gpt-4",
    "messages": [{"role": "user", "content": "写一首关于春天的诗"}],
    "stream": true,
    "temperature": 0.8
  }'
python
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_TOKEN",
    base_url="https://api.ezmodel.cloud/v1"
)

stream = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "写一首关于春天的诗"}],
    stream=True,
    temperature=0.8
)

for chunk in stream:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")
javascript
import OpenAI from 'openai';

const openai = new OpenAI({
  apiKey: 'YOUR_API_TOKEN',
  baseURL: 'https://api.ezmodel.cloud/v1'
});

const stream = await openai.chat.completions.create({
  model: 'gpt-4',
  messages: [{ role: 'user', content: '写一首关于春天的诗' }],
  stream: true,
  temperature: 0.8
});

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

工具调用

bash
curl -X POST https://api.ezmodel.cloud/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
    "model": "gpt-4",
    "messages": [{"role": "user", "content": "现在北京几点了?"}],
    "tools": [
      {
        "type": "function",
        "function": {
          "name": "get_current_time",
          "description": "获取指定时区的当前时间",
          "parameters": {
            "type": "object",
            "properties": {
              "timezone": {
                "type": "string",
                "description": "时区,如 Asia/Shanghai"
              }
            },
            "required": ["timezone"]
          }
        }
      }
    ],
    "tool_choice": "auto"
  }'
python
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_TOKEN",
    base_url="https://api.ezmodel.cloud/v1"
)

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_current_time",
            "description": "获取指定时区的当前时间",
            "parameters": {
                "type": "object",
                "properties": {
                    "timezone": {
                        "type": "string",
                        "description": "时区,如 Asia/Shanghai"
                    }
                },
                "required": ["timezone"]
            }
        }
    }
]

response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "现在北京几点了?"}],
    tools=tools,
    tool_choice="auto"
)

print(response.choices[0].message)

响应示例:

json
{
  "id": "chatcmpl-8abcd1234efgh5678",
  "object": "chat.completion",
  "created": 1699012345,
  "model": "gpt-4",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "id": "call_abc123",
            "type": "function",
            "function": {
              "name": "get_current_time",
              "arguments": "{\"timezone\": \"Asia/Shanghai\"}"
            }
          }
        ]
      },
      "finish_reason": "tool_calls"
    }
  ],
  "usage": {
    "prompt_tokens": 58,
    "completion_tokens": 21,
    "total_tokens": 79
  }
}

JSON 格式响应

bash
curl -X POST https://api.ezmodel.cloud/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
    "model": "gpt-4",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant designed to output JSON."},
      {"role": "user", "content": "列出三种水果,包含名称和颜色"}
    ],
    "response_format": {"type": "json_object"}
  }'

错误处理

常见错误码

HTTP状态码错误类型说明
400invalid_request_error请求参数错误
401invalid_api_keyAPI 密钥无效或未提供
401insufficient_quotaAPI 配额不足
403access_denied访问被拒绝
404not_found资源不存在
429rate_limit_exceeded请求频率超限
500api_error服务器内部错误
503service_unavailable服务暂不可用

错误响应示例

json
{
  "error": {
    "message": "Invalid API key provided",
    "type": "invalid_request_error",
    "param": "authorization",
    "code": "invalid_api_key"
  }
}

最佳实践

温度设置

  • 创造性任务(写作、头脑风暴):使用较高值 0.8-1.0
  • 准确性任务(翻译、代码):使用较低值 0.1-0.3

Token 控制

设置合适的 max_tokens 避免不必要的消耗,同时确保有足够空间生成完整回复。

系统消息

通过 system role 设置明确的角色和行为指导,可以显著提升响应质量。

错误处理

始终包含适当的错误处理和重试机制,处理网络异常和 API 限制。

企业合作联系:service@ezmodel.cloud