Wie bei anderen LLMs möchten wir manchmal strukturierte Ausgaben erhalten, wenn wir programmatisch mit einem LLM interagieren, da wir die Ausgabe möglicherweise in einem nachgelagerten Prozess verwenden oder in eine Datenbank einspeisen wollen. Genau darum geht es in diesem Artikel: ein Beispiel für die Verwendung des Google GenAI Clients auf Vertex AI in einer VS-Code-Umgebung.
Anwendungsfall
Wir alle wissen, dass wir mit Generative AI viele Dinge tun können – aber hier kommt ein eher unscheinbarer Anwendungsfall: In einem neu automatisierten Logistiklager wird neue Software eingeführt, um Lagerung, Entnahme und andere Operationen abzuwickeln. Diese Software erfordert viele neue Attribute für jedes Produkt, die bisher unbekannt waren. Da das Unternehmen im E-Commerce über 13'000 Produkte verkauft, ist es zu zeitaufwändig, dies manuell zu erledigen, und einen Standardwert zuzuweisen ist ebenfalls nicht geeignet, da dies den Testbetrieb beeinträchtigen könnte.
In diesem Beispiel betrachten wir ein Attribut, das die Zerbrechlichkeit eines Produkts bestimmt – angegeben durch Ganzzahlwerte von 1 bis 4. Der Wert 1 steht für ein robustes Produkt, der Wert 4 für ein sehr zerbrechliches. Dieses Attribut ist eines von vielen, das bestimmt, welches Produkt bei der Auftragsabwicklung zuerst in die Tasche gelegt werden sollte – ähnlich wie beim Lebensmitteleinkauf, wo man die robusten Artikel unten in die Tasche packt.
Voraussetzungen
Um diesem Tutorial zu folgen, benötigst du:
- Ein Google Cloud-Projekt mit aktivierter Vertex AI API
- VS Code mit der Google Cloud Code Extension
- Python 3.10+ mit dem
google-genaiPaket
Umgebung einrichten
Zuerst installieren wir den Google GenAI Client und konfigurieren die Vertex AI-Umgebung:
pip install google-genai
Dann konfigurieren wir den Client für Vertex AI:
from google import genai
client = genai.Client(
vertexai=True,
project="dein-projekt-id",
location="us-central1"
)
Response Schema definieren
Der Schlüssel für strukturierte Ausgaben ist die Definition eines Response Schemas. Damit teilen wir Gemini mit, welches JSON-Format wir als Antwort erwarten:
from google.genai.types import GenerateContentConfig
response_schema = {
"type": "object",
"properties": {
"fragility_score": {
"type": "integer",
"description": "Fragility score from 1 (robust) to 4 (very fragile)"
},
"reasoning": {
"type": "string",
"description": "Brief explanation for the assigned score"
}
},
"required": ["fragility_score", "reasoning"]
}
config = GenerateContentConfig(
response_mime_type="application/json",
response_schema=response_schema
)
Anfrage an Gemini senden
Jetzt können wir eine Anfrage mit unserem Schema senden und erhalten eine strukturierte JSON-Antwort:
product_name = "Glasvase, mundgeblasen, 30cm hoch"
response = client.models.generate_content(
model="gemini-2.0-flash",
contents=f"""Classify the fragility of this product on a scale of 1-4:
1 = very robust, 2 = somewhat robust, 3 = somewhat fragile, 4 = very fragile
Product: {product_name}""",
config=config
)
import json
result = json.loads(response.text)
print(result)
# {"fragility_score": 4, "reasoning": "Glass vases are very fragile..."}
Ergebnis
Durch die Verwendung von strukturierten Ausgaben mit Gemini erhalten wir zuverlässige, maschinenlesbare JSON-Antworten, die sich direkt in nachgelagerte Systeme integrieren lassen. Das Response Schema stellt sicher, dass die Ausgabe immer dem erwarteten Format entspricht – kein aufwändiges Parsing von Freitext mehr nötig.
Im nächsten Artikel schauen wir uns an, wie wir mit Batch Prediction diese Klassifikation für alle 13'000+ Produkte effizient durchführen können.