Este projeto é uma API REST de substituição imediata para Vertex AI ( PaLM 2, Codey, Gemini ) que é compatível com as especificações da API OpenAI.
Exemplos:
Converse com Gemini na IU do Chatbot | Obtenha ajuda do Gemini no VSCode |
---|---|
Este projeto é inspirado na ideia do LocalAI, mas com foco em tornar o Google Cloud Platform Vertex AI PaLM mais acessível a qualquer pessoa.
É instalado um serviço Google Cloud Run que traduz as chamadas da API OpenAI para Vertex AI (PaLM 2, Codey, Gemini).
Serviços de API OpenAI suportados:
OpenAI | API | Suportado |
---|---|---|
Listar modelos | /v1/models | ✅ |
Conclusões de bate-papo | /v1/chat/completions | ✅ |
Conclusões (legado) | /v1/completions | |
Incorporações | /v1/embeddings |
O software é desenvolvido em Python e baseado em FastAPI e LangChain.
Tudo foi projetado para ser muito simples, para que você possa ajustar facilmente o código-fonte às suas necessidades individuais.
Um notebook Jupyter Vertex_AI_Chat.ipynb
com instruções passo a passo é preparado. Isso ajudará você a implantar o back-end da API e o front-end da UI do Chatbot como serviço Google Cloud Run.
Requisitos:
Seu usuário (aquele usado para implantação) deve ter permissões adequadas no projeto. Para uma implantação rápida e descomplicada, recomenda-se a função de "Proprietário".
Além disso, a conta de serviço de computação padrão ( [PROJECT_NR][email protected]
) deve ter a função "Role Vertex AI User" ( roles/aiplatform.user
).
Autenticar:
gcloud auth login
Definir projeto padrão:
gcloud config set project [PROJECT_ID]
Execute o script a seguir para criar uma imagem de contêiner e implantar esse contêiner como uma API pública (que permite chamadas não autenticadas) no Google Cloud Run:
bash deploy.sh
Observação: você pode alterar a chave de API OpenAI falsa gerada e a região do Google Cloud com variáveis de ambiente:
export OPENAI_API_KEY= " sk-XYZ " export GOOGLE_CLOUD_LOCATION= " europe-west1 " bash deploy.sh
O software foi testado em GNU/Linux e macOS com Python 3.11 e 3.12.3 (3.12.4 atualmente não funciona). Se quiser usar o software no Windows, você deve definir as variáveis de ambiente com set
em vez de export
.
Você também deve criar um ambiente virtual com a versão do Python que deseja usar e ativá-lo antes de continuar.
Você também precisa da CLI do Google Cloud. A CLI do Google Cloud inclui a ferramenta de linha de comando gcloud
.
Inicie um ambiente virtual Python e instale os requisitos:
python3 -m venv .venv &&
source .venv/bin/activate &&
pip install -r requirements.txt
Autenticar:
gcloud auth application-default login
Definir projeto padrão:
gcloud auth application-default set-quota-project [PROJECT_ID]
Execute com modelo padrão:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
uvicorn vertex:app --reload
Exemplo para Windows:
set DEBUG = True
set OPENAI_API_KEY = sk - XYZ
uvicorn vertex:app -- reload
Execute com o modelo Gemini gemini-pro
:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
export MODEL_NAME= " gemini-pro "
uvicorn vertex:app --reload
Execute com o modelo Codey codechat-bison-32k
:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
export MODEL_NAME= " codechat-bison-32k "
export MAX_OUTPUT_TOKENS= " 16000 "
uvicorn vertex:app --reload
O aplicativo agora estará em execução no seu computador local. Você pode acessá-lo abrindo um navegador da web e navegando até o seguinte endereço:
http://localhost:8000/
Os formatos de solicitação e resposta HTTP são consistentes com a API OpenAI.
Por exemplo, para gerar uma conclusão de chat, você pode enviar uma solicitação POST para o endpoint /v1/chat/completions
com a instrução como corpo da solicitação:
curl --location ' http://[ENDPOINT]/v1/chat/completions '
--header ' Content-Type: application/json '
--header ' Authorization: Bearer [API-KEY] '
--data ' {
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "Say this is a test!"
}
]
} '
Resposta:
{
"id" : " cmpl-efccdeb3d2a6cfe144fdde11 " ,
"created" : 1691577522 ,
"object" : " chat.completion " ,
"model" : " gpt-3.5-turbo " ,
"usage" : {
"prompt_tokens" : 0 ,
"completion_tokens" : 0 ,
"total_tokens" : 0
},
"choices" : [
{
"message" : {
"role" : " assistant " ,
"content" : " Sure, this is a test. "
},
"finish_reason" : " stop " ,
"index" : 0
}
]
}
Baixe a exportação para o cliente Bruno API: bruno-export.json
A configuração do software pode ser feita com variáveis de ambiente.
Existem as seguintes variáveis com valores padrão:
Variável | Padrão | Descrição |
---|---|---|
DEPURAR | Falso | Mostre mensagens de depuração que ajudam durante o desenvolvimento. |
GOOGLE_CLOUD_LOCATION | nós-central1 | Região do Google Cloud Platform para chamadas de API. |
GOOGLE_CLOUD_PROJECT_ID | [DEFAULT_AUTH_PROJECT] | Identificador do seu projeto. Se não for especificado, o projeto de autenticação será utilizado. |
HOSPEDAR | 0.0.0.0 | Vincule o soquete a este host. |
MAX_OUTPUT_TOKENS | 512 | O limite de token determina a quantidade máxima de saída de texto de um prompt. Pode ser substituído pelo usuário final conforme exigido pela especificação da API OpenAI. |
MODEL_NAME | chat-bisão | Um dos modelos básicos disponíveis no Vertex AI. |
OPENAI_API_KEY | sk-[RANDOM_HEX] | Chave de API OpenAI falsa autogerada usada para autenticação no aplicativo. |
PORTA | 8.000 | Vincule o soquete a esta porta. |
TEMPERATURA | 0,2 | Temperatura de amostragem, controla o grau de aleatoriedade na seleção do token. Pode ser substituído pelo usuário final conforme exigido pela especificação da API OpenAI. |
TOPO_K | 40 | Como o modelo seleciona tokens para saída, o próximo token é selecionado. |
TOPO_P | 0,8 | Os tokens são selecionados do mais provável ao menos até a soma dos seus. Pode ser substituído pelo usuário final conforme exigido pela especificação da API OpenAI. |
Se seu aplicativo usa bibliotecas de cliente fornecidas pela OpenAI, você só precisa modificar a variável de ambiente OPENAI_API_BASE
para corresponder ao URL do endpoint do Google Cloud Run:
export OPENAI_API_BASE= " https://openai-api-vertex-XYZ.a.run.app/v1 "
python your_openai_app.py
Ao implantar o aplicativo Chatbot UI, as seguintes variáveis de ambiente devem ser definidas:
Variável | Valor |
---|---|
OPENAI_API_KEY | Chave de API gerada durante a implantação |
OPENAI_API_HOST | URL do Google Cloud Run |
Execute o script a seguir para criar uma imagem de contêiner a partir do código-fonte do GitHub e implantar esse contêiner como um site público (que permite chamadas não autenticadas) no Google Cloud Run:
export OPENAI_API_KEY= " sk-XYZ "
export OPENAI_API_HOST= " https://openai-api-vertex-XYZ.a.run.app "
bash chatbot-ui.sh
Defina as seguintes configurações do Chatbox:
Contexto | Valor |
---|---|
Provedor de IA | API OpenAI |
Chave de API OpenAI | Chave de API gerada durante a implantação |
Anfitrião de API | URL do Google Cloud Run |
A extensão VSCode-OpenAI é uma ferramenta poderosa e versátil projetada para integrar recursos OpenAI perfeitamente em seu editor de código.
Para ativar a configuração, você tem duas opções:
Selecione openai.com
e insira o URL do Google Cloud Run com /v1
durante a configuração.
Ao implantar o aplicativo Discord Bot, as seguintes variáveis de ambiente devem ser definidas:
Variável | Valor |
---|---|
OPENAI_API_KEY | Chave de API gerada durante a implantação |
OPENAI_API_BASE | URL do Google Cloud Run com /v1 |
Ao implantar o aplicativo ChatGPT no Slack, as seguintes variáveis de ambiente devem ser definidas:
Variável | Valor |
---|---|
OPENAI_API_KEY | Chave de API gerada durante a implantação |
OPENAI_API_BASE | URL do Google Cloud Run com /v1 |
Ao implantar o aplicativo ChatGPT Telegram Bot, as seguintes variáveis de ambiente devem ser definidas:
Variável | Valor |
---|---|
OPENAI_API_KEY | Chave de API gerada durante a implantação |
OPENAI_API_BASE | URL do Google Cloud Run com /v1 |
Tem um patch que beneficiará este projeto? Incrível! Siga estas etapas para que seja aceito.
Todos os arquivos neste repositório estão sob a licença Apache, versão 2.0, salvo indicação em contrário.