In diesem Beitrag wird eine einfache Chat App mit Vertex AI erstellt. Das Code Repository findet ihr hier: https://github.com/gochxx/chatapp
Google Cloud konfigurieren
Zunächst sollte man dafür ein neues Projekt in der Google Cloud anlegen. Ich habe das Projekt „vertex2025“ genannt.
Dieses Projekt muss per Gcloud dann als aktives Projekt gesetzt werden.
gcloud config set project vertex2025Um das zu bestätigen kann man diesen Befehl verwenden:
gcloud config listAußerdem ist es oft notwendig das Quota-Projekt ind er ADC-Datei zu aktualisieren:
gcloud auth application-default set-quota-project vertex2025Der Befehl aktualisiert das Quota-Projekt in der Datei application_default_credentials.json, damit es mit deinem aktiven Projekt vertex2025 übereinstimmt. Dies stellt sicher, dass alle Anfragen an die Vertex AI APIs die richtigen Quota-Limits verwenden.
API aktivieren
In der Google Cloud Konsole geht man auf Vertex AI -> Vertex AI Studio -> Chat um dort die entsprechende API zu aktivieren.
Python einrichten
Im ersten Schritt sollte man ein neues virtuelles Environment erstellen und dort das entsprechende Paket von Google installieren:
pip install --upgrade google-genaiApp erstellen
Hier der einfache Tutorial Code von Google, der eine App erstellt. Ich habe einzig den Inhalt von „Contents“ angepasst, damit eine Ausgabe erzeugt wird.
from google import genai
from google.genai import types
import base64
def generate():
client = genai.Client(
vertexai=True,
project="vertex2025",
location="us-central1"
)
model = "gemini-2.0-flash-exp"
contents = ["Hello, how can I assist you today?"
]
generate_content_config = types.GenerateContentConfig(
temperature = 1,
top_p = 0.95,
max_output_tokens = 8192,
response_modalities = ["TEXT"],
safety_settings = [types.SafetySetting(
category="HARM_CATEGORY_HATE_SPEECH",
threshold="OFF"
),types.SafetySetting(
category="HARM_CATEGORY_DANGEROUS_CONTENT",
threshold="OFF"
),types.SafetySetting(
category="HARM_CATEGORY_SEXUALLY_EXPLICIT",
threshold="OFF"
),types.SafetySetting(
category="HARM_CATEGORY_HARASSMENT",
threshold="OFF"
)],
)
for chunk in client.models.generate_content_stream(
model = model,
contents = contents,
config = generate_content_config,
):
print(chunk.text, end="")
generate()Streamlit
Nun möchten wir daraus einen interaktiven Chatbot erstellen. Dazu verwenden wir Streamlit:
pip install streamlitDer Code der App mit Streamlit:
import streamlit as st
from google import genai
from google.genai import types
# Initialize the Vertex AI Client
def initialize_client():
client = genai.Client(
vertexai=True,
project="vertex2025", # Dein Google Cloud Projekt
location="us-central1"
)
return client
# Funktion zur Generierung der Antwort
def generate_response(client, user_input):
model = "gemini-2.0-flash-exp"
contents = [user_input]
generate_content_config = types.GenerateContentConfig(
temperature=1,
top_p=0.95,
max_output_tokens=1024,
response_modalities=["TEXT"],
)
response = ""
for chunk in client.models.generate_content_stream(
model=model,
contents=contents,
config=generate_content_config,
):
response += chunk.text
return response
# Streamlit-Frontend
def main():
st.title("Vertex AI Chatbot")
st.write("Chatte mit dem Chatbot, der über Vertex AI läuft!")
# Chat-Historie
if "messages" not in st.session_state:
st.session_state["messages"] = []
# Benutzer-Eingabe
user_input = st.text_input("Deine Nachricht:", "")
# Wenn der Benutzer eine Nachricht eingibt
if st.button("Senden") and user_input.strip():
client = initialize_client()
response = generate_response(client, user_input)
# Nachricht zur Chat-Historie hinzufügen
st.session_state["messages"].append({"role": "user", "text": user_input})
st.session_state["messages"].append({"role": "bot", "text": response})
# Chat-Historie anzeigen
for message in st.session_state["messages"]:
if message["role"] == "user":
st.markdown(f"**Du:** {message['text']}")
else:
st.markdown(f"**Bot:** {message['text']}")
if __name__ == "__main__":
main()
Um die App zu starten tippt man:
streamlit run streamlit_chatapp.pyRequirements
Die requirements.txt erzeugen wir wie immer mit
pip freeze > requirements.txtRAG
Um ein RAG-System zu erstellen können wir unsere VertexAI App weiter erweitern. Dafür ist es zunächst notwendig das VertexAI Paket für Python zu installieren:
pip install vertexaiWeitere Infos findet ihr hier: https://cloud.google.com/vertex-ai/generative-ai/docs/rag-quickstart?hl=de&_gl=1*16riw3v*_ga*OTI5ODY0Njk2LjE3MzU4ODkzMDg.*_ga_WH2QY8WWF5*MTczNzMxMDE1MC4xMS4wLjE3MzczMTAxNTAuMC4wLjA.