
Bei der Verwendung der Google Gemini API ist der Wechsel von AI Studio zu Vertex AI für viele Entwickler ein notwendiger Schritt. Doch ein scheinbar einfacher Unterschied beim Parameter role lässt unzählige Entwickler stolpern:
[&{Please use a valid role: user, model. (request id: xxx) 400 }]
Der Hauptgrund für diesen 400-Fehler ist: Vertex AI setzt zwingend voraus, dass jedes Objekt im contents-Array ein role-Feld enthält, während AI Studio dieses bei Einzelrunden-Dialogen optional behandelt.
In diesem Artikel analysieren wir die Unterschiede im Format des Request-Bodys zwischen Vertex AI und AI Studio und bieten Lösungen für drei gängige Szenarien.
Kernunterschiede zwischen Vertex AI und AI Studio im Überblick
Bevor wir den 400-Fehler beheben, müssen wir die grundlegenden Unterschiede zwischen den beiden Plattformen verstehen.
Plattform-Positionierung
| Vergleichsdimension | AI Studio (Google AI) | Vertex AI |
|---|---|---|
| Zielgruppe | Schnelle Prototypenerstellung für Entwickler | Enterprise-Bereitstellung |
| Authentifizierung | API-Key | Service Account / OAuth |
| Ratenbegrenzung | Basis-Limits, nicht für kommerzielle Nutzung | Enterprise-Limits, kommerzieller Support |
| role-Feld | Bei Einzelrunden optional | Zwingend erforderlich |
| Endpunkt-Format | generativelanguage.googleapis.com | {region}-aiplatform.googleapis.com |
| Verfügbarkeit | APIYI apiyi.com, Offizielle API | APIYI apiyi.com, Google Cloud |
Warum der role 400-Fehler auftritt
Vertex AI führt als Enterprise-Plattform eine strengere Validierung der Anfrageformate durch. Wenn das role-Feld in Ihrem Request-Body fehlt, gibt Vertex AI sofort folgende Fehlermeldung zurück:
{
"error": {
"code": 400,
"message": "Please use a valid role: user, model.",
"status": "INVALID_ARGUMENT"
}
}

🎯 Technischer Tipp: Wenn Sie von AI Studio zu Vertex AI migrieren, empfehlen wir, Tests über die Plattform APIYI (apiyi.com) durchzuführen. Diese Plattform bietet ein einheitliches API-Format und gleicht Parameterunterschiede automatisch aus, was die Validierung technischer Lösungen erheblich beschleunigt.
Vertex AI Request Body Format im Detail
Das korrekte Vertex AI Anfrageformat
Der Request Body für die Gemini API von Vertex AI muss zwingend der folgenden Struktur entsprechen:
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "Erkläre mir kurz, was ein großes Sprachmodell ist."
}
]
}
],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 2048
}
}
Gültige Werte für den Parameter role
Vertex AI akzeptiert nur zwei Werte für role:
| role Wert | Bedeutung | Einsatzszenario |
|---|---|---|
user |
Benutzereingabe | Fragen oder Anweisungen, die an das Modell gesendet werden |
model |
Modellantwort | Historische Antworten in einer Multi-Turn-Konversation |
Falsches Beispiel vs. Richtiges Beispiel
❌ FALSCH: Fehlendes role-Feld (AI Studio Stil)
{
"contents": [
{
"parts": [
{
"text": "Hello, how are you?"
}
]
}
]
}
✅ RICHTIG: Inklusive role-Feld (Vertex AI Stil)
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "Hello, how are you?"
}
]
}
]
}
AI Studio Request Body Format im Detail
Der flexible Modus von AI Studio
AI Studio (Google AI) ist bei den Anforderungen an das Anfrageformat etwas lockerer. In Single-Turn-Szenarien (einzelne Anfrage) kann das Feld role weggelassen werden:
{
"contents": [
{
"parts": [
{
"text": "What is machine learning?"
}
]
}
]
}
Vergleich der Request Bodies beider Plattformen

| Feld | AI Studio | Vertex AI |
|---|---|---|
contents |
Erforderlich | Erforderlich |
contents[].role |
Optional (Single-Turn) | Erforderlich |
contents[].parts |
Erforderlich | Erforderlich |
contents[].parts[].text |
Erforderlich | Erforderlich |
systemInstruction |
Unterstützt | Unterstützt |
generationConfig |
Optional | Optional |
Szenario für Multi-Turn-Konversationen
In Multi-Turn-Konversationen (Dialogen) gleichen sich die Formate beider Plattformen an. In diesem Fall muss die role explizit angegeben werden:
{
"contents": [
{
"role": "user",
"parts": [{"text": "Hallo, bitte stell dich kurz vor."}]
},
{
"role": "model",
"parts": [{"text": "Hallo! Ich bin Gemini, ein von Google entwickeltes KI-Modell..."}]
},
{
"role": "user",
"parts": [{"text": "Was sind deine Hauptfunktionen?"}]
}
]
}
Vollständige Lösungen für 3 Szenarien
Szenario 1: Python SDK Aufruf von Vertex AI
Bei der Verwendung des offiziellen Python SDK von Google müssen Sie sicherstellen, dass der Parameter role korrekt übergeben wird:
from google import genai
from google.genai.types import Content, Part
# 初始化客户端
client = genai.Client(
vertexai=True,
project="your-project-id",
location="us-central1"
)
# 正确的请求格式 - 必须包含 role
contents = [
Content(
role="user",
parts=[Part(text="什么是 Vertex AI?")]
)
]
response = client.models.generate_content(
model="gemini-2.0-flash",
contents=contents
)
print(response.text)
Szenario 2: Direkter Aufruf über die REST API
Direkter Aufruf der Vertex AI REST API mit curl oder einem HTTP-Client:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://us-central1-aiplatform.googleapis.com/v1/projects/YOUR_PROJECT/locations/us-central1/publishers/google/models/gemini-2.0-flash:generateContent" \
-d '{
"contents": [
{
"role": "user",
"parts": [
{"text": "解释量子计算的基本原理"}
]
}
],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1024
}
}'
💡 Schnellstart: Wir empfehlen die Plattform APIYI (apiyi.com) für den schnellen Prototypenbau. Diese Plattform bietet sofort einsatzbereite API-Schnittstellen, die Formatunterschiede zwischen Vertex AI und AI Studio einheitlich behandeln. Keine komplexe Konfiguration erforderlich, die Integration ist in 5 Minuten abgeschlossen.
Szenario 3: Aufruf im OpenAI-kompatiblen Format
Falls Ihr Code auf dem OpenAI SDK basiert, können Sie ein kompatibles Format verwenden:
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # 使用 APIYI 统一接口
)
# OpenAI 兼容格式自动处理 role
response = client.chat.completions.create(
model="gemini-2.0-flash",
messages=[
{"role": "user", "content": "什么是神经网络?"}
]
)
print(response.choices[0].message.content)
Sonderfall: Vertex AI Express Mode
Was ist der Vertex AI Express Mode?
Der Vertex AI Express Mode ist eine Option, die zwischen AI Studio und dem Standard-Vertex AI liegt:
| Eigenschaft | AI Studio | Vertex AI Express | Vertex AI Standard |
|---|---|---|---|
| Authentifizierung | API Key | API Key | Service Account |
| Rate Limits | Basis | Produktionsniveau | Produktionsniveau |
| Kommerzielle Lizenz | Nein | Ja | Ja |
| role-Anforderung | Optional | Erforderlich | Erforderlich |
| Endpunkt | generativelanguage | aiplatform | aiplatform |
role-Anforderung im Express Mode
Obwohl der Express Mode die API-Key-Authentifizierung verwendet (genau wie AI Studio), übernimmt er die strengen Formatanforderungen von Vertex AI: Das Feld role ist obligatorisch.
# Express Mode 示例 - role 必填
import requests
url = "https://us-central1-aiplatform.googleapis.com/v1/projects/YOUR_PROJECT/locations/us-central1/publishers/google/models/gemini-2.0-flash:generateContent"
headers = {
"Content-Type": "application/json",
"X-Goog-Api-Key": "YOUR_API_KEY"
}
data = {
"contents": [
{
"role": "user", # 必须包含!
"parts": [{"text": "Hello World"}]
}
]
}
response = requests.post(url, headers=headers, json=data)
Leitfaden zur Fehlerbehebung
Fehler 1: Please use a valid role: user, model
Ursache: Das Objekt im Array contents enthält kein role-Feld.
Lösung:
{
"contents": [
{
+ "role": "user",
"parts": [{"text": "..."}]
}
]
}
Fehler 2: Invalid role value
Ursache: Das Feld role verwendet einen ungültigen Wert (z. B. „system“ oder „assistant“).
Lösung: Vertex AI akzeptiert nur user und model. Es akzeptiert kein system oder assistant.
{
"contents": [
{
- "role": "assistant",
+ "role": "model",
"parts": [{"text": "..."}]
}
]
}
Fehler 3: Falsche Position der Systemanweisungen
Ursache: Die System-Eingabeaufforderung wurde in contents anstatt im Feld systemInstruction platziert.
Lösung:
{
"systemInstruction": {
"parts": [{"text": "Du bist ein professioneller technischer Berater."}]
},
"contents": [
{
"role": "user",
"parts": [{"text": "Erkläre mir bitte, was eine API ist."}]
}
]
}
💰 Kostenoptimierung: Für Projekte, die häufige Tests von API-Formaten erfordern, kann der Aufruf der API über die Plattform APIYI (apiyi.com) in Betracht gezogen werden. Diese Plattform bietet flexible Abrechnungsmodelle und günstigere Preise, was ideal für kleine und mittlere Teams sowie Einzelentwickler während der Entwicklung und beim Debugging ist.
Checkliste für die Migration
Verwenden Sie bei der Migration von AI Studio zu Vertex AI die folgende Checkliste, um sicherzustellen, dass das Anfrageformat korrekt ist:
Erforderliche Änderungen
| Prüfpunkt | AI Studio Schreibweise | Vertex AI Schreibweise |
|---|---|---|
Feld role |
Kann weggelassen werden | Muss hinzugefügt werden "role": "user" |
| Endpunkt-URL | generativelanguage.googleapis.com | {region}-aiplatform.googleapis.com |
| Authentifizierung | x-goog-api-key |
Authorization: Bearer |
| Modellpfad | models/gemini-pro | publishers/google/models/gemini-pro |
Beispiel für die Codemigration
Vor der Migration (AI Studio):
import google.generativeai as genai
genai.configure(api_key="YOUR_API_KEY")
model = genai.GenerativeModel('gemini-pro')
response = model.generate_content("Hello")
Nach der Migration (Vertex AI):
from google import genai
from google.genai.types import Content, Part
client = genai.Client(vertexai=True, project="your-project", location="us-central1")
contents = [
Content(role="user", parts=[Part(text="Hello")]) # role ist erforderlich
]
response = client.models.generate_content(
model="gemini-2.0-flash",
contents=contents
)
Role-Handling bei multimodalen Anfragen
Bild- + Textanfragen
Beim Senden von multimodalen Anfragen, die Bilder enthalten, muss ebenfalls die role angegeben werden:
{
"contents": [
{
"role": "user",
"parts": [
{"text": "Beschreibe den Inhalt dieses Bildes"},
{
"inlineData": {
"mimeType": "image/jpeg",
"data": "BASE64_ENCODED_IMAGE"
}
}
]
}
]
}
Verwendung von Cloud Storage-Dateien
{
"contents": [
{
"role": "user",
"parts": [
{"text": "Analysiere den Hauptinhalt dieses Videos"},
{
"fileData": {
"mimeType": "video/mp4",
"fileUri": "gs://your-bucket/video.mp4"
}
}
]
}
]
}

Häufig gestellte Fragen (FAQ)
Q1: Warum kann in AI Studio die role weggelassen werden, in Vertex AI jedoch nicht?
AI Studio ist als Tool für die schnelle Prototypenerstellung konzipiert und hat lockerere Formatanforderungen. Vertex AI hingegen ist eine Plattform auf Enterprise-Niveau, die strikte Anfrageformate benötigt, um Systemstabilität und Wartbarkeit zu gewährleisten. Über die Plattform APIYI (apiyi.com) können Sie kostenloses Testguthaben erhalten, um die Formatanforderungen der verschiedenen Plattformen schnell zu validieren.
Q2: Unterstützt Vertex AI die system role?
Nein. Die role in Vertex AI akzeptiert nur die Werte user und model. Systemanweisungen müssen über das separate Feld systemInstruction verwendet werden:
{
"systemInstruction": {
"parts": [{"text": "Deine System-Eingabeaufforderung"}]
},
"contents": [...]
}
Q3: Wie wird der assistant aus dem OpenAI-Format zugeordnet?
Die assistant-Rolle im OpenAI-Format entspricht der model-Rolle in Vertex AI. Wenn Sie die einheitliche Schnittstelle von APIYI (apiyi.com) nutzen, wird diese Zuordnung automatisch vorgenommen.
Q4: Wie kann ich schnell testen, ob das Anfrageformat korrekt ist?
Wir empfehlen die folgenden Methoden zur schnellen Validierung:
- Test über die APIYI-Plattform: Bietet Validierung des Anfrageformats und Fehlermeldungen.
- Verwendung der Google Cloud Console: Das Vertex AI Studio bietet eine visuelle Testoberfläche.
- Lokaler Mock-Test: Validieren Sie die Logik zuerst mit AI Studio und passen Sie dann das Format für die Migration zu Vertex AI an.
Q5: Ist das Format im Vertex AI Express Mode dasselbe wie im Standardmodus?
Ja, das Format des Request Bodys ist bei beiden völlig identisch; beide erfordern zwingend das Feld role. Der Hauptunterschied liegt in der Authentifizierungsmethode (API Key vs. Service Account).
Zusammenfassung
Die Unterschiede im Format des Request-Bodys zwischen Vertex AI und AI Studio zeigen sich hauptsächlich in den obligatorischen Anforderungen an das role-Feld:
| Plattform | role-Anforderung | Gültige Werte |
|---|---|---|
| AI Studio | Optional bei Einzel-Turn, erforderlich bei Multi-Turn | user, model |
| Vertex AI | Immer erforderlich | user, model |
| Vertex AI Express | Immer erforderlich | user, model |
Zentrale Schritte zur Behebung von 400-Fehlern:
- Stellen Sie sicher, dass jedes
contents-Objekt"role": "user"oder"role": "model"enthält. - Verwenden Sie für System-Anweisungen das Feld
systemInstructionanstelle vonrole. - Mapen Sie das OpenAI-Format
assistantaufmodel.
Wir empfehlen die schnelle Validierung über APIYI (apiyi.com). Die Plattform verarbeitet Kompatibilitätsprobleme zwischen verschiedenen API-Formaten automatisch, sodass Sie sich ganz auf die Entwicklung Ihrer Geschäftslogik konzentrieren können.
Weiterführende Informationen:
- Offizielle Vertex AI Dokumentation: cloud.google.com/vertex-ai/docs
- Gemini API Referenz: ai.google.dev/api
- Migrationsleitfaden: cloud.google.com/vertex-ai/generative-ai/docs/migrate/migrate-google-ai
📝 Autor: APIYI Technik-Team | Spezialisiert auf die Integration und Optimierung von APIs für Große Sprachmodelle
🔗 Technischer Austausch: Besuchen Sie APIYI unter apiyi.com für weitere technische Ressourcen und Unterstützung bei der Entwicklung.