celeste-python
统一 20+ AI 提供商的全模态 Python SDK
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
统一 20+ AI 提供商的全模态 Python SDK
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样的场景:你开发了一款 AI 辅助工具,功能强大,但每当 OpenAI 涨价、Anthropic 发布新模型、Google Gemini 更新 API,你都得在代码里改上好几天——每个提供商的调用方式完全不同,参数名不一致,返回格式天差地别。更糟的是,你的工具现在需要同时支持文本生成、图片生成、语音合成、视频分析,每换一次模型就像在缝补一件千疮百孔的毛衣。
这正是 Celeste AI 诞生的背景。它由独立开发者 Kamilbenkirane 创立,GitHub 仓库 withceleste/celeste-python 现已积累 218 颗星。作为一个纯 Python SDK,它的核心使命只有一个:让开发者用同一套 API,调用 20+ 主流 AI 提供商的所有能力,从文本到图片、从语音到视频、从 Embeddings 到结构化输出。
Celeste AI 项目 Logo,图源 GitHub 仓库
Celeste 的设计哲学值得玩味——它自称"原语层"(Primitive Layer),而不是"框架"。这两者有本质区别:
官方 README 说得直白:"No agents, no chains, no magic." 不玩抽象概念,不搞黑盒编排,直接给你干净的输入输出。用 Kamilbenkirane 的话说,他要解决的是"每个提供商都有自己的一套'方言'"的问题——Celeste 负责翻译,你只管说自己的"普通话"。
从源码结构来看,Celeste 采用了清晰的三层架构:
路径:src/celeste/providers/<vendor>/<api>/
每个 AI 提供商有自己的 HTTP 接口规范,Celeste 在这一层做"方言翻译"。目录按"提供商/接口"命名,如 anthropic/messages、openai/chat、elevenlabs/text_to_speech。这里只做纯粹的 HTTP 映射和请求组装,不含任何业务逻辑。
路径:src/celeste/modalities/<modality>/providers/<vendor>/
这一层是 Celeste 的核心智慧:把"文本生成"(generate)、"图像生成"(generate)、"语音合成"(speak)这些操作和具体的模态(text/images/audio)分开,再和具体的提供商组合。关键文件:
client.py:组合 Wire 层 + 模态客户端parameters.py:绑定统一参数名(如 .model)models.py:模型目录清单这意味着,当你调用 celeste.images.generate() 时,Celeste 自动根据你传入的 model 参数选择对应的 Provider Wire 层,你完全不需要知道底层用的是 OpenAI 的 DALL-E 还是 Black Forest Labs 的 FLUX。
路径:src/celeste/protocols/ + src/celeste/modalities/text/protocols/
"协议"是一种共享的 wire 格式,可被多个提供商使用。当前 Celeste 支持两个协议:
这个设计的精妙之处在于:修改协议层的代码会自动影响所有继承该协议的提供商——改一处,全链路生效。
让我们来验证 Celeste 的核心卖点。以结构化输出(Structured Output)为例,这是 AI 应用开发中的高频需求——让大模型返回 JSON 格式的强类型数据。
用原生各 SDK 的方式,Anthropic 需要导入官方 SDK、构造复杂的 output_format 参数、最后还得手动 json.loads 解析。Google Gemini 则用另一套 response_schema 机制,返回的 .parsed 对象处理方式又不一样。
用 Celeste:
import celeste
response = await celeste.text.generate(
"Extract user info: John is 30",
model="claude-4-5-sonnet",
output_schema=User,
)
user = response.content
一行切换的承诺是真实存在的。Celeste 把各提供商的差异化参数统一封装成 .model、.output_schema 等标准参数,你不需要记住 Anthropic 用 output_format 而 Gemini 用 response_schema。
从项目架构可以完整看到 Celeste 的能力矩阵:
| 模态 | text | images | audio | videos | embeddings |
|---|---|---|---|---|---|
| 生成 | ✓ | ✓ | ✓ | ✓ | — |
| 编辑 | — | ✓ | — | — | — |
| 分析 | — | ✓ | ✓ | ✓ | — |
| 合成 | — | — | ✓ | — | — |
| 转录 | — | — | ✓ | — | — |
| Embedding | ✓ | ○ | — | ○ | ✓ |
支持的提供商包括:OpenAI、Anthropic、Google (Gemini)、Mistral、Cohere、xAI、DeepSeek、Ollama、Groq、ElevenLabs、BytePlus、Black Forest Labs、HuggingFace、Moonshot、FAL、TopazLabs、OpenRouter、Gradium 等,覆盖全球主流大模型服务商。
Celeste 的安装极为简单:
pip install celeste-ai
uv add celeste-ai
支持的 Python 版本:3.12 及以上(这是需要注意的门槛,很多企业项目仍在使用 3.10 或 3.11)。配置文件通过 .env 文件管理 API Key,项目提供了 .env.example 模板。
对于 AI 爱好者:Celeste 不是一个可以直接对话的 UI 产品,而是一个开发工具。如果你有 Python 基础 + API Key,10 分钟就能写出第一个多模态 AI 应用。
对于 AI 开发者:Celeste 的价值在于消除 Provider 切换成本。如果你需要同时调用多个大模型,或需要快速在 Claude 和 Gemini 之间 A/B 测试,Celeste 可以显著减少集成工作量。
从源码和 pyproject.toml 可以看出项目的工程化水准:
py.typed marker 声明完整pytest + pytest-asyncio + pytest-xdist(并行测试)+ pytest-covruff(lint + format)+ mypy(静态类型检查)双重守卫bandit 安全检查集成在 Makefilepre-commit 配置自动化代码检查uv 统一管理,CI/CD 流水线完整整体代码质量评分可以给到 85/100,扣分项主要是项目较新(v0.11.0 Beta),测试覆盖率数据未公开披露。
Celeste 也不是银弹,以下几点值得注意:
README 明确标注 v1 Beta,API 在正式版发布前可能有不兼容变更llama.cpp 那样支持 GGUF 量化模型直接运行Celeste 代表的并非孤例。从更大的视角看,AI 行业正在经历从"单模型竞争"到"多模型协作"的范式转移。随着 Claude、GPT-4o、Gemini 2.5、Llama 4 等模型能力的趋同,如何在这些模型之间灵活切换、成本优化、避免供应商锁定,正在成为新的工程难题。
Celeste 踩中的正是这个痛点。它的定位类似于 AI 领域的 Stripe(支付领域的统一 API)——不发明新的支付方式,只是把现有方式用统一的接口暴露出来。这种"翻译层"的思路,恰好契合了当前 Agentic AI 应用(需要调用多个模型完成复杂任务)的大趋势。
总结:Celeste AI 是一个设计优雅、代码质量高、工程化程度出色的多模态 AI SDK。它用"原语层"的哲学做减法,通过三层架构实现了跨提供商的无缝切换,适合需要集成多 AI 能力的开发者。如果你正在构建 AI 应用且希望摆脱单一 Provider 依赖,Celeste 是一个值得优先考虑的选择——尤其是它的 MIT 许可证和持续活跃的维护节奏。