mozilla-ai/otari

Open-source, OpenAI-compatible LLM gateway you run yourself. One endpoint for 40+ providers, with virtual keys, budgets, and usage tracking.

Otari – 自托管的 OpenAI 兼容 LLM 网关

它是什么 – Otari 是一个轻量级、开源的服务器,位于您的应用程序与任何 LLM 提供商(OpenAI、Anthropic、Azure 等)之间。它提供一个单一的 OpenAI 兼容 API 端点,同时处理身份验证、凭据存储、预算执行、路由策略、使用跟踪以及可选的护栏服务。

主要功能

  • 多提供商路由 – 一个 /v1/chat/completions 端点可以将请求转发到 40 多个后端。您在 YAML 文件中配置提供商;Otari 在请求时解析正确的 API 密钥。
  • 访问控制 – 可撤销的 API 密钥,按用户、工作区和模型进行范围限定。密钥以加密方式存储,并可通过 Web 仪表板进行管理。
  • 预算和支出限制 – 定义每个用户或每个工作区的预算;Otari 在调度前检查预算,并在调用后记录实际支出。
  • 路由策略 – 简单的故障转移、加权负载均衡或学习式选择策略,为请求选择最佳提供商。
  • 内置工具 – 可选的沙盒代码执行、网络搜索、多调用计划(MCP)、推理护栏和文件理解服务,可附加到请求中。
  • 部署 – 作为单进程 Docker 容器(带 SQLite,临时性)运行,或作为完整堆栈(带 PostgreSQL、多个可选服务和多租户控制平面 otari.ai)运行。
  • 开发者友好性 – 提供 Swagger UI、OpenAPI 规范和 Python SDK(any-llm),便于集成。现有的 OpenAI 客户端库只需将 base_url 指向 Otari 即可。

典型使用场景

  • 希望将提供商 API 密钥保留在防火墙内,同时向内部服务暴露统一端点的公司。
  • 需要按项目预算和 LLM 使用审计日志的团队。
  • 构建代理(例如 Claude Code)的开发者,希望在不修改每个模型客户端代码的情况下获得自动护栏和工具集成。
  • 任何希望尝试不同 LLM 提供商而无需重写应用程序代码的人。

快速开始

# 使用 Docker 运行一次性网关(SQLite)
docker run --rm -p 8000:8000 \
  -e OTARI_MASTER_KEY=SET_A_MASTER_KEY \
  -e OPENAI_API_KEY=$YOUR_OPENAI_KEY \
  -e OTARI_CONFIG_YAML='default_pricing: true
providers:
  openai:
    api_key: ${OPENAI_API_KEY}' \
  mzdotai/otari:latest otari serve

容器在首次启动时会打印一个引导 API 密钥。像使用任何 OpenAI 密钥一样使用它:

curl http://localhost:8000/api/v1/chat/completions \
  -H "Authorization: Bearer tk-..." \
  -H "Content-Type: application/json" \
  -d '{"model":"openai:gpt-4o-mini","messages":[{"role":"user","content":"Say hello."}]}'

对于持久化部署,请将 Docker 运行替换为提供的 docker-compose 设置(PostgreSQL、可选的代码执行、网络搜索、护栏),并配置 OTARI_MODE/OTARI_AI_TOKEN 以使用混合或托管模式。

文档与社区 – 完整文档(快速开始、部署、配置、路由、访问控制、工具、代理护栏)位于 docs/ 目录下。公开仪表板演示位于 https://otari.ai,项目有 Discord 社区提供支持。

许可证 – Apache 2.0。


TL;DR – Otari 让您运行自己的 OpenAI 兼容网关,聚合多个 LLM 提供商,强制执行预算,安全存储凭据,并添加可选的安全工具——所有这些都通过一个可自托管或连接到 Mozilla 托管控制平面的 API 端点实现。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目