
Saat menggunakan Google Gemini API, beralih dari AI Studio ke Vertex AI adalah langkah yang umum bagi banyak pengembang. Namun, perbedaan parameter role yang tampak sepele seringkali membuat banyak pengembang terjebak:
[&{Please use a valid role: user, model. (request id: xxx) 400 }]
Penyebab utama error 400 ini adalah: Vertex AI mewajibkan setiap objek dalam array contents menyertakan kolom role, sementara AI Studio mengizinkannya untuk dikosongkan pada percakapan satu putaran.
Artikel ini akan mengupas tuntas perbedaan format request body antara Vertex AI dan AI Studio, serta memberikan solusi lengkap untuk 3 skenario berbeda.
Ringkasan Perbedaan Inti antara Vertex AI dan AI Studio
Sebelum memperbaiki error 400, kita perlu memahami perbedaan mendasar antara kedua platform ini.
Perbedaan Pemosisian Platform
| Dimensi Perbandingan | AI Studio (Google AI) | Vertex AI |
|---|---|---|
| Target Pengguna | Prototipe cepat untuk pengembang | Penerapan produksi tingkat perusahaan |
| Metode Autentikasi | API Key | Service Account / OAuth |
| Batas Kecepatan | Batas dasar, bukan untuk komersial | Batas tingkat produksi, mendukung komersial |
| Kolom role | Opsional untuk satu putaran | Wajib diisi |
| Format Endpoint | generativelanguage.googleapis.com | {region}-aiplatform.googleapis.com |
| Platform yang Tersedia | APIYI apiyi.com, API resmi | APIYI apiyi.com, Google Cloud |
Mengapa Error role 400 Terjadi
Sebagai platform tingkat perusahaan, Vertex AI memiliki validasi format permintaan yang lebih ketat. Jika kolom role hilang dari request body Anda, Vertex AI akan segera mengembalikan:
{
"error": {
"code": 400,
"message": "Please use a valid role: user, model.",
"status": "INVALID_ARGUMENT"
}
}

🎯 Saran Teknis: Saat bermigrasi dari AI Studio ke Vertex AI, kami menyarankan untuk melakukan pengujian panggilan antarmuka melalui platform APIYI apiyi.com. Platform ini menyediakan format antarmuka API yang seragam dan secara otomatis menangani perbedaan parameter antar platform, sehingga membantu memvalidasi kelayakan solusi teknis dengan cepat.
Penjelasan Detail Format Request Body Vertex AI
Format Request Vertex AI yang Benar
Request body untuk Gemini API di Vertex AI harus mengikuti struktur berikut:
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "解释一下什么是大语言模型"
}
]
}
],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 2048
}
}
Nilai Valid untuk Parameter role
Vertex AI hanya menerima dua nilai role:
| Nilai role | Arti | Skenario Penggunaan |
|---|---|---|
user |
Input pengguna | Pertanyaan atau instruksi yang dikirim ke model |
model |
Respons model | Balasan riwayat dalam percakapan multi-turn |
Contoh Salah vs Contoh Benar
❌ Salah: Kurang field role (Gaya AI Studio)
{
"contents": [
{
"parts": [
{
"text": "Hello, how are you?"
}
]
}
]
}
✅ Benar: Menyertakan field role (Gaya Vertex AI)
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "Hello, how are you?"
}
]
}
]
}
Penjelasan Detail Format Request Body AI Studio
Mode Longgar AI Studio
AI Studio (Google AI) memiliki persyaratan format request yang relatif longgar. Dalam skenario percakapan single-turn, field role bisa diabaikan:
{
"contents": [
{
"parts": [
{
"text": "What is machine learning?"
}
]
}
]
}
Perbandingan Request Body Kedua Platform

| Field | AI Studio | Vertex AI |
|---|---|---|
contents |
Wajib | Wajib |
contents[].role |
Opsional (single-turn) | Wajib |
contents[].parts |
Wajib | Wajib |
contents[].parts[].text |
Wajib | Wajib |
systemInstruction |
Mendukung | Mendukung |
generationConfig |
Opsional | Opsional |
Skenario Percakapan Multi-turn
Dalam percakapan multi-turn, format kedua platform cenderung sama, keduanya memerlukan spesifikasi role secara jelas:
{
"contents": [
{
"role": "user",
"parts": [{"text": "你好,请介绍一下自己"}]
},
{
"role": "model",
"parts": [{"text": "你好!我是 Gemini,由 Google 开发的 AI 助手..."}]
},
{
"role": "user",
"parts": [{"text": "你能做什么?"}]
}
]
}
Solusi Lengkap untuk 3 Skenario
Skenario 1: Memanggil Vertex AI dengan Python SDK
Saat menggunakan Python SDK resmi dari Google, pastikan kamu menyertakan parameter role dengan benar:
from google import genai
from google.genai.types import Content, Part
# Inisialisasi klien
client = genai.Client(
vertexai=True,
project="your-project-id",
location="us-central1"
)
# Format permintaan yang benar - harus menyertakan 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)
Skenario 2: Pemanggilan Langsung via REST API
Gunakan curl atau HTTP client untuk memanggil Vertex AI REST API secara langsung:
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
}
}'
💡 Mulai Cepat: Direkomendasikan menggunakan platform APIYI (apiyi.com) untuk membangun prototipe dengan cepat. Platform ini menyediakan antarmuka API siap pakai yang menangani perbedaan format antara Vertex AI dan AI Studio secara otomatis. Tanpa konfigurasi rumit, integrasi bisa selesai dalam 5 menit.
Skenario 3: Pemanggilan dengan Format Kompatibel OpenAI
Jika kode kamu berbasis OpenAI SDK, kamu bisa menggunakan format yang kompatibel:
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # Menggunakan antarmuka terpadu APIYI
)
# Format kompatibel OpenAI menangani role secara otomatis
response = client.chat.completions.create(
model="gemini-2.0-flash",
messages=[
{"role": "user", "content": "什么是神经网络?"}
]
)
print(response.choices[0].message.content)
Kasus Khusus: Vertex AI Express Mode
Apa itu Vertex AI Express Mode?
Vertex AI Express Mode adalah opsi penengah antara AI Studio dan Vertex AI standar:
| Fitur | AI Studio | Vertex AI Express | Vertex AI Standard |
|---|---|---|---|
| Metode Autentikasi | API Key | API Key | Service Account |
| Rate Limit | Dasar | Kelas Produksi | Kelas Produksi |
| Lisensi Komersial | Tidak | Ya | Ya |
| Persyaratan role | Opsional | Wajib diisi | Wajib diisi |
| Endpoint | generativelanguage | aiplatform | aiplatform |
Persyaratan role pada Express Mode
Meskipun Express Mode menggunakan autentikasi API Key (sama seperti AI Studio), mode ini tetap mewarisi persyaratan format Vertex AI yang ketat: field role wajib diisi.
# Contoh Express Mode - role wajib diisi
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", # Wajib ada!
"parts": [{"text": "Hello World"}]
}
]
}
response = requests.post(url, headers=headers, json=data)
Panduan Troubleshooting Kesalahan Umum
Kesalahan 1: Please use a valid role: user, model
Penyebab: Objek dalam array contents tidak memiliki kolom role.
Solusi:
{
"contents": [
{
+ "role": "user",
"parts": [{"text": "..."}]
}
]
}
Kesalahan 2: Invalid role value
Penyebab: Kolom role menggunakan nilai yang tidak valid (seperti "system" atau "assistant").
Solusi: Vertex AI hanya menerima user dan model, serta tidak menerima system atau assistant.
{
"contents": [
{
- "role": "assistant",
+ "role": "model",
"parts": [{"text": "..."}]
}
]
}
Kesalahan 3: Posisi System instructions salah
Penyebab: Menempatkan system prompt di dalam contents, bukan di kolom systemInstruction.
Solusi:
{
"systemInstruction": {
"parts": [{"text": "Anda adalah konsultan teknis profesional"}]
},
"contents": [
{
"role": "user",
"parts": [{"text": "Bantu saya jelaskan apa itu API"}]
}
]
}
💰 Optimasi Biaya: Untuk proyek yang membutuhkan pengujian format API secara berkala, Anda bisa mempertimbangkan untuk memanggil API melalui platform APIYI apiyi.com. Platform ini menawarkan metode penagihan yang fleksibel dan harga yang lebih terjangkau, sangat cocok bagi tim kecil-menengah maupun developer perorangan dalam melakukan pengembangan dan debugging.
Checklist Migrasi
Saat bermigrasi dari AI Studio ke Vertex AI, gunakan checklist berikut untuk memastikan format permintaan sudah benar:
Item yang Wajib Diubah
| Item Pemeriksaan | Penulisan AI Studio | Penulisan Vertex AI |
|---|---|---|
| Kolom role | Bisa dikosongkan | Wajib ditambahkan "role": "user" |
| URL Endpoint | generativelanguage.googleapis.com | {region}-aiplatform.googleapis.com |
| Metode Autentikasi | x-goog-api-key |
Authorization: Bearer |
| Path Model | models/gemini-pro | publishers/google/models/gemini-pro |
Contoh Migrasi Kode
Sebelum Migrasi (AI Studio):
import google.generativeai as genai
genai.configure(api_key="YOUR_API_KEY")
model = genai.GenerativeModel('gemini-pro')
response = model.generate_content("Hello")
Setelah Migrasi (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 wajib diisi
]
response = client.models.generate_content(
model="gemini-2.0-flash",
contents=contents
)
Penanganan role pada Permintaan Multimoda
Permintaan Gambar + Teks
Saat mengirimkan permintaan multimoda yang berisi gambar, Anda juga perlu menentukan role:
{
"contents": [
{
"role": "user",
"parts": [
{"text": "描述这张图片的内容"},
{
"inlineData": {
"mimeType": "image/jpeg",
"data": "BASE64_ENCODED_IMAGE"
}
}
]
}
]
}
Menggunakan File Cloud Storage
{
"contents": [
{
"role": "user",
"parts": [
{"text": "分析这个视频的主要内容"},
{
"fileData": {
"mimeType": "video/mp4",
"fileUri": "gs://your-bucket/video.mp4"
}
}
]
}
]
}

