OpenAI 兼容 API 的推荐 Base URL:
https://miyang.cn/v1 继续兼容已有客户端;新接入请使用 https://miyang.cn/api/v1。
除公开的模型列表接口外,推理接口均需在请求头携带 API Key。支持两种请求头:
- 推荐:
Authorization: Bearer miyang-xxxxx - 备用:
x-api-key: miyang-xxxxx
API Key 在控制台创建并加密保存,可在「API Keys」页面再次查看和复制。
# Bearer Token(推荐) curl https://miyang.cn/api/v1/models \ -H "Authorization: Bearer miyang-xxx" # x-api-key(备用) curl https://miyang.cn/api/v1/models \ -H "x-api-key: miyang-xxx"
模型 ID 通常采用 {provider_slug}/{model_name} 格式。推荐使用 miyang/auto 自动选择模型,也可通过模型列表接口或控制台复制其他可用的调用 ID。
miyang/auto— 自动选择适合当前请求的模型miyang/standard— 标准档模型miyang/premium— 高级档模型
miyang/* 模型用于 Alice 客户端;其他应用或脚本请从模型列表中选择 usage_scope 为 general 的模型。
# 自动选择适合当前请求的模型 model = "miyang/auto"
每个 API Key 独立计数,默认 60 次/分钟,可在控制台调整上限。超出限速返回 429 Too Many Requests。
{
"error": {
"message": "Rate limit exceeded",
"type": "rate_limit_error",
"code": 1002
}
}
结算单位为米粒,按调用实时扣费。当前充值固定按 1 元人民币 = 140 米粒 到账,活动赠送另计。
- 调用前检查余额 > 0,余额不足返回
402 - 按 prompt + completion token 用量计费
- 支持 Prompt Cache:
cache_read_tokens按折扣价计算
可在控制台充值米粒,并在「用量明细」中查看调用和消费记录。
// 余额不足响应(402) { "error": { "message": "Insufficient balance", "type": "insufficient_balance", "code": 1004 } }
OpenAI 兼容的对话接口,支持流式和非流式输出。可直接替换 OpenAI SDK 的 base_url。
| 参数 | 类型 | 说明 |
|---|---|---|
| model 必填 | string | 模型 ID,格式 provider_slug/model |
| messages 必填 | array | 对话消息列表,每条含 role 和 content |
| stream | boolean | 是否启用流式输出(SSE),默认 false |
| temperature | float | 采样温度,范围 0–2 |
| max_tokens | integer | 最大输出 token 数 |
| response_format | object | 结构化输出格式,见「结构化输出」章节 |
curl https://miyang.cn/api/v1/chat/completions \ -H "Authorization: Bearer miyang-xxx" \ -H "Content-Type: application/json" \ -d '{ "model": "miyang/auto", "messages": [ {"role": "user", "content": "Hello!"} ], "stream": false }'
公开接口,无需 API Key。返回当前公开可用模型;携带 API Key 时还会按账号权限返回内部或白名单模型。响应字段在标准 OpenAI 格式基础上扩展了 pricing、context_length 和使用范围信息。
{
"object": "list",
"data": [
{
"id": "miyang/auto",
"object": "model",
"owned_by": "miyang",
"name": "自动",
"model_type": "text",
"usage_scope": "alice",
"usage_hint": "请在 Alice 客户端内使用",
"pricing": {
"prompt": "3.250000",
"completion": "13.500000",
"cache_read": "0.550000",
"cache_write": "0.000000"
},
"context_length": 262144
}
]
}
OpenAI 兼容的向量接口。模型是否支持向量任务,请以模型列表和控制台标记为准。
| 参数 | 类型 | 说明 |
|---|---|---|
| model 必填 | string | Embedding 模型调用 ID |
| input 必填 | string / array | 需要向量化的文本或文本数组 |
| encoding_format | string | 向量编码格式,常用值为 float |
curl https://miyang.cn/api/v1/embeddings \ -H "Authorization: Bearer miyang-xxx" \ -H "Content-Type: application/json" \ -d '{ "model": "provider/embedding-model", "input": "需要向量化的文本" }'
OpenAI 兼容的图像生成接口。根据文本 prompt 生成图像,响应返回图片 URL 或 Base64 数据,与 OpenAI Images API 完全兼容。
| 参数 | 类型 | 说明 |
|---|---|---|
| model 必填 | string | 模型 ID,格式 provider/model,如 ts/gpt-image-2 |
| prompt 必填 | string | 图像描述文本 |
| n | integer | 生成图像数量,默认 1,支持多张 |
| size | string | 图像尺寸。常用值:1024x1024(方图)、1024x1536(竖图)、1536x1024(横图)、auto(模型自动选择)。最大边长 3840px,两边须为 16 的倍数,长短边比不超过 3:1 |
| quality | string | 渲染质量:low(快速草稿)、medium、high、auto(默认,模型自动选择) |
| output_format | string | 输出格式:png(默认)、jpeg(更快)、webp |
| output_compression | integer | 压缩率 0–100,仅 JPEG / WebP 有效 |
| background | string | opaque(默认)或 transparent(透明背景,适合 icon/贴纸) |
| moderation | string | 内容审核:auto(默认)或 low(宽松) |
基础示例 — 文生图:
curl https://miyang.cn/api/v1/images/generations \ -H "Authorization: Bearer miyang-xxx" \ -H "Content-Type: application/json" \ -d '{ "model": "ts/gpt-image-2", "prompt": "A children'\''s book drawing of a veterinarian listening to the heartbeat of a baby otter", "size": "1024x1024", "quality": "high" }'
from openai import OpenAI import base64 client = OpenAI( api_key="miyang-xxx", base_url="https://miyang.cn/api/v1", timeout=180.0, # 图像生成需要较长超时 ) result = client.images.generate( model="ts/gpt-image-2", prompt="A children's book drawing of a veterinarian listening to the heartbeat of a baby otter", size="1024x1024", quality="high", ) print(result.data[0].url)
进阶示例 — JPEG 输出 + 压缩 + 保存到本地:
import httpx, json, base64 resp = httpx.post( "https://miyang.cn/api/v1/images/generations", headers={"Authorization": "Bearer miyang-xxx"}, json={ "model": "ts/gpt-image-2", "prompt": "A serene Japanese garden with a koi pond", "size": "1536x1024", "quality": "medium", "output_format": "jpeg", # jpeg 比 png 更快 "output_compression": 80, # 压缩率 0-100 }, timeout=180.0, ) data = resp.json() print(data["data"][0]["url"])
// 响应示例 { "created": 1779691963, "data": [ { "url": "https://image.token-recyclebin.com/images/2026/05/25/xxx.png", "revised_prompt": "A serene Japanese garden with a koi pond..." } ] }
尺寸与质量参考
| 参数 | 可选值 | 说明 |
|---|---|---|
| size | 1024x1024(方)1536x1024(横)1024x1536(竖)2048x2048(2K)3840x2160(4K 横)auto | 最大边长 ≤ 3840px,双边为 16 的倍数,比例 ≤ 3:1,总像素 655,360 – 8,294,400 |
| quality | low · medium · high · auto | low 最快,适合草稿和快速迭代;high 最精细,适合最终出图 |
| output_format | png · jpeg · webp | jpeg 比 png 更快,优先用于对延迟敏感的场景 |
GPT Image 2 参考定价(米粒 / 张)
| Quality | 1024×1024 | 1024×1536 / 1536×1024 |
|---|---|---|
| Low | 6 米粒 | 5 米粒 |
| Medium | 53 米粒 | 41 米粒 |
| High | 211 米粒 | 165 米粒 |
OpenAI 兼容的图像编辑接口。上传一张或多张参考图,配合文本 prompt 生成新图像。支持局部编辑(mask)和多图合成。请求使用 multipart/form-data 格式。
典型场景:
- 风格转换 — 上传照片 + "转为油画风格"
- 多图合成 — 上传多张素材 + "生成包含这些物品的礼品篮"
- 局部编辑 — 上传原图 + mask + "在遮罩区域添加一只火烈鸟"
| 参数 | 类型 | 说明 |
|---|---|---|
| model 必填 | string | 模型 ID,如 ts/gpt-image-2 |
| image 必填 | file / file[] | 参考图片。单张用 image,多张用 image[](支持多个 image[]=@file.png) |
| prompt 必填 | string | 编辑指令描述 |
| mask | file | 蒙版图片(需含 alpha 通道),透明区域为需要编辑的部分。多图时 mask 应用于第一张 |
| n | integer | 生成数量,默认 1 |
| size | string | 输出尺寸,默认 auto,支持与 Generations 相同的尺寸选项 |
| quality | string | low · medium · high · auto |
单图编辑 — 风格转换:
curl https://miyang.cn/api/v1/images/edits \ -H "Authorization: Bearer miyang-xxx" \ -F "model=ts/gpt-image-2" \ -F "prompt=Turn this photo into a Studio Ghibli style illustration" \ -F "image=@photo.png" \ -F "size=1536x1024"
from openai import OpenAI client = OpenAI( api_key="miyang-xxx", base_url="https://miyang.cn/api/v1", timeout=180.0, ) result = client.images.edit( model="ts/gpt-image-2", image=open("photo.png", "rb"), prompt="Turn this photo into a Studio Ghibli style illustration", ) print(result.data[0].url)
多图合成 — 将多张素材合为一张:
# 多图参考:用 image[] 传多张 curl https://miyang.cn/api/v1/images/edits \ -H "Authorization: Bearer miyang-xxx" \ -F "model=ts/gpt-image-2" \ -F "image[]=@lotion.png" \ -F "image[]=@soap.png" \ -F "image[]=@candle.png" \ -F 'prompt=A gift basket on a white background containing all these items'
局部编辑 — 使用 mask 遮罩:
# mask 需要有 alpha 通道,透明区域为编辑区 result = client.images.edit( model="ts/gpt-image-2", image=open("room.png", "rb"), mask=open("mask.png", "rb"), prompt="Add a flamingo in the pool area", quality="high", ) print(result.data[0].url)
为 Agent 和应用提供实时联网能力:网页搜索、新闻搜索和网页正文读取。全部为 GET 接口,使用与推理接口相同的 API Key 鉴权(Authorization: Bearer miyang-xxx)。
| 接口 | 参数 | 说明 |
|---|---|---|
| /api/v1/websearch/search | q | 深度搜索:结果附带页面正文抽取与重排序上下文,适合 RAG |
| /api/v1/websearch/simple-search | q | 快速搜索:仅返回标题和摘要,响应更快 |
| /api/v1/websearch/reader | url | 网页读取:抓取指定 URL 并转成干净文本 |
| /api/v1/websearch/search-news | q | 新闻搜索:只搜近期新闻源,结果同样附带检索上下文 |
完整搜索链路:搜索 → 页面内容抽取 → 向量检索 → 重排序。每条结果附带 contexts 正文片段,可直接喂给模型做引用回答。响应时间通常 3–8 秒。
| 参数 | 类型 | 说明 |
|---|---|---|
| q 必填 | string | 搜索关键词 |
curl "https://miyang.cn/api/v1/websearch/search?q=最新AI新闻" \ -H "Authorization: Bearer miyang-xxx"
// 响应示例 { "code": 200, "message": "ok", "took_ms": 4200, "data": { "organic": [ { "title": "AI News", "link": "https://example.com", "snippet": "Latest updates...", "contexts": [ { "idx": 0, "text": "..." } ] } ] } }
只做搜索、不做页面抽取和重排序,通常 1 秒内返回。适合只需要标题 + 摘要 + 链接的场景。命中答案卡片时响应会额外包含 answerBox 字段。
| 参数 | 类型 | 说明 |
|---|---|---|
| q 必填 | string | 搜索关键词 |
curl "https://miyang.cn/api/v1/websearch/simple-search?q=最新AI新闻" \ -H "Authorization: Bearer miyang-xxx"
// 响应示例 { "code": 200, "message": "ok", "took_ms": 950, "data": { "answerBox": { "title": "Latest AI news", "snippet": "..." }, "organic": [ { "title": "AI News", "link": "https://example.com", "snippet": "Latest updates..." } ] } }
已知目标网页 URL 时,抓取页面并转换为干净的 Markdown 文本。注意此接口返回的是顶层 content 字段,而不是 data。
| 参数 | 类型 | 说明 |
|---|---|---|
| url 必填 | string | 要读取的网页地址,必须以 http:// 或 https:// 开头 |
curl "https://miyang.cn/api/v1/websearch/reader?url=https://go.dev" \ -H "Authorization: Bearer miyang-xxx"
// 响应示例(content 为页面正文) { "code": 200, "message": "ok", "content": "# The Go Programming Language\n\nGo is an open source programming language..." }
只搜索近期新闻源,其余链路与深度搜索一致,结果同样附带 contexts 正文片段。
404(响应体为 {"code": 404, "message": "no search results"}),这属于正常业务结果,不扣费。
| 参数 | 类型 | 说明 |
|---|---|---|
| q 必填 | string | 新闻搜索关键词 |
curl "https://miyang.cn/api/v1/websearch/search-news?q=OpenAI" \ -H "Authorization: Bearer miyang-xxx"
// 响应示例 { "code": 200, "message": "ok", "took_ms": 4200, "data": { "organic": [ { "title": "Latest OpenAI news", "link": "https://example.com/news", "snippet": "Recent product and research updates...", "contexts": [ { "idx": 0, "text": "..." } ] } ] } }
在请求体中设置 "stream": true 启用流式输出,响应格式与 OpenAI 的 SSE 规范完全兼容。流式结束标志为 data: [DONE]。
from openai import OpenAI client = OpenAI( api_key="miyang-xxx", base_url="https://miyang.cn/api/v1", ) stream = client.chat.completions.create( model="miyang/auto", messages=[{"role": "user", "content": "Hello!"}], stream=True, ) for chunk in stream: print(chunk.choices[0].delta.content, end="")
透传 response_format 字段,支持 JSON Schema。由上游模型保证输出格式,平台不做额外处理。
{
"model": "miyang/auto",
"messages": [...],
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "result",
"schema": {
"type": "object",
"properties": {
"answer": { "type": "string" }
}
}
}
}
}
对支持 Prompt Cache 的模型,上游返回的缓存命中 token 会按折扣价计费。平台完整透传上游 usage 字段,账单中会显示缓存命中量。
不同供应商的字段名称有差异:
cache_read_input_tokens— Anthropicprompt_cache_hit_tokens— DeepSeekcached_tokens— OpenAI
{
"usage": {
"prompt_tokens": 1000,
"completion_tokens": 200,
"cache_read_input_tokens": 800, // Anthropic
"prompt_cache_hit_tokens": 800, // DeepSeek
"cached_tokens": 800 // OpenAI
}
}
只需替换 base_url 和 api_key,即可通过 OpenAI SDK 调用。
from openai import OpenAI client = OpenAI( api_key="miyang-xxx", base_url="https://miyang.cn/api/v1", ) resp = client.chat.completions.create( model="miyang/auto", messages=[{"role": "user", "content": "Hello!"}], ) print(resp.choices[0].message.content)
# 非流式 curl https://miyang.cn/api/v1/chat/completions \ -H "Authorization: Bearer miyang-xxx" \ -H "Content-Type: application/json" \ -d '{ "model": "miyang/auto", "messages": [{"role": "user", "content": "Hello"}] }' # 流式 curl https://miyang.cn/api/v1/chat/completions \ -H "Authorization: Bearer miyang-xxx" \ -H "Content-Type: application/json" \ -d '{ "model": "miyang/auto", "messages": [{"role": "user", "content": "Hello"}], "stream": true }'