Ce projet est une API REST de remplacement pour Vertex AI ( PaLM 2, Codey, Gemini ) compatible avec les spécifications de l'API OpenAI.
Exemples :
Discutez avec Gemini dans l'interface utilisateur de Chatbot | Obtenez de l'aide de Gemini dans VSCode |
---|---|
Ce projet s'inspire de l'idée de LocalAI mais a pour objectif de rendre Google Cloud Platform Vertex AI PaLM plus accessible à tous.
Un service Google Cloud Run est installé pour traduire les appels de l'API OpenAI en Vertex AI (PaLM 2, Codey, Gemini).
Services API OpenAI pris en charge :
OpenAI | API | Soutenu |
---|---|---|
Liste des modèles | /v1/models | ✅ |
Achèvements des discussions | /v1/chat/completions | ✅ |
Achèvements (héritage) | /v1/completions | |
Intégrations | /v1/embeddings |
Le logiciel est développé en Python et basé sur FastAPI et LangChain.
Tout est conçu pour être très simple, afin que vous puissiez facilement ajuster le code source à vos besoins individuels.
Un notebook Jupyter Vertex_AI_Chat.ipynb
avec des instructions étape par étape est préparé. Il vous aidera à déployer le backend de l'API et l'interface utilisateur de Chatbot en tant que service Google Cloud Run.
Exigences:
Votre utilisateur (celui utilisé pour le déploiement) doit disposer des autorisations appropriées dans le projet. Pour un déploiement rapide et sans tracas, le rôle « Propriétaire » est recommandé.
De plus, le compte de service de calcul par défaut ( [PROJECT_NR][email protected]
) doit avoir le rôle « Role Vertex AI User » ( roles/aiplatform.user
).
Authentifier:
gcloud auth login
Définir le projet par défaut :
gcloud config set project [PROJECT_ID]
Exécutez le script suivant pour créer une image de conteneur et déployer ce conteneur en tant qu'API publique (qui autorise les appels non authentifiés) dans Google Cloud Run :
bash deploy.sh
Remarque : Vous pouvez modifier la fausse clé API OpenAI générée et la région Google Cloud avec des variables d'environnement :
export OPENAI_API_KEY= " sk-XYZ " export GOOGLE_CLOUD_LOCATION= " europe-west1 " bash deploy.sh
Le logiciel a été testé sur GNU/Linux et macOS avec Python 3.11 et 3.12.3 (3.12.4 ne fonctionne actuellement pas). Si vous souhaitez utiliser le logiciel sous Windows, vous devez définir les variables d'environnement avec set
au lieu de export
.
Vous devez également créer un environnement virtuel avec la version de Python que vous souhaitez utiliser et l'activer avant de continuer.
Vous avez également besoin de Google Cloud CLI. Google Cloud CLI inclut l'outil de ligne de commande gcloud
.
Lancez un environnement virtuel Python et installez les exigences :
python3 -m venv .venv &&
source .venv/bin/activate &&
pip install -r requirements.txt
Authentifier:
gcloud auth application-default login
Définir le projet par défaut :
gcloud auth application-default set-quota-project [PROJECT_ID]
Exécuter avec le modèle par défaut :
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
uvicorn vertex:app --reload
Exemple pour Windows :
set DEBUG = True
set OPENAI_API_KEY = sk - XYZ
uvicorn vertex:app -- reload
Exécuter avec le modèle Gemini gemini-pro
:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
export MODEL_NAME= " gemini-pro "
uvicorn vertex:app --reload
Exécutez avec le modèle 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
L'application va maintenant s'exécuter sur votre ordinateur local. Vous pouvez y accéder en ouvrant un navigateur Web et en accédant à l'adresse suivante :
http://localhost:8000/
Les formats de requête et de réponse HTTP sont cohérents avec l'API OpenAI.
Par exemple, pour générer une complétion de chat, vous pouvez envoyer une requête POST au point de terminaison /v1/chat/completions
avec l'instruction comme corps de la requête :
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!"
}
]
} '
Réponse:
{
"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
}
]
}
Télécharger l'export pour le client API Bruno : bruno-export.json
La configuration du logiciel peut se faire avec des variables d'environnement.
Les variables suivantes avec des valeurs par défaut existent :
Variable | Défaut | Description |
---|---|---|
DÉBOGUER | FAUX | Afficher les messages de débogage qui aident pendant le développement. |
GOOGLE_CLOUD_LOCATION | nous-central1 | Région Google Cloud Platform pour les appels d'API. |
GOOGLE_CLOUD_PROJECT_ID | [DEFAULT_AUTH_PROJECT] | Identifiant de votre projet. S'il n'est pas précisé, le projet d'authentification est utilisé. |
HÔTE | 0.0.0.0 | Liez le socket à cet hôte. |
MAX_OUTPUT_TOKENS | 512 | La limite de jetons détermine la quantité maximale de texte affiché à partir d'une invite. Peut être remplacé par l'utilisateur final comme l'exige la spécification de l'API OpenAI. |
MODEL_NAME | chat-bison | L'un des modèles de base disponibles dans Vertex AI. |
OPENAI_API_KEY | sk-[RANDOM_HEX] | Fausse clé API OpenAI auto-générée utilisée pour l'authentification auprès de l'application. |
PORT | 8000 | Liez le socket à ce port. |
TEMPÉRATURE | 0,2 | Température d'échantillonnage, il contrôle le degré de caractère aléatoire dans la sélection des jetons. Peut être remplacé par l'utilisateur final comme l'exige la spécification de l'API OpenAI. |
TOP_K | 40 | Comment le modèle sélectionne les jetons pour la sortie, le jeton suivant est sélectionné. |
TOP_P | 0,8 | Les jetons sont sélectionnés du plus probable au moins jusqu'à la somme de leurs. Peut être remplacé par l'utilisateur final comme l'exige la spécification de l'API OpenAI. |
Si votre application utilise les bibliothèques clientes fournies par OpenAI, il vous suffit de modifier la variable d'environnement OPENAI_API_BASE
pour qu'elle corresponde à l'URL de votre point de terminaison Google Cloud Run :
export OPENAI_API_BASE= " https://openai-api-vertex-XYZ.a.run.app/v1 "
python your_openai_app.py
Lors du déploiement de l'application Chatbot UI, les variables d'environnement suivantes doivent être définies :
Variable | Valeur |
---|---|
OPENAI_API_KEY | Clé API générée lors du déploiement |
OPENAI_API_HOST | URL de Google Cloud Run |
Exécutez le script suivant pour créer une image de conteneur à partir du code source GitHub et déployer ce conteneur en tant que site Web public (qui autorise les appels non authentifiés) dans 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
Définissez les paramètres de chatbox suivants :
Paramètre | Valeur |
---|---|
Fournisseur d'IA | API OpenAI |
Clé API OpenAI | Clé API générée lors du déploiement |
Hôte API | URL de Google Cloud Run |
L'extension VSCode-OpenAI est un outil puissant et polyvalent conçu pour intégrer les fonctionnalités OpenAI de manière transparente dans votre éditeur de code.
Pour activer la configuration, vous avez deux options :
Sélectionnez openai.com
et saisissez l'URL de Google Cloud Run avec /v1
lors de la configuration.
Lors du déploiement de l'application Discord Bot, les variables d'environnement suivantes doivent être définies :
Variable | Valeur |
---|---|
OPENAI_API_KEY | Clé API générée lors du déploiement |
OPENAI_API_BASE | URL Google Cloud Run avec /v1 |
Lors du déploiement de ChatGPT dans l'application Slack, les variables d'environnement suivantes doivent être définies :
Variable | Valeur |
---|---|
OPENAI_API_KEY | Clé API générée lors du déploiement |
OPENAI_API_BASE | URL Google Cloud Run avec /v1 |
Lors du déploiement de l'application ChatGPT Telegram Bot, les variables d'environnement suivantes doivent être définies :
Variable | Valeur |
---|---|
OPENAI_API_KEY | Clé API générée lors du déploiement |
OPENAI_API_BASE | URL Google Cloud Run avec /v1 |
Avez-vous un patch qui profitera à ce projet ? Génial! Suivez ces étapes pour le faire accepter.
Tous les fichiers de ce référentiel sont sous la licence Apache, version 2.0, sauf indication contraire.