llmio

command module
v0.6.19 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 8, 2026 License: MIT Imports: 16 Imported by: 0

README

LLMIO

LLMIO 是一个基于 Go 的 LLM 负载均衡网关,为你的 LLM 客户端 ( claude code / codex / gemini cli / cherry studio / open webui ) 提供统一的 REST API、权重调度、日志记录与现代化管理界面,帮助你在一个服务中整合 OpenAI、Anthropic、Gemini 等不同模型能力。

架构图

LLMIO 架构图

功能特性

  • 统一 API:兼容 OpenAI Chat Completions、OpenAI Responses 、Gemini Native 与 Anthropic Messages 格式,支持透传流式与非流式响应。
  • 权重调度balancers/ 提供两种调度策略(根据权重大小随机/根据权重高低优先),可按工具调用、结构化输出、多模态能力做智能分发。
  • 可视化管理后台:Web UI(React + TypeScript + Tailwind + Vite)覆盖提供商、模型、关联、日志与指标。
  • 速率与失败处理:内建速率限制兜底与提供商连通性检测,保证故障隔离。
  • 本地持久化:通过纯 Go 实现的 SQLite (db/llmio.db) 保存配置和调用记录,开箱即用。

部署

Docker Compose (推荐)
services:
  llmio:
    image: atopos31/llmio:latest
    ports:
      - 7070:7070
    volumes:
      - ./db:/app/db
    environment:
      - GIN_MODE=release
      - TOKEN=<YOUR_TOKEN>
      - TZ=Asia/Shanghai
docker compose up -d
Docker
docker run -d \
  --name llmio \
  -p 7070:7070 \
  -v $(pwd)/db:/app/db \
  -e GIN_MODE=release \
  -e TOKEN=<YOUR_TOKEN> \
  -e TZ=Asia/Shanghai \
  atopos31/llmio:latest
本地运行

前往 releases 下载对应操作系统及cpu架构的压缩包(版本大于0.5.13),这里以 linux amd64 为例。

wget https://github.com/atopos31/llmio/releases/download/v0.5.13/llmio_0.5.13_linux_amd64.tar.gz

解压

tar -xzf ./llmio_0.5.13_linux_amd64.tar.gz

启动

GIN_MODE=release TOKEN=<YOUR_TOKEN> ./llmio

运行后会自动在当前目录下创建 ./db/llmio.db 作为 sqlite 持久化数据文件。

环境变量

变量 说明 默认值 备注
TOKEN 控制台登录与 /openai /anthropic /gemini /v1 等 API 鉴权凭证 公网访问必填
GIN_MODE 控制 Gin 运行模式 debug 线上请设置为 release 获得最佳性能
LLMIO_SERVER_PORT 服务监听端口 7070 服务监听端口
TZ 时区设置,用于日志与任务调度 宿主机默认值 建议在容器环境中显式指定,如 Asia/Shanghai

开发

克隆项目

git clone https://github.com/atopos31/llmio.git
cd llmio

编译前端(需要 pnpm 环境)

make webui

运行后端(需要 go 版本 > 1.25.0)

TOKEN=<YOUR_TOKEN> make run

访问入口webui:http://localhost:7070/

API 端点

LLMIO 提供多供应商兼容的 REST API,支持以下端点:

供应商 端点路径 方法 功能 认证方式
OpenAI /openai/v1/models GET 获取可用模型列表 Bearer Token
OpenAI /openai/v1/chat/completions POST 创建聊天完成 Bearer Token
OpenAI /openai/v1/responses POST 创建响应 Bearer Token
Anthropic /anthropic/v1/models GET 获取可用模型列表 x-api-key
Anthropic /anthropic/v1/messages POST 创建消息 x-api-key
Anthropic /anthropic/v1/messages/count_tokens POST 计算Token数量 x-api-key
Gemini /gemini/v1beta/models GET 获取可用模型列表 x-goog-api-key
Gemini /gemini/v1beta/models/{model}:generateContent POST 生成内容 x-goog-api-key
Gemini /gemini/v1beta/models/{model}:streamGenerateContent POST 流式生成内容 x-goog-api-key
通用 /v1/models GET 获取模型列表(兼容) Bearer Token
通用 /v1/chat/completions POST 创建聊天完成(兼容) Bearer Token
通用 /v1/responses POST 创建响应(兼容) Bearer Token
通用 /v1/messages POST 创建消息(兼容) x-api-key
通用 /v1/messages/count_tokens POST 计算Token数量(兼容) x-api-key
认证方式

LLMIO 根据端点类型使用不同的认证方式:

1. OpenAI 格式端点(Bearer Token)

适用于:/openai/v1/*/v1/* 中的 OpenAI 兼容端点

curl -H "Authorization: Bearer YOUR_TOKEN" http://localhost:7070/openai/v1/models
2. Anthropic 格式端点(x-api-key)

适用于:/anthropic/v1/*/v1/* 中的 Anthropic 兼容端点

curl -H "x-api-key: YOUR_TOKEN" http://localhost:7070/anthropic/v1/messages
3. Gemini Native 端点(x-goog-api-key)

适用于:/gemini/v1beta/* 中的 Gemini 原生端点

curl -H "x-goog-api-key: YOUR_TOKEN" http://localhost:7070/gemini/v1beta/models

对于cc或者codex, 使用如下环境变量接入鉴权

export OPENAI_API_KEY=<YOUR_TOKEN>
export ANTHROPIC_API_KEY=<YOUR_TOKEN>
export GEMINI_API_KEY=<YOUR_TOKEN>

注意/v1/* 路径为兼容性保留,建议使用新的供应商特定路径。

目录结构

.
├─ main.go              # HTTP 服务入口与路由注册
├─ handler/             # REST 接口层
├─ service/             # 业务逻辑与负载均衡调用
├─ middleware/          # 鉴权、速率限制与流式响应中间件
├─ providers/           # 多模型供应商适配实现
├─ balancers/           # 权重与调度策略
├─ models/              # GORM 实体定义与数据库初始化
├─ common/              # 通用工具与响应辅助方法
├─ webui/               # React + TypeScript 管理前端
└─ docs/                # 运维与使用说明

截图

系统主页

多对一关联

日志

许可证

本项目基于 MIT License 发布。

星标历史

Stargazers over time

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL