Skip to content
/ UniAPI Public

The Universal LLM Gateway - Integrate ANY AI Model with One Consistent API

License

Notifications You must be signed in to change notification settings

NGLSG/UniAPI

Repository files navigation

UniAPI Icon

通用 LLM API 集成工具包

"一个标准调用所有"

License: MIT C++20 CUDA Docker

📋 目录


📖 语言选择


✨ 特性

  • 解锁快速部署:默认无需身份验证,支持动态加载提供者。
  • 高性能推理:支持 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 镜像
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

方法二:构建自己的 Docker 镜像

# 克隆仓库
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:latest

方法三:本地编译安装

1. 克隆仓库及子模块

git clone --recursive https://github.com/NGLSG/UniAPI.git     
cd UniAPI
# 如果子模块未拉取:
git submodule update --init --recursive

2. 安装依赖项

# 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-dev

3. 编译项目

mkdir build && cd build
cmake ..
make -j4

4. 运行服务器

./bin/UniAPI 8080  # 端口可以更改

📚 自定义配置规则说明

UniAPI 使用基于规则的配置来适配不同的 API 接口。以下是配置参数的详细说明:

参数 说明
enable 是否启用此提供者
supportSystemRole 是否支持系统角色
name 提供者名称(用于标识)
model 默认模型名称
apiPath API 端点 URL(可包含变量占位符)
apiKeyRole API 密钥配置
headers 自定义 HTTP 头
roles 角色映射(OpenAI 格式与提供者格式之间)
extraMust 额外的必需参数
promptRole 提示结构映射配置
params 要发送的附加参数
responseRole 响应提取配置
supportModels 支持的模型列表

📋 示例配置

Gemini API 配置示例

- 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 自定义实现

Star History

Star History Chart

🌟 如何支持本项目

我们致力于持续改进 UniAPI 并添加新功能。您的支持对我们项目的持续发展至关重要。以下是您可以帮助的方式:

  • 给我们点个星
    如果您觉得 UniAPI 有用,请在 GitHub 上给我们点个星。这能帮助我们获得更多关注并吸引更多贡献者。

  • 参与项目贡献
    我们欢迎来自社区的贡献!无论是修复漏洞、添加新功能还是改进文档,每一份贡献都弥足珍贵。开始贡献很简单,只需要 fork 仓库并提交一个 pull request 即可。

  • 分享本项目
    把 UniAPI 分享给您的朋友、同事,或者在社交媒体上宣传。知道这个项目的人越多越好!

  • 提供反馈
    您的反馈对我们很重要。如果您有任何建议、想法,或者遇到任何问题,请随时在 GitHub 上提交 issue。

感谢您的支持!让我们携手让 UniAPI 更上一层楼!


📜 许可协议

MIT - 免费用于商业和个人用途。详见 LICENSE 文件。