Pertanyaan yang Sering Diajukan (FAQ)
Q1: Mengapa AI Studio bisa mengabaikan role, sedangkan Vertex AI tidak?
AI Studio dirancang sebagai alat validasi prototipe yang cepat, sehingga persyaratan formatnya lebih longgar. Sebaliknya, Vertex AI sebagai platform produksi tingkat perusahaan memerlukan format permintaan yang ketat untuk memastikan stabilitas dan kemudahan pemeliharaan sistem. Melalui platform APIYI (apiyi.com), Anda bisa mendapatkan kuota uji coba gratis untuk memvalidasi persyaratan format di berbagai platform dengan cepat.
Q2: Apakah Vertex AI mendukung system role?
Tidak mendukung. role di Vertex AI hanya menerima dua nilai: user dan model. Untuk instruksi sistem, Anda harus menggunakan field systemInstruction yang terpisah:
{
"systemInstruction": {
"parts": [{"text": "petunjuk sistem Anda"}]
},
"contents": [...]
}
Q3: Bagaimana cara memetakan assistant dari format OpenAI?
role assistant dalam format OpenAI setara dengan role model di Vertex AI. Jika Anda menggunakan antarmuka terpadu dari APIYI (apiyi.com), pemetaan ini akan ditangani secara otomatis.
Q4: Bagaimana cara cepat untuk mengetes apakah format permintaan sudah benar?
Direkomendasikan menggunakan metode berikut untuk validasi cepat:
- Gunakan pengujian platform APIYI: Menyediakan pengecekan format permintaan dan pesan kesalahan.
- Gunakan Google Cloud Console: Vertex AI Studio menyediakan antarmuka pengujian visual.
- Pengujian Mock lokal: Validasi logika menggunakan AI Studio terlebih dahulu, lalu sesuaikan formatnya saat migrasi ke Vertex AI.
Q5: Apakah format Vertex AI Express Mode dan mode standar sama?
Ya, format body permintaan keduanya benar-benar sama, keduanya mewajibkan adanya field role. Perbedaan utamanya terletak pada metode autentikasi (API Key vs. Service Account).
Kesimpulan
Perbedaan format request body antara Vertex AI dan AI Studio terutama terletak pada persyaratan wajib untuk field role:
| Platform | Persyaratan role | Nilai yang valid |
|---|---|---|
| AI Studio | Opsional untuk single-turn, wajib untuk multi-turn | user, model |
| Vertex AI | Selalu wajib | user, model |
| Vertex AI Express | Selalu wajib | user, model |
Langkah-langkah utama untuk mengatasi error 400:
- Pastikan setiap objek contents menyertakan
"role": "user"atau"role": "model" - Gunakan field
systemInstructionuntuk instruksi sistem, bukan role - Petakan format OpenAI
assistantmenjadimodel
Direkomendasikan untuk memvalidasi hasilnya dengan cepat melalui APIYI apiyi.com. Platform ini menangani masalah kompatibilitas berbagai format API secara otomatis, sehingga Anda bisa fokus pada pengembangan logika bisnis.
Bacaan Lanjutan:
- Dokumentasi Resmi Vertex AI: cloud.google.com/vertex-ai/docs
- Referensi Gemini API: ai.google.dev/api
- Panduan Migrasi: cloud.google.com/vertex-ai/generative-ai/docs/migrate/migrate-google-ai
📝 Penulis: Tim Teknis APIYI | Fokus pada integrasi dan optimasi API Model Bahasa Besar AI
🔗 Diskusi Teknis: Kunjungi APIYI apiyi.com untuk mendapatkan lebih banyak sumber daya teknis dan dukungan pengembangan