Introdução geral
Gêmeos O Balance é um serviço proxy de API OpenAI desenvolvido com base na estrutura FastAPI, com o objetivo de fornecer recursos eficientes de otimização e gerenciamento de chaves de várias APIs. Ele é compatível com as chamadas do modelo Gemini e seus principais recursos incluem sondagem de chaves de várias APIs, análise forense de autenticação, respostas de streaming, suporte CORS entre domínios e uma interface de verificação de integridade. Ao usar pilhas de tecnologia como Python 3.9+ e Docker, o Gemini Balance oferece aos desenvolvedores uma solução de proxy de API flexível e eficiente para cenários de aplicativos que exigem alta simultaneidade e alta confiabilidade.
Lista de funções
- Suporte a polling de chaves de várias APIs
- Autenticação de token de portador
- Suporte à resposta de streaming
- Suporte a CORS entre domínios
- Interface de verificação de saúde
- Suporte para chamadas de modelo Gemini
- Suporte à função de pesquisa
- Suporte para execução de código
Usando a Ajuda
Requisitos ambientais
- Python 3.9+
- Docker (opcional)
Instalação de dependências
pip install -r requirements.txt
arquivo de configuração
estabelecer.env
e configure os seguintes parâmetros:
API_KEYS=["your-api-key-1", "your-api-key-2"]
ALLOWED_TOKENS=["your-access-token-1", "your-access-token-2"]
BASE_URL="https://generativelanguage.googleapis.com/v1beta"
TOOLS_CODE_EXECUTION_ENABLED=true
MODEL_SEARCH=["gemini-2.0-flash-exp"]
Implementação do Docker
docker build -t gemini-balance .
docker run -p 8000:8000 -d gemini-balance
Interface da API
- Obter uma lista de modelos
GET /v1/models
Autorização: Portador your-token
- Chat completo.
POST /v1/chat/completions
Autorização: Portador do seu token
{
"messages": [...] ,
"model": "gemini-1.5-flash-002",
"temperatura": 0,7,
"stream": falso, "tools": [].
"tools": []
}
- Obter incorporação
POST /v1/embeddings
Autorização: Portador your-token
{
"input": "Seu texto aqui", "model": "text-embedding-004", "text-embedding-004
"model": "text-embedding-004"
}
- check-up de saúde
GET /health
estrutura de código
aplicativo/
api/
rotas.py
Roteamento de APIdependências.py
Injeção de dependência: Injeção de dependêncianúcleo/
config.py
Gerenciamento de configuraçãosecurity.py
Certificação de segurançaserviços/
chat_service.py
Serviço de bate-papokey_manager.py
Gerenciamento de chavesmodel_service.py
Serviços de modelagemesquemas/
request_model.py
: Modelo de solicitaçãomain.py
Entrada para o programa principal
Dockerfile
Configuração do Dockerrequisitos.txt
Dependências do projeto
Recursos de segurança
- Mecanismo de sondagem de chave de API
- Autenticação de token de portador
- Registro de solicitações
- Falha ao tentar novamente o mecanismo
- Verificação da validade da chave
advertência
- Certifique-se de manter suas chaves de API e tokens de acesso seguros!
- Recomenda-se configurar informações confidenciais em ambientes de produção usando variáveis de ambiente
- A porta de serviço padrão é 8000
- O número padrão de novas tentativas de falha da chave de API é 10.
- Consulte a documentação da API do Gemini para obter uma lista dos modelos compatíveis
Adendo: a huggingface implementa o agente gemini, chamadas de sondagem de contas, desbloqueio de restrições de área
1. espaço de cópia espaço
Gemini Balance - um espaço para abraçar o rosto por snailyp
2) Modifique a visibilidade paraPúblico
(não se esqueça de observar que a alteração para público, ou não acessível), configuraçãoTÓKENS PERMITIDOS
,API_KEYS
,BASE_URL
padrão (configuração)
TÓKENS PERMITIDOS
formato["apikey personalizada"]
Observe que os parênteses, as vírgulas e as vírgulas invertidas são rigorosamente respeitados.
API_KEYS
O formato está na forma de uma única chave:["gemini_key1"]
A forma de várias chaves["gemini_key1", "gemini_key2"]
Observe que os parênteses, as vírgulas e as vírgulas invertidas são rigorosamente respeitados.
BASE_URL
deixar os padrões como estão
3) Aguarde até que a implantação seja bem-sucedida. Depois que a implantação for bem-sucedida, os seguintes registros e status de execução serão exibidos
4) Nesse momento, o host padrão do serviço huggingface éhuggingface nome de usuário-gemini-balance.hf.space
Como o meu é.snailyp-gemini-balance.hf.space
tomar nota deO serviço Huggingface entrará em hibernação se não for usado por 48 horas. Recomenda-se mantê-lo ativo por meio de tarefas cronometradas, como o painel Qinglong ou o uptime kuma. (Chamado diretamente pela solicitação get)https://用户名-gemini-balance.hf.space
(pode ser feito)
5 Endpoints suportados/hf/v1/modelos
responder cantando/hf/v1/chat/completions
6. O nome de domínio huggingface pode não ser capaz de acessar diretamente o doméstico, mas o hf.space parece ser capaz de acessar.
Você pode usar o cf workers como proxy e vincular um nome de domínio personalizado para poder acessá-lo na China.Altere url.host para o seu próprio.::
export default { async fetch(request, env) { const url = new URL(request.url); url.host = 'xxx-gemini-balance.hf.space'; url.pathname = "/hf" + url. pathname; return fetch(new Request(url, request)) } }
tomar nota deO ponto de extremidade proxy remove /hf, de modo que o ponto de extremidade agora se torna/v1/modelos
responder cantando/v1/chat/completions
A configuração do cliente requer alguma atenção.
7. algumas limitações: no momento, não é possível realizar o processamento de imagens e a estrutura da saída de palavras