llmio

command module
v0.6.17 Latest Latest
Warning

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

Go to latest
Published: Dec 31, 2025 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