- 解锁快速部署:默认无需身份验证,支持动态加载提供者。
- 高性能推理:支持 GPU 加速(CUDA 和 Vulkan),并兼容 CPU 推理。
- 本地模型支持:直接推理本地量化 GGML 模型,无需额外配置。
- 跨平台兼容:支持 Windows、Linux 和 macOS。
- 灵活配置:通过
Config.yaml文件灵活配置 API。 - 高度扩展性:使用规则适配几乎任何接口。
- 鉴权系统
- 用户系统
- 计费系统
UniAPI 支持以下推理方式:
- CUDA:使用 NVIDIA GPU 进行加速推理。
- Vulkan:跨平台的图形和计算 API,适用于非 NVIDIA GPU。
- CPU:在没有 GPU 的环境中直接使用 CPU 进行推理。
如果你不想使用文本编辑器手动修改配置文件,可以使用配套的 ChatBot GUI 配置工具 。通过该工具编辑配置后,稍作修改即可直接用于本项目。
# 拉取预构建的 Docker 镜像 docker pull ryoshi541/uniapi:latest # 使用默认配置运行容器 docker run -d -p 8080:8080 ryoshi541/uniapi:latest # 使用自定义配置运行 docker run -d -p 8080:8080 \ -v /path/to/Config.yaml:/app/Config.yaml \ ryoshi541/uniapi:latest# 克隆仓库 git clone --recursive https://github.com/NGLSG/UniAPI.git cd UniAPI # 构建 Docker 镜像 docker build -t uniapi:latest . # 运行容器 docker run -it --rm -p 8080:8080 uniapi:latestgit clone --recursive https://github.com/NGLSG/UniAPI.git cd UniAPI # 如果子模块未拉取: git submodule update --init --recursive# Ubuntu/Debian 系统 sudo apt-get update sudo apt-get install -y \ git cmake build-essential \ libvulkan-dev curl libcurl4-openssl-dev \ libjsoncpp-dev uuid-dev libssl-dev zlib1g-dev # 可选数据库支持 sudo apt-get install -y \ libmysqlclient-dev \ libsqlite3-dev \ libhiredis-devmkdir build && cd build cmake .. make -j4./bin/UniAPI 8080 # 端口可以更改UniAPI 使用基于规则的配置来适配不同的 API 接口。以下是配置参数的详细说明:
| 参数 | 说明 |
|---|---|
enable | 是否启用此提供者 |
supportSystemRole | 是否支持系统角色 |
name | 提供者名称(用于标识) |
model | 默认模型名称 |
apiPath | API 端点 URL(可包含变量占位符) |
apiKeyRole | API 密钥配置 |
headers | 自定义 HTTP 头 |
roles | 角色映射(OpenAI 格式与提供者格式之间) |
extraMust | 额外的必需参数 |
promptRole | 提示结构映射配置 |
params | 要发送的附加参数 |
responseRole | 响应提取配置 |
supportModels | 支持的模型列表 |
- enable: true supportSystemRole: false name: mGemini model: gemini-2.5-flash-preview-04-17 apiPath: https://generativelanguage.googleapis.com/v1beta/models/${MODEL}:streamGenerateContent?key=${API_KEY} apiKeyRole: key: ~ role: URL header: "Authorization: Bearer " headers: ~ vars: ~ roles: system: system user: user assistant: model extraMust: - suffix: topK path: generationConfig content: ${TOPK} isStr: false - suffix: topP path: generationConfig content: ${TOPP} isStr: false - suffix: temperature path: generationConfig content: ${TEMP} isStr: false - suffix: presencePenalty path: generationConfig content: ${PRES} isStr: false - suffix: frequencyPenalty path: generationConfig content: ${FREQ} isStr: false promptRole: role: suffix: contents path: role content: content isStr: false prompt: suffix: contents path: parts/0/text content: content isStr: false supportModels: - gemini-2.5-flash-preview-04-17 params: [ ] responseRole: suffix: "" content: candidates/content/parts/text callback: RESPONSE stopFlag: "" author: Ryoshi version: 1.0 description: Gemini 自定义实现我们致力于持续改进 UniAPI 并添加新功能。您的支持对我们项目的持续发展至关重要。以下是您可以帮助的方式:
-
给我们点个星
如果您觉得 UniAPI 有用,请在 GitHub 上给我们点个星。这能帮助我们获得更多关注并吸引更多贡献者。 -
参与项目贡献
我们欢迎来自社区的贡献!无论是修复漏洞、添加新功能还是改进文档,每一份贡献都弥足珍贵。开始贡献很简单,只需要 fork 仓库并提交一个 pull request 即可。 -
分享本项目
把 UniAPI 分享给您的朋友、同事,或者在社交媒体上宣传。知道这个项目的人越多越好! -
提供反馈
您的反馈对我们很重要。如果您有任何建议、想法,或者遇到任何问题,请随时在 GitHub 上提交 issue。
感谢您的支持!让我们携手让 UniAPI 更上一层楼!
MIT - 免费用于商业和个人用途。详见 LICENSE 文件。