跳转到主要内容
/v1/chat/completions 是大模型行业的事实标准接口 —— 几乎所有框架、客户端、SDK 默认支持它。通过 API易,这一个端点可以统一调用 OpenAI、Claude、Gemini、DeepSeek 等全部 400+ 模型,切换模型只需要换一个字符串。
怎么选端点:用现成框架/客户端、或要用同一套代码调多家模型 → 用本页的兼容模式;要内置工具(联网搜索、代码解释器)、状态管理、或调 Pro 系列模型 → 用 原生调用(/v1/responses)。OpenAI 官方对 Chat Completions 的定位是”长期支持,但新项目推荐 Responses”。

快速开始

curl https://api.apiyi.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "gpt-5.4",
    "messages": [
      {"role": "user", "content": "用一句话介绍你自己"}
    ]
  }'

一个接口调用全平台模型

这是兼容模式最大的价值:换模型只换字符串,代码一行不动
def ask(message: str, model: str) -> str:
    response = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": message}]
    )
    return response.choices[0].message.content

print(ask("解释量子纠缠", "gpt-5.4"))               # OpenAI
print(ask("解释量子纠缠", "claude-sonnet-4-6"))      # Anthropic
print(ask("解释量子纠缠", "gemini-3-pro-preview"))   # Google
print(ask("解释量子纠缠", "deepseek-chat"))          # DeepSeek
各家模型的完整名称和价格见 模型与价格总览。注意:用兼容格式调 Claude 时拿不到 Claude 的 Prompt Cache 优惠,深度使用 Claude 请走 Claude 原生调用

各语言 SDK 配置

所有官方 SDK 都支持自定义 base_url,配置一次即可。

Python

pip install openai
from openai import OpenAI, AsyncOpenAI

# 同步客户端
client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.apiyi.com/v1"
)

# 异步客户端
async_client = AsyncOpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.apiyi.com/v1"
)
也可以用环境变量,代码里零配置:
export OPENAI_API_KEY="YOUR_API_KEY"
export OPENAI_BASE_URL="https://api.apiyi.com/v1"
from openai import OpenAI
client = OpenAI()  # 自动读取环境变量

Node.js / TypeScript

npm install openai
import OpenAI from 'openai';

const openai = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
  baseURL: 'https://api.apiyi.com/v1'
});

const response = await openai.chat.completions.create({
  model: 'gpt-5.4-mini',
  messages: [{ role: 'user', content: 'Hello!' }],
  temperature: 0.7
});

.NET

dotnet add package OpenAI
using OpenAI;
using OpenAI.Chat;

var client = new OpenAIClient(
    new System.ClientModel.ApiKeyCredential("YOUR_API_KEY"),
    new OpenAIClientOptions { Endpoint = new Uri("https://api.apiyi.com/v1") }
);

var chatClient = client.GetChatClient("gpt-5.4");
var response = await chatClient.CompleteChatAsync("Hello!");
Console.WriteLine(response.Value.Content[0].Text);

Go

使用 OpenAI 官方 Go SDK(github.com/openai/openai-go):
go get github.com/openai/openai-go
package main

import (
    "context"
    "fmt"

    "github.com/openai/openai-go"
    "github.com/openai/openai-go/option"
)

func main() {
    client := openai.NewClient(
        option.WithAPIKey("YOUR_API_KEY"),
        option.WithBaseURL("https://api.apiyi.com/v1"),
    )

    completion, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
        Model: "gpt-5.4",
        Messages: []openai.ChatCompletionMessageParamUnion{
            openai.UserMessage("Hello!"),
        },
    })
    if err != nil {
        panic(err)
    }
    fmt.Println(completion.Choices[0].Message.Content)
}

Java

使用 OpenAI 官方 Java SDK(com.openai:openai-java):
<dependency>
    <groupId>com.openai</groupId>
    <artifactId>openai-java</artifactId>
    <version>LATEST</version>
</dependency>
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.ChatCompletion;
import com.openai.models.chat.completions.ChatCompletionCreateParams;

OpenAIClient client = OpenAIOkHttpClient.builder()
    .apiKey("YOUR_API_KEY")
    .baseUrl("https://api.apiyi.com/v1")
    .build();

ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
    .model("gpt-5.4")
    .addUserMessage("Hello!")
    .build();

ChatCompletion completion = client.chat().completions().create(params);
System.out.println(completion.choices().get(0).message().content().orElse(""));
老项目如果还在用第三方库(Go 的 sashabaranov/go-openai、Java 的 theokanning 系列),改 base_url 同样能跑通,但建议迁移到上面的官方 SDK —— 第三方库对新模型参数(如 reasoning_effort)跟进较慢。

常用功能

流式输出

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

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

推理控制

Chat Completions 端点用顶层 reasoning_effort 参数(注意与 Responses 端点的嵌套写法不同):
response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[{"role": "user", "content": "证明根号2是无理数"}],
    reasoning_effort="high"  # none / low / medium / high / xhigh
)
gpt-5 系列推理模型在该端点同样不支持 temperature / top_p,传了会报错。

图像输入

response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "这张图片里有什么?"},
                {"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}}
            ]
        }
    ]
)

Embeddings

response = client.embeddings.create(
    model="text-embedding-3-small",
    input="要嵌入的文本内容"
)
embedding = response.data[0].embedding

错误处理与重试

官方 SDK 内建自动重试(默认 2 次,针对 429 / 5xx / 连接错误),优先用它而不是自己写循环:
client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.apiyi.com/v1",
    max_retries=3,   # 内建指数退避重试
    timeout=60.0
)
需要精细处理时按异常类型捕获:
from openai import (
    APIError,
    APIConnectionError,
    RateLimitError,
    InternalServerError,
)

try:
    response = client.chat.completions.create(
        model="gpt-5.4",
        messages=[{"role": "user", "content": "Hello"}]
    )
except RateLimitError:
    print("请求频率超限,稍后重试")
except APIConnectionError:
    print("网络连接错误,检查网络或代理")
except InternalServerError:
    print("上游服务错误,建议重试")
except APIError as e:
    print(f"API 错误:{e}")

兼容模式的能力边界

能力兼容模式说明
基础对话 / 流式 / 多模态输入完整支持
函数调用(FC)FC函数调用
Prompt 缓存折扣OpenAI 模型自动生效,见 缓存计费
内置工具(联网搜索、代码解释器等)原生调用
状态管理(previous_response_id)仅原生调用,兼容模式需自己拼历史
verbosity 输出控制仅原生调用
Pro 系列模型(gpt-5.4-pro 等)实务上仅原生调用可用

从 OpenAI 官方迁移

已经在用 OpenAI 官方服务的项目,迁移只需两步、代码零改动:
  1. 换 base_url 和 key
# 原来
client = OpenAI(api_key="sk-...")

# 改为
client = OpenAI(
    api_key="YOUR_APIYI_KEY",
    base_url="https://api.apiyi.com/v1"
)
  1. 或者只改环境变量(代码完全不动)
export OPENAI_API_KEY="YOUR_APIYI_KEY"
export OPENAI_BASE_URL="https://api.apiyi.com/v1"
方法调用、参数格式、响应结构全部保持一致。

相关链接