统一 API,接入海量模型
YunYi API 提供兼容 OpenAI、Claude 和 Gemini 的统一接口。使用一个 API Key,即可在你的应用中切换不同模型。
快速开始
所有 OpenAI 兼容请求都使用以下地址作为 Base URL:
https://ai.yunyi.pw/v1安装官方 OpenAI SDK 后,将 base_url 指向 YunYi API:
from openai import OpenAI
client = OpenAI(
api_key="sk-your-key",
base_url="https://ai.yunyi.pw/v1"
)
response = client.chat.completions.create(
model="你的模型名称",
messages=[{"role": "user", "content": "你好"}]
)
print(response.choices[0].message.content)
鉴权
在请求头中使用 Bearer Token 传递 API Key。请将密钥保存在服务端环境变量中,不要写入前端代码。
Authorization: Bearer sk-your-key
Content-Type: application/json
Chat Completions
/v1/chat/completions适用于多轮对话、文本生成和常见的 OpenAI SDK 工作流。
curl https://ai.yunyi.pw/v1/chat/completions \
-H 'Authorization: Bearer sk-your-key' \
-H 'Content-Type: application/json' \
-d '{"model":"你的模型名称","messages":[{"role":"user","content":"你好"}]}'
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model |
string | 是 | 控制台中可用的模型名称。 |
messages |
array | 是 | 对话消息数组。 |
stream |
boolean | 否 | 设为 true 时返回 SSE 流。 |
temperature |
number | 否 | 控制输出随机性。 |
Responses API
/v1/responses用于支持 Responses API 的模型和工具调用工作流。
curl https://ai.yunyi.pw/v1/responses \
-H 'Authorization: Bearer sk-your-key' \
-H 'Content-Type: application/json' \
-d '{"model":"你的模型名称","input":"用一句话介绍人工智能"}'
Claude 兼容接口
/v1/messages可使用 Anthropic SDK 或直接发送兼容 Messages API 的请求。
curl https://ai.yunyi.pw/v1/messages \
-H 'x-api-key: sk-your-key' \
-H 'anthropic-version: 2023-06-01' \
-H 'Content-Type: application/json' \
-d '{"model":"你的模型名称","max_tokens":1024,"messages":[{"role":"user","content":"你好"}]}'
Google 生图
/v1/chat/completions四个 Gemini 生图模型统一使用 OpenAI 兼容的 Chat Completions 协议,只需替换 model 名称即可。鉴权使用 Authorization: Bearer 请求头。
| 模型别名 | 上游模型名称 | 用途 |
|---|---|---|
nano-banana-pro | gemini-3-pro-image | 生图与图像编辑 |
nano-banana-pro-oreview | gemini-3-pro-image-preview | 预览版生图与图像编辑 |
nano-banana-2 | gemini-3.1-flash-image | 生图与图像编辑 |
nano-banana-2-preview | gemini-3.1-flash-image-preview | 预览版生图与图像编辑 |
https://ai.yunyi.pw/v1,完整接口地址为 /v1/chat/completions。请求和响应格式遵循 OpenAI Chat Completions 规范。文生图
将提示词作为 user 消息发送,图片会在响应的 choices[0].message.content 中以 Markdown 图片和 Base64 Data URL 返回。
curl --location --request POST 'https://ai.yunyi.pw/v1/chat/completions' \
--header 'Authorization: Bearer sk-your-key' \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "nano-banana-pro",
"stream": false,
"messages": [{"role": "user", "content": "生成一个小猫"}]
}'
图生图
将文本指令和 Base64 图片以 OpenAI 多模态消息格式放入同一条 user 消息中。
curl --location --request POST 'https://ai.yunyi.pw/v1/chat/completions' \
--header 'Authorization: Bearer sk-your-key' \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "nano-banana-2",
"stream": false,
"messages": [{"role": "user", "content": [
{"type": "text", "text": "请将这张图片改成水彩画风格,保留主体构图。"},
{"type": "image_url", "image_url": {"url": "data:image/png;base64,"}}
]}]
}'
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 填写上方任一模型别名。 |
messages | array | 是 | 文生图使用文本 content;图生图使用 text 与 image_url 内容数组。 |
stream | boolean | 否 | 是否启用流式响应。 |
image_url.url | string | 图生图必填 | 格式为 data:<mime_type>;base64,<image_base64>。 |
响应示例
{
"model": "nano-banana-pro",
"choices": [{"message": {"role": "assistant", "content": ""}}]
}
GPT Image 文生图
/v1/images/generations使用 OpenAI Images API 协议,根据中文提示词生成图片。返回结果默认包含 Base64 编码的 PNG 数据。
curl --location --request POST 'https://ai.yunyi.pw/v1/images/generations' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer sk-your-key' \
--data-raw '{
"model": "gpt-image-2",
"prompt": "一只白色小猫坐在窗边,电影感光影",
"size": "1024x1024"
}'
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model |
string | 是 | 固定填写 gpt-image-2。 |
prompt |
string | 是 | 图片生成提示词,支持中文。 |
size |
string | 否 | 图片尺寸,例如 1024x1024。 |
响应示例
{
"created": 1788504564,
"data": [{
"revised_prompt": "一只白色小猫坐在窗边,电影感光影",
"b64_json": "iVBORw0KGgoAAAANSUhEUg..."
}],
"usage": {
"input_tokens": 15,
"output_tokens": 1056,
"total_tokens": 1071
}
}
GPT Image 图生图
/v1/images/edits使用 OpenAI Images API 协议,根据提示词编辑一张或多张参考图片。请求采用 multipart/form-data 格式。
curl --location --request POST 'https://ai.yunyi.pw/v1/images/edits' \
--header 'Authorization: Bearer sk-your-key' \
--form 'model="gpt-image-2"' \
--form 'prompt="把250改为300"' \
--form 'image=@"./source-1.png"' \
--form 'image=@"./source-2.png"'
表单参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model |
string | 是 | 固定填写 gpt-image-2。 |
prompt |
string | 是 | 描述希望对参考图进行的修改,支持中文。 |
image |
file | 是 | 参考图片,可重复传入多张图片。 |
响应示例
{
"created": 1788505112,
"data": [{
"revised_prompt": "把250改为300",
"b64_json": "iVBORw0KGgoAAAANSUhEUg..."
}],
"usage": {
"input_tokens": 15,
"output_tokens": 1056,
"total_tokens": 1071
}
}
流式响应
设置 stream: true 后,服务端会以 text/event-stream 返回数据。每个事件以 data: 开头,结束事件为
[DONE]。
{
"model": "你的模型名称",
"messages": [{"role": "user", "content": "写一首诗"}],
"stream": true
}
错误码
| 状态码 | 含义 | 处理建议 |
|---|---|---|
400 |
请求参数错误 | 检查 JSON、模型名称和必填字段。 |
401 |
鉴权失败 | 检查 API Key 和请求头格式。 |
404 |
接口或模型不存在 | 确认 Base URL 和模型名称。 |
429 |
请求过于频繁 | 降低请求频率,或稍后重试。 |
500 |
上游服务异常 | 稍后重试;持续发生时联系管理员。 |
模型与计费
可用模型、上下文长度、速率限制和价格以控制台实时配置为准。模型名称请从控制台或模型列表接口获取。