Januar 12, 2026

Chatbot

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 vertex2025

Um das zu bestätigen kann man diesen Befehl verwenden:

gcloud config list

Außerdem ist es oft notwendig das Quota-Projekt ind er ADC-Datei zu aktualisieren:

gcloud auth application-default set-quota-project vertex2025

Der 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-genai

App 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 streamlit

Der 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.py

Requirements

Die requirements.txt erzeugen wir wie immer mit

pip freeze > requirements.txt

RAG

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 vertexai

Weitere 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.