New API 是由 QuantumNous 团队开发的开源 AI 模型聚合管理中转分发系统,基于 One API 项目进行二次开发,旨在为个人用户和企业提供统一的 AI 模型管理解决方案。项目将大语言模型官方调用结构转换为标准化调用格式,实现了对 OpenAI,Claude,Gemini 等主流 AI 模型的统一接入和管理。

截止 2025 年 10 月,New API 已经在 GitHub 获得了超过 11k 星标,项目采用 JavaScript 和 Go 语言作为主要开发语言,项目高频更新。

功能

New API 的核心价值在于其强大的模型聚合能力,系统支持将多种大语言模型转化为统一调用格式,不仅涵盖主流的 OpenAI,Claude ,Google Gemini 还支持多种第三方模型和接口。同时还集成了 Midjourney-Proxy 和 Suno API,满足了用户在文本生成、图像创作和音乐生成等多方面的需求。

在接口格式兼容性方面,New API 实现了多样的支持,原生支持 OpenAI Response 格式,Claude Messages 格式以及 Gemini 格式。并且提供了灵活的格式转换功能,用户可以通过 OpenAI Chat Completions 格式调用 Claude 模型,相反也可以。系统还支持 Rerank 模型(Cohere 和 Jina)。

New API 也支持缓存计费, 可以在系统中配置提示缓存倍率。用户在命中缓存时,按照设定的比例进行计费。有效地降低了 API 调用成本。 功能支持 OpenAI、Azure、DeepSeek 和 Cloud 等主流渠道,缓存倍率可在 0-1 的范围内灵活设置。

New API 为企业用户提供了完善的管理体系。可以按令牌分组模型限制。允许管理员对不同的用户组进行差异化的配置。

New API 也提供了数据可视化。 系统内置了控制台。用户可以直观地使用统计和性能监控界面。用户可以搭配 neko-api-key-tool 实现 key 查询使用配额。

部署

环境要求和准备工作

  • Linux,个人推荐 Ubuntu 24.04
  • Docker 环境

源代码部署

下载项目源码并进入项目目录。

git clone https://github.com/QuantumNous/new-api.git
cd new-api

编辑 docker-compose.yml 文件,配置必要的参数, 比如数据库连接信息、端口映射等配置。

配置完成后,就可以使用以下命令启动服务。

docker-compose up -d

默认使用 3000 端口。部署完成后,可以访问 IP 加端口,进入初始化页面创建管理员账号和密码。

一些关键的配置信息说明。

  • GENERATE_DEFAULT_TOKEN:控制是否为新注册用户生成初始令牌,默认为 false
  • STREAMING_TIMEOUT:流式回复超时时间,默认 300 秒
  • DIFY_DEBUG:控制 Dify 渠道是否输出工作流和节点信息,默认为 true
  • GET_MEDIA_TOKEN:是否统计图片 token,默认为 true
  • UPDATE_TASK:是否更新异步任务(Midjourney、Suno),默认为 true
  • GEMINI_VISION_MAX_IMAGE_NUM:Gemini 模型最大图片数量,默认为 16
  • MAX_FILE_DOWNLOAD_MB:最大文件下载大小,单位 MB,默认为 20
  • AZURE_DEFAULT_API_VERSION:Azure 渠道默认 API 版本,默认为 2025-04-01-preview
  • NOTIFICATION_LIMIT_DURATION_MINUTE:邮件通知限制持续时间,默认 10 分钟
  • NOTIFY_LIMIT_COUNT:用户通知在指定持续时间内的最大数量,默认为 2
  • ERROR_LOG_ENABLED:是否记录并显示错误日志,默认为 false

使用

New API 提供了非常丰富的接口调用,几乎兼容当前主流的所有 API 调用形式。

鉴权体系说明

系统采用了四级健全机制:公开、用户、管理员、Root Access Token。该令牌在个人设置 - 系统访问令牌中生成。

  • 公开:无需登录
  • 用户:需要用户 AccessToken (middleware.UserAuth)
  • 管理员:需要管理员 AccessToken (middleware.AdminAuth)
  • Root:仅限最高权限用户 AccessToken (middleware.RootAuth)

获取可用模型列表。

const response = await fetch('/api/models', {  
  method: 'GET',  
  headers: {  
    'Content-Type': 'application/json',  
    'Authorization': 'Bearer your_user_token',
    'New-Api-User': 'your_user_id'
  }  
});  
const data = await response.json();