接入文档
MiaoLiCi 提供 OpenAI 兼容协议——把 base_url 指向我们,剩下的代码一行不用动。本文档覆盖快速开始、SDK 示例、API 参考与进阶用法。
介绍
MiaoLiCi 是一个统一的大模型网关,把 OpenAI、Anthropic、Google、DeepSeek 等主流厂商的 API 抹平为同一套 OpenAI 兼容接口。你只需要管理一份密钥、看一份账单、读一份日志。
整体架构:
- API 入口:
https://miaolici.top/v1/*,与 OpenAI 同构 - 认证:
Authorization: Bearer sk-miaolici-... - 模型命名:直接使用厂商原始模型名,如
gpt-5/claude-opus-4-7/gemini-3-pro
5 分钟快速开始
- 访问 控制台,注册账号(注册即送 ¥2 体验额度)
- 进入「令牌管理」,点击「创建令牌」,复制以
sk-miaolici-开头的密钥 - 在你的项目里把
OPENAI_API_BASE改成https://miaolici.top/v1 - 把
OPENAI_API_KEY改成刚才复制的密钥 - 跑一条请求,去「使用日志」核对——成功 ✅
提示:所有现有的 OpenAI SDK / LangChain / LlamaIndex / Cline / Cursor / Claude Code 都开箱即用,因为它们都支持自定义 base_url。
认证与令牌
令牌按用户隔离,可设置:
- 额度上限:单令牌可用额度,超出后自动停用
- 模型白名单:限制该令牌只能调用某些模型
- 过期时间:到期自动失效
- 分组覆盖:强制走指定的高可用渠道分组
建议生产环境每个服务一个独立令牌,便于审计与撤销。
curl
curl
curl https://miaolici.top/v1/chat/completions \ -H "Authorization: Bearer $MIAOLICI_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-opus-4-7", "messages": [ {"role": "user", "content": "用一句话介绍 MiaoLiCi"} ], "stream": false }'
Python (openai)
使用官方 openai SDK ≥ 1.0:
python
from openai import OpenAI client = OpenAI( api_key="sk-miaolici-xxx", base_url="https://miaolici.top/v1", ) resp = client.chat.completions.create( model="gpt-5", messages=[{"role": "user", "content": "Hi"}], temperature=0.7, ) print(resp.choices[0].message.content)
Node.js
javascript
import OpenAI from "openai"; const client = new OpenAI({ apiKey: process.env.MIAOLICI_KEY, baseURL: "https://miaolici.top/v1", }); const resp = await client.chat.completions.create({ model: "claude-sonnet-4-6", messages: [{ role: "user", content: "Hi" }], }); console.log(resp.choices[0].message.content);
Go
go
package main import ( "context" "fmt" openai "github.com/sashabaranov/go-openai" ) func main() { cfg := openai.DefaultConfig("sk-miaolici-xxx") cfg.BaseURL = "https://miaolici.top/v1" cli := openai.NewClientWithConfig(cfg) resp, _ := cli.CreateChatCompletion(context.Background(), openai.ChatCompletionRequest{ Model: "gemini-3-pro", Messages: []openai.ChatCompletionMessage{ {Role: "user", Content: "Hi"}, }, }) fmt.Println(resp.Choices[0].Message.Content) }
Chat Completions
POST /v1/chat/completions ——与 OpenAI 接口完全一致。常用参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| model | string | 模型 ID,如 gpt-5、claude-opus-4-7 |
| messages | array | 消息历史,role ∈ {system, user, assistant, tool} |
| stream | boolean | 是否启用 SSE 流式输出 |
| temperature | number | 采样温度 0–2,建议 0.7 |
| max_tokens | integer | 输出 token 上限 |
| tools | array | 函数调用 / MCP 工具定义 |
| response_format | object | 结构化输出,{"type":"json_object"} |
Embeddings
POST /v1/embeddings ——支持 text-embedding-3-large、bge-m3、voyage-3 等。
Images / Vision
多模态调用通过 messages[].content 数组传入:
json
{
"model": "gpt-5",
"messages": [{
"role": "user",
"content": [
{"type": "text",
"text": "这张图里有什么?"},
{"type": "image_url",
"image_url": {"url": "https://..."}}
]
}]
}
Audio
支持 Whisper-v4 转写与 OpenAI / ElevenLabs TTS:
POST /v1/audio/transcriptions——音频转文字POST /v1/audio/speech——文字转语音
Prompt Cache
Anthropic 与 OpenAI 都支持 prompt cache。在请求里加 cache_control 即可命中:
命中后输入按
1.25× 输入价 × 10% 计费,可节省 87% 重复请求成本。命中信息会写到日志「详情」字段中。流式响应
设置 stream: true 后会返回 SSE 流,每帧符合 OpenAI Chunk 格式。
错误码
| HTTP | 含义 | 处理建议 |
|---|---|---|
| 400 | 请求参数错误 | 检查 JSON 结构与必填字段 |
| 401 | 认证失败 | 检查 Authorization 头是否携带正确 Token |
| 402 | 额度不足 | 到「钱包管理」充值 |
| 429 | 触发限流 | 退避重试,或升级到 ClaudeMax 分组 |
| 500 | 上游错误 | 稍后重试,会自动绕路 |
速率与限额
默认分组:60 RPM · 200 RPS · 单请求 ≤ 1M token。
ClaudeMax:不限速 · 单请求 ≤ 1M token · 长文档优化。
Enterprise:按合同约定,可定制私有渠道与专属速率上限。
如果你看到 429,先到「使用日志」筛选这一分钟的请求量;若确认接近上限请升级分组,或者邮件 hi@miaolici.top 申请临时提额。
最后更新:2026-05-19
📩 报告文档问题