with one click
api-wrapper
国内AI平台API统一封装 —— DeepSeek / 通义千问 / 百度文心 / 讯飞星火 一键切换
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
国内AI平台API统一封装 —— DeepSeek / 通义千问 / 百度文心 / 讯飞星火 一键切换
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
中文代码生成规范:命名规范、注释规范、多语言代码规则、CRUD模板、代码审查清单
一键配置国内AI开发环境——DeepSeek/通义千问/豆包/百度文心/讯飞星火API适配,WSL/Windows/Mac三环境自动检测,代理配置,故障排查
国内云服务部署完全指南 —— 阿里云ECS / 腾讯云 / CDN / 备案 / 镜像加速 / CI/CD / 成本估算
中文Prompt模板库——20+即用模板涵盖代码审查、架构设计、Bug修复、重构、测试、文档、API设计,附最佳实践
中文爬虫工具集 —— Python requests/BS4 爬虫模板、反爬虫绕过、Selenium 自动化、数据导出
WSL/Windows双环境自动化管理——轻松在WSL和Windows之间协作,解决Interop/路径/权限/代理/性能问题
| name | api-wrapper |
| description | 国内AI平台API统一封装 —— DeepSeek / 通义千问 / 百度文心 / 讯飞星火 一键切换 |
| version | 2.0.0 |
| author | lzhao8956-glitch |
| license | MIT |
| metadata | {"hermes":{"tags":["api","china","deepseek","qwen","ernie","spark","wrapper"],"related_skills":["cn-dev-setup","python-utils"]}} |
一套 Python 代码搞定 DeepSeek、通义千问 (DashScope)、百度文心 (ERNIE)、讯飞星火四个平台的 API 调用。提供统一接口,一行代码切换任意模型,内置重试、错误处理、Token 计数。
| 平台 | SDK 类 | 默认模型 | 鉴权方式 | 费用参考 |
|---|---|---|---|---|
| DeepSeek | DeepSeekAPI | deepseek-chat | API Key (兼容 OpenAI 格式) | ¥1/百万 tokens |
| 通义千问 | DashScopeAPI | qwen-max | API Key (Bearer Token) | 有免费额度 |
| 百度文心 | ERNIEAPI | ernie-4.0 | API Key + Secret Key (OAuth) | 按量付费 |
| 讯飞星火 | SparkAPI | spark-3.5 | App ID + API Key + Secret | 有免费额度 |
pip install requests
根据你要使用的平台,设置对应的密钥:
# DeepSeek
export DEEPSEEK_API_KEY="sk-xxxxxxxxxxxxxxxx"
# 通义千问
export DASHSCOPE_API_KEY="sk-xxxxxxxxxxxxxxxx"
# 百度文心
export ERNIE_API_KEY="xxxxxxxxxxxx"
export ERNIE_SECRET_KEY="xxxxxxxxxxxx"
# 讯飞星火
export SPARK_APP_ID="xxxxx"
export SPARK_API_KEY="xxxxxxxxxxxx"
export SPARK_API_SECRET="xxxxxxxxxxxx"
也可以直接在代码中传入参数(见下文)。
from api_wrapper import call_ai, extract_content
# DeepSeek
resp = call_ai("deepseek", "用 Python 写一个快排")
print(extract_content(resp))
# 切到通义千问 —— 改一个参数名即可
resp = call_ai("qwen", "用 Python 写一个快排")
print(extract_content(resp))
# 百度文心
resp = call_ai("ernie", "用 Python 写一个快排")
print(extract_content(resp))
# 讯飞星火
resp = call_ai("spark", "用 Python 写一个快排")
print(extract_content(resp))
resp = call_ai(
platform="deepseek",
prompt="解释一下什么是闭包",
system_prompt="你是一位资深 Python 架构师,回答简洁、深刻。",
model="deepseek-chat",
temperature=0.3,
stream=False, # 暂不支持流式解析,保留字段
)
call_ai(platform, prompt, ...) — 统一入口| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
platform | str | 必填 | 平台名称: deepseek / qwen (或 dashscope) / ernie (或 baidu) / spark (或 xunfei) |
prompt | str | 必填 | 用户输入文本 |
system_prompt | str | None | None | 系统提示词 |
model | str | None | 各平台默认值 | 模型名称,如 deepseek-chat, qwen-max, ernie-4.0, spark-3.5 |
temperature | float | 0.7 | 生成温度 (0~2),值越大输出越随机 |
stream | bool | False | 是否启用流式 (传递到 API) |
**kwargs | dict | — | 透传给平台构造函数的额外参数,例如 api_key、secret_key 等 |
返回: 原始 API JSON 响应 (dict)
extract_content(response) — 统一内容提取从各平台不同格式的响应中提取模型生成的文本。
| 参数 | 类型 | 说明 |
|---|---|---|
response | dict | call_ai() 返回的原始响应 |
返回: 模型回复文本 (str)
create_api(platform, **kwargs) — 客户端工厂获取指定平台的 API 客户端实例,适用于需要复用客户端的场景。
from api_wrapper import create_api
client = create_api("deepseek", api_key="sk-xxx")
resp = client.chat(
messages=[{"role": "user", "content": "你好"}],
model="deepseek-chat",
)
estimate_tokens(text) — 简易 Token 估算from api_wrapper import estimate_tokens
tokens = estimate_tokens("你好世界") # ≈ 5
注意: 这是基于字符数的粗略估算(中英文混合 ×1.3),仅用于日志和成本展示,不可替代平台的精确计数。
用户代码
│
▼
call_ai(platform, prompt, ...) ← 统一入口
│
▼
create_api(platform, **kwargs) ← 工厂模式
│ │ │ │
▼ ▼ ▼ ▼
DeepSeekAPI DashScopeAPI ERNIEAPI SparkAPI
│ │ │ │
└──────────────┴──────────────┴──────────────┘
│
retry_on_failure ← 指数退避重试
estimate_tokens ← 简易 Token 计数
extract_content ← 统一内容提取
ConnectionError 和 Timeout 会自动重试@retry_on_failure(max_retries=5, backoff=1.0) 自定义| 异常类型 | 说明 |
|---|---|
ValueError | 缺少 API Key、不支持的平台 |
RuntimeError | API 返回错误 (含状态码和响应体) |
requests.ConnectionError | 网络不可达(会被重试) |
requests.Timeout | 请求超时(会被重试) |
所有异常都包含中文错误消息,便于排查。
每次调用返回的原始响应中包含了平台的用量数据,call_ai() 内部会自动打印日志:
2026-04-29 13:25:01 [INFO] api-wrapper: DeepSeek [deepseek-chat] ↑42 ↓158 tokens
你可以从 response["usage"] 或 extract_content() 之外的工具函数中提取具体数字。
安装后也支持命令行调用:
# 调用 DeepSeek
python api_wrapper.py deepseek "你好, 请自我介绍一下"
# 调用通义千问
python api_wrapper.py qwen "用 Python 写一个二分查找"
# 调用百度文心
python api_wrapper.py ernie "解释量子计算的基本原理"
api-wrapper/
├── SKILL.md ← 本文档
└── api_wrapper.py ← 完整 Python 封装实现
api_wrapper.py 约 380 行,包含了全部四个平台的 API 实现、统一入口、重试机制、错误处理和 CLI 入口。
stream=True 会透传参数到 API,但未提供流式解析回调。如需完整流式支持,可基于 api_wrapper.py 扩展 SSE/WebSocket 处理。estimate_tokens() 是粗略值,实际消耗以各平台返回的用量为准。如果要添加新平台(例如 豆包、Kimi、百川),只需三步:
api_wrapper.py 中新增一个类,实现 chat(messages, model, temperature, stream) -> dict 方法_platform_registry 字典中注册类名_default_model 字典中加入默认模型名无需修改任何调用侧代码。
MIT