Bei diesem Projekt handelt es sich um eine Drop-in-Ersatz-REST-API für Vertex AI ( PaLM 2, Codey, Gemini ), die mit den OpenAI-API-Spezifikationen kompatibel ist.
Beispiele:
Chatten Sie mit Gemini in der Chatbot-Benutzeroberfläche | Holen Sie sich Hilfe von Gemini in VSCode |
---|---|
Dieses Projekt ist von der Idee von LocalAI inspiriert, konzentriert sich jedoch darauf, die Google Cloud Platform Vertex AI PaLM für jedermann zugänglicher zu machen.
Es ist ein Google Cloud Run-Dienst installiert, der die OpenAI-API-Aufrufe in Vertex AI (PaLM 2, Codey, Gemini) übersetzt.
Unterstützte OpenAI-API-Dienste:
OpenAI | API | Unterstützt |
---|---|---|
Modelle auflisten | /v1/models | ✅ |
Chat-Abschlüsse | /v1/chat/completions | ✅ |
Abschlüsse (Legacy) | /v1/completions | |
Einbettungen | /v1/embeddings |
Die Software ist in Python entwickelt und basiert auf FastAPI und LangChain.
Alles ist sehr einfach gestaltet, sodass Sie den Quellcode problemlos an Ihre individuellen Bedürfnisse anpassen können.
Ein Jupyter-Notebook Vertex_AI_Chat.ipynb
mit Schritt-für-Schritt-Anleitungen ist vorbereitet. Es hilft Ihnen bei der Bereitstellung des API-Backends und des Chatbot-UI-Frontends als Google Cloud Run-Dienst.
Anforderungen:
Ihr Benutzer (derjenige, der für die Bereitstellung verwendet wird) muss über die entsprechenden Berechtigungen im Projekt verfügen. Für eine schnelle und problemlose Bereitstellung wird die Rolle „Owner“ empfohlen.
Darüber hinaus muss das Standard-Rechendienstkonto ( [PROJECT_NR][email protected]
) die Rolle „Role Vertex AI User“ ( roles/aiplatform.user
) haben.
Authentifizieren:
gcloud auth login
Standardprojekt festlegen:
gcloud config set project [PROJECT_ID]
Führen Sie das folgende Skript aus, um ein Container-Image zu erstellen und diesen Container als öffentliche API (die nicht authentifizierte Aufrufe zulässt) in Google Cloud Run bereitzustellen:
bash deploy.sh
Hinweis: Sie können den generierten gefälschten OpenAI-API-Schlüssel und die Google Cloud-Region mit Umgebungsvariablen ändern:
export OPENAI_API_KEY= " sk-XYZ " export GOOGLE_CLOUD_LOCATION= " europe-west1 " bash deploy.sh
Die Software wurde unter GNU/Linux und macOS mit Python 3.11 und 3.12.3 getestet (3.12.4 funktioniert derzeit nicht). Wenn Sie die Software unter Windows nutzen möchten, müssen Sie die Umgebungsvariablen mit set
statt mit export
setzen.
Sie sollten außerdem eine virtuelle Umgebung mit der Python-Version erstellen, die Sie verwenden möchten, und diese aktivieren, bevor Sie fortfahren.
Sie benötigen außerdem die Google Cloud CLI. Die Google Cloud CLI umfasst das gcloud
-Befehlszeilentool.
Initiieren Sie eine virtuelle Python-Umgebung und installieren Sie die Anforderungen:
python3 -m venv .venv &&
source .venv/bin/activate &&
pip install -r requirements.txt
Authentifizieren:
gcloud auth application-default login
Standardprojekt festlegen:
gcloud auth application-default set-quota-project [PROJECT_ID]
Mit Standardmodell ausführen:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
uvicorn vertex:app --reload
Beispiel für Windows:
set DEBUG = True
set OPENAI_API_KEY = sk - XYZ
uvicorn vertex:app -- reload
Laufen Sie mit dem Gemini- gemini-pro
-Modell:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
export MODEL_NAME= " gemini-pro "
uvicorn vertex:app --reload
Ausführen mit dem Codey-Modell 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
Die Anwendung wird nun auf Ihrem lokalen Computer ausgeführt. Sie können darauf zugreifen, indem Sie einen Webbrowser öffnen und zur folgenden Adresse navigieren:
http://localhost:8000/
HTTP-Anfrage- und Antwortformate stimmen mit der OpenAI-API überein.
Um beispielsweise einen Chat-Abschluss zu generieren, können Sie eine POST-Anfrage an den Endpunkt /v1/chat/completions
mit der Anweisung als Anfragetext senden:
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!"
}
]
} '
Antwort:
{
"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
}
]
}
Laden Sie den Export für den Bruno API-Client herunter: bruno-export.json
Die Konfiguration der Software kann über Umgebungsvariablen erfolgen.
Es gibt folgende Variablen mit Standardwerten:
Variable | Standard | Beschreibung |
---|---|---|
DEBUGGEN | FALSCH | Zeigen Sie Debug-Meldungen an, die während der Entwicklung hilfreich sind. |
GOOGLE_CLOUD_LOCATION | us-central1 | Google Cloud Platform-Region für API-Aufrufe. |
GOOGLE_CLOUD_PROJECT_ID | [DEFAULT_AUTH_PROJECT] | Kennung für Ihr Projekt. Wenn nicht angegeben, wird das Authentifizierungsprojekt verwendet. |
GASTGEBER | 0.0.0.0 | Binden Sie den Socket an diesen Host. |
MAX_OUTPUT_TOKENS | 512 | Das Token-Limit bestimmt die maximale Textausgabemenge einer Eingabeaufforderung. Kann vom Endbenutzer gemäß den Anforderungen der OpenAI-API-Spezifikation überschrieben werden. |
MODEL_NAME | Chat-Bison | Eines der Basismodelle, die in Vertex AI verfügbar sind. |
OPENAI_API_KEY | sk-[RANDOM_HEX] | Selbstgenerierter gefälschter OpenAI-API-Schlüssel, der zur Authentifizierung gegenüber der Anwendung verwendet wird. |
HAFEN | 8000 | Binden Sie den Socket an diesen Port. |
TEMPERATUR | 0,2 | Durch die Abtasttemperatur wird der Grad der Zufälligkeit bei der Token-Auswahl gesteuert. Kann vom Endbenutzer gemäß den Anforderungen der OpenAI-API-Spezifikation überschrieben werden. |
TOP_K | 40 | Wie das Modell Token für die Ausgabe auswählt, aus denen das nächste Token ausgewählt wird. |
TOP_P | 0,8 | Die Token werden vom wahrscheinlichsten zum geringsten Wert bis zur Summe ihrer Werte ausgewählt. Kann vom Endbenutzer gemäß den Anforderungen der OpenAI-API-Spezifikation überschrieben werden. |
Wenn Ihre Anwendung von OpenAI bereitgestellte Clientbibliotheken verwendet, müssen Sie nur die Umgebungsvariable OPENAI_API_BASE
ändern, damit sie mit Ihrer Google Cloud Run-Endpunkt-URL übereinstimmt:
export OPENAI_API_BASE= " https://openai-api-vertex-XYZ.a.run.app/v1 "
python your_openai_app.py
Beim Bereitstellen der Chatbot-UI-Anwendung müssen die folgenden Umgebungsvariablen festgelegt werden:
Variable | Wert |
---|---|
OPENAI_API_KEY | Während der Bereitstellung generierter API-Schlüssel |
OPENAI_API_HOST | Google Cloud Run-URL |
Führen Sie das folgende Skript aus, um ein Container-Image aus dem GitHub-Quellcode zu erstellen und diesen Container als öffentliche Website (die nicht authentifizierte Aufrufe zulässt) in Google Cloud Run bereitzustellen:
export OPENAI_API_KEY= " sk-XYZ "
export OPENAI_API_HOST= " https://openai-api-vertex-XYZ.a.run.app "
bash chatbot-ui.sh
Legen Sie die folgenden Chatbox-Einstellungen fest:
Einstellung | Wert |
---|---|
KI-Anbieter | OpenAI-API |
OpenAI-API-Schlüssel | Während der Bereitstellung generierter API-Schlüssel |
API-Host | Google Cloud Run-URL |
Die VSCode-OpenAI-Erweiterung ist ein leistungsstarkes und vielseitiges Tool zur nahtlosen Integration von OpenAI-Funktionen in Ihren Code-Editor.
Um das Setup zu aktivieren, haben Sie zwei Möglichkeiten:
Wählen Sie openai.com
aus und geben Sie während der Einrichtung die Google Cloud Run-URL mit /v1
ein.
Beim Bereitstellen der Discord Bot-Anwendung müssen die folgenden Umgebungsvariablen festgelegt werden:
Variable | Wert |
---|---|
OPENAI_API_KEY | Während der Bereitstellung generierter API-Schlüssel |
OPENAI_API_BASE | Google Cloud Run-URL mit /v1 |
Bei der Bereitstellung von ChatGPT in der Slack-Anwendung müssen die folgenden Umgebungsvariablen festgelegt werden:
Variable | Wert |
---|---|
OPENAI_API_KEY | Während der Bereitstellung generierter API-Schlüssel |
OPENAI_API_BASE | Google Cloud Run-URL mit /v1 |
Bei der Bereitstellung der ChatGPT Telegram Bot-Anwendung müssen die folgenden Umgebungsvariablen festgelegt werden:
Variable | Wert |
---|---|
OPENAI_API_KEY | Während der Bereitstellung generierter API-Schlüssel |
OPENAI_API_BASE | Google Cloud Run-URL mit /v1 |
Haben Sie einen Patch, der diesem Projekt zugute kommt? Eindrucksvoll! Befolgen Sie diese Schritte, damit es akzeptiert wird.
Alle Dateien in diesem Repository stehen unter der Apache-Lizenz, Version 2.0, sofern nicht anders angegeben.