One API - Sistema de Gerenciamento e Distribuição de APIs LLM
Visão Geral do Projeto
One API é um sistema de gerenciamento e distribuição de APIs LLM de código aberto, que suporta os principais modelos como OpenAI, Azure, Anthropic Claude, Google Gemini, DeepSeek, ChatGLM, etc. Ele unifica a adaptação de APIs e pode ser usado para gerenciamento de chaves e redistribuição secundária. O projeto fornece um único arquivo executável, suporta imagens Docker e permite a implantação com um clique, pronto para uso.
Principais Características
📋 Suporte a Múltiplos Modelos
O projeto suporta vários provedores de modelos de linguagem grandes:
- Série OpenAI: Modelos da série ChatGPT (suporta Azure OpenAI API)
- Anthropic: Modelos da série Claude (suporta AWS Claude)
- Google: Modelos da série PaLM2/Gemini
- Outros: Outras séries de modelos
🔧 Funcionalidades Principais
Gerenciamento e Distribuição de API
- Suporta a configuração de espelhos e vários serviços de proxy de terceiros
- Suporta o acesso a vários canais através de balanceamento de carga
- Suporta o modo stream, que pode implementar o efeito de máquina de escrever através de transmissão em fluxo
- Suporta implantação multi-máquina
- Suporta repetição automática em caso de falha
- Suporta interface de desenho
Gerenciamento de Usuários e Permissões
- Gerenciamento de Tokens: Defina o tempo de expiração, cota, intervalo de IP permitido e acesso ao modelo permitido para tokens
- Gerenciamento de Códigos de Resgate: Suporta a geração e exportação em lote de códigos de resgate, que podem ser usados para recarregar contas
- Grupos de Usuários: Suporta grupos de usuários e grupos de canais, e suporta a configuração de diferentes taxas para diferentes grupos
- Gerenciamento de Canais: Crie canais em lote, suporta a configuração de listas de modelos de canais
Monitoramento e Estatísticas
- Suporta a visualização de detalhes da cota
- Suporta recompensas de convite de usuários
- Suporta a exibição de cota em dólares americanos
- Em conjunto com o Message Pusher, as informações de alarme podem ser enviadas para vários aplicativos
Funcionalidades Personalizadas
- Suporta a publicação de anúncios, a configuração de links de recarga e a configuração da cota inicial para novos usuários
- Suporta o mapeamento de modelos, redirecionando os modelos de solicitação dos usuários
- Suporta a personalização do nome do sistema, logotipo e rodapé
- Suporta a personalização da página inicial e da página sobre
- Suporta a chamada da API de gerenciamento através de tokens de acesso do sistema
🔐 Segurança e Autenticação
Vários Métodos de Login
- Login e registro por e-mail (suporta lista de permissões de e-mail de registro) e redefinição de senha por e-mail
- Login de autorização do Feishu
- Login de autorização do GitHub
- Autorização da conta pública WeChat (requer a implantação adicional do WeChat Server)
Características de Segurança
- Suporta a verificação do usuário Cloudflare Turnstile
- Suporta a troca de temas
- Suporta Cloudflare AI Gateway
Métodos de Implantação
Implantação Docker (Recomendado)
Usando SQLite
docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
Usando MySQL
docker run --name one-api -d --restart always -p 3000:3000 -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
Implantação Docker Compose
# Atualmente, o inicialização do MySQL é suportada, e os dados são armazenados na pasta ./data/mysql
docker-compose up -d
# Verifique o status da implantação
docker-compose ps
Implantação Manual
- Baixe o arquivo executável do GitHub Releases ou compile a partir do código-fonte:
git clone https://github.com/songquanpeng/one-api.git
# Construir o frontend
cd one-api/web/default
npm install
npm run build
# Construir o backend
cd ../..
go mod download
go build -ldflags "-s -w" -o one-api
- Executar:
chmod u+x one-api
./one-api --port 3000 --log-dir ./logs
Implantação na Nuvem
Implantação Zeabur
- Faça um Fork do repositório de código
- Crie um Projeto no Zeabur, adicione o serviço MySQL
- Configure as variáveis de ambiente
PORT=3000
e SQL_DSN
- Implante e configure o domínio
Implantação Render
- Implante diretamente a imagem Docker
- Não é necessário fazer Fork do repositório
Descrição da Configuração
Configuração de Variáveis de Ambiente
Configuração do Banco de Dados
SQL_DSN
: String de conexão do banco de dados (recomenda-se usar MySQL ou PostgreSQL)
LOG_SQL_DSN
: Conexão de banco de dados independente da tabela de logs
Configuração do Cache
REDIS_CONN_STRING
: String de conexão Redis, usada para cache
MEMORY_CACHE_ENABLED
: Ativar cache na memória
SYNC_FREQUENCY
: Frequência de sincronização do banco de dados (segundos)
Configuração do Cluster
SESSION_SECRET
: Chave de sessão fixa
NODE_TYPE
: Tipo de nó (master/slave)
FRONTEND_BASE_URL
: Endereço de redirecionamento do frontend
Configuração de Segurança
GLOBAL_API_RATE_LIMIT
: Limite de taxa de API
GLOBAL_WEB_RATE_LIMIT
: Limite de taxa da Web
RELAY_TIMEOUT
: Configuração de tempo limite de retransmissão
Parâmetros da Linha de Comando
--port <port_number>
: Especifica o número da porta (padrão 3000)
--log-dir <log_dir>
: Especifica a pasta de logs
--version
: Imprime o número da versão
--help
: Exibe a ajuda
Como Usar
- Login Inicial: Use a conta padrão
root
, senha 123456
- Configuração do Canal: Adicione a chave API na página do canal
- Criação de Token: Crie um token de acesso na página de tokens
- Configuração do Cliente: Defina a API Base para o endereço de implantação do One API e a API Key para o token gerado
Exemplo de Uso da API
# Configuração da biblioteca oficial OpenAI
OPENAI_API_KEY="sk-xxxxxx"
OPENAI_API_BASE="https://<HOST>:<PORT>/v1"
Especificação do Canal
Você pode especificar o uso de um canal específico adicionando o ID do canal após o token:
Authorization: Bearer ONE_API_KEY-CHANNEL_ID
Design da Arquitetura
Usuário → One API → OpenAI/Azure/Claude/Gemini e outros provedores
One API atua como uma camada intermediária, unificando os formatos de API de diferentes provedores, fornecendo:
- Balanceamento de carga
- Retransmissão de solicitação e conversão de formato
- Gerenciamento de usuários e controle de permissões
- Estatísticas de uso e faturamento
Casos de Integração
ChatGPT Next Web
docker run --name chat-next-web -d -p 3001:3000 yidadaa/chatgpt-next-web
Defina o endereço da interface e a chave API na página.
ChatGPT Web
docker run --name chatgpt-web -d -p 3002:3002 -e OPENAI_API_BASE_URL=https://openai.justsong.cn -e OPENAI_API_KEY=sk-xxx chenzhaoyu94/chatgpt-web
Licença
Este projeto é de código aberto sob a licença MIT, exigindo que a atribuição e o link para este projeto sejam mantidos na parte inferior da página.
Endereço do Projeto
