
很多 AI 应用把模型供应商写死在业务代码里后续想切换模型时往往需要改配置、改鉴权、改请求路径。本文用 Shannon API 做一个 OpenAI-compatible 和 Anthropic-compatible 的接入示例重点放在工程问题模型发现、计费确认、错误处理和限流。Shannon API 是独立运营的多模型 API 聚合服务不代表 OpenAI、Anthropic、Google 或其他模型厂商。模型和价格以模型广场实时页面为准。1. 模型发现优先于模型硬编码不要直接把网上看到的模型名写进生产配置。先请求curl https://api.shannonapi.xyz/v1/models \ -H Authorization: Bearer $SHANNON_API_KEY然后把返回的模型 ID 写入配置中心。模型广场Shannon API - AI API Gateway公开分组需要区分福利组当前倍率为0.009xGPT 特价为0.119xClaude Max 满血为1.33x。这些不是同一分组也不能把0.009x解释为 Claude Max 的最终单价。实际价格还跟模型基础价格、输入输出 Token、缓存和当前分组价格卡有关。2. OpenAI SDK 只替换配置import os from openai import OpenAI client OpenAI( api_keyos.environ[SHANNON_API_KEY], base_urlhttps://api.shannonapi.xyz/v1, ) response client.chat.completions.create( modelos.environ[SHANNON_MODEL], messages[ {role: system, content: 你是一个严谨的编程助手。}, {role: user, content: 解释这段代码的时间复杂度。}, ], timeout60, ) print(response.choices[0].message.content)生产环境建议把 Key、Base URL 和模型名放入环境变量不要写入 Git。3. Anthropic Messages 接口import os import requests response requests.post( https://api.shannonapi.xyz/v1/messages, headers{ x-api-key: os.environ[SHANNON_API_KEY], anthropic-version: 2023-06-01, content-type: application/json, }, json{ model: os.environ[SHANNON_CLAUDE_MODEL], max_tokens: 1024, messages:[{role:user, content:请总结这段文本。}], }, timeout60, ) response.raise_for_status() print(response.json())4. 重试不能写成无限循环建议对 429、502、503 使用有限次数的指数退避对 401、404、402 直接中止并提示配置问题。流式请求超时后不能不加判断地重复提交因为上游可能已经处理了请求。实际吞吐量 min(RPM, TPM / 平均单次 Token, 并发数 × 60 / 平均响应秒数)5. 限流参数怎么定普通用户可从 60 RPM、并发 5 以内开始项目用户根据 P95 延迟和失败率申请 180–300 RPM、并发 10–20批量或蒸馏用户优先协商 TPM、队列和每日额度。不要用多账号、多 Key 或代理 IP 绕过限制。6. 排错顺序401看请求头和 Key 状态。404看模型是否来自当前/v1/models。402看余额、额度和订单。429看 RPM、并发、Token 和上游容量。5xx记录时间、模型、请求 ID稍后按退避策略重试。完整文档飞书接入文档官网和模型广场Shannon API - AI API Gateway