这个项目能做什么

本仓库提供了一个供应商中立的 FastAPI 网关,旨在消除对 Gemini 或 OpenAI 等特定 LLM 供应商的直接依赖。应用程序不再硬编码如 'gemini-3.5-flash' 或 'gpt-5.6-terra' 之类的模型名称,而是通过 'fast'、'reasoning'、'cheap' 或 'embedding' 等稳定别名请求能力。该网关处理供应商选择、带有指数退避和抖动的重试逻辑、回退路由、超时强制执行、错误标准化、Token 使用跟踪、成本估算,以及在 SQLite 中持久化存储使用事件。 关键特性包括: - 基于模型别名的路由,具有有序的回退链 - 针对 Gemini 和 OpenAI 的供应商适配器 - 使用 JSON Schema 约束的结构化 JSON 输出 - 带有标准化元数据的文本嵌入 (Text embeddings) - 请求 ID 传播和延迟响应头 - 用于成本估算的可配置定价目录 - 按供应商/模型细分的用量分析端点 - 异步测试、Docker 支持和 GitHub Actions CI/CD - 包括生产环境 API 密钥认证在内的安全控制 该架构强制执行应用程序逻辑与 LLM 供应商复杂性之间的清晰分离。它包含用于请求上下文的中间件、类型化的 Pydantic 响应以及详细的日志记录。失败的尝试与成功的尝试一起被持久化,以保持运维透明度。系统具有可扩展性,但为了专注于核心抽象和可靠性,特意避免了 JWT 认证、流式传输或分布式速率限制等高级功能。 安装步骤包括克隆仓库、创建虚拟环境、安装依赖、在 .env 中配置 API 密钥,并通过 uvicorn 或 Docker 运行。Swagger 文档可在 /docs 获取。项目使用 Ruff、pytest、CodeQL 和 Dependabot 来保证代码质量和安全性。详细的 NOTES.md 解释了设计决策以及 AI 工程项目的学习目标。