gemini-3-pro-preview
Gemini 3 Pro Preview ialah model penaakulan multimodal Google untuk teks, imej, audio, video dan PDF, dengan output teks. Peruntukan inputnya yang besar, keupayaan pengekodan dan aliran kerja alat yang disokong sesuai untuk analisis terperinci, perbandingan dokumen dan pelaksanaan tugas berasaskan bukti.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsgemini-3-pro-preview - Ailoot Ultra · Anthropic Messages
POST /v1/messagesgemini-3-pro-preview
Tentang model
Huraian ini merangkumi keupayaan model. Input, output dan pilihan yang tersedia di Ailoot disenaraikan di bawah untuk kaedah yang dipilih.
Gemini 3 Pro Preview ialah varian pratonton Gemini 3 Pro bernama khusus daripada Google untuk penaakulan multimodal dan penjanaan teks. Ia boleh mengendalikan teks, imej, audio, video dan dokumen PDF serta mengembalikan hasil bertulis. Kegunaan yang dimaksudkan merangkumi analisis kompleks, pengekodan lanjutan, pembangunan algoritma dan tugas yang menggabungkan set sumber yang besar dengan soalan khusus.
Struktur model dan input
Gemini 3 Pro ialah model campuran pakar jarang berasaskan transformer dengan sokongan natif untuk input multimodal. Seni binanya menghalakan setiap token melalui subset pakar yang dipilih. Ini ialah perbezaan reka bentuk model, bukannya kawalan pengguna untuk memilih pakar tertentu atau menetapkan konfigurasi penyajian.
Sediakan input berdasarkan keperluan maklumat tugas. Dokumen, tangkapan skrin dan rakaman audio masing-masing boleh membekalkan bukti berbeza. Kenal pasti kandungan setiap aset dan cara aset itu patut menyumbang kepada jawapan. Output kekal berupa teks; memahami bahan visual atau pertuturan tidak menjadikan pratonton ini penjana imej, pertuturan atau video.
Analisis multimodal
Gunakan imej untuk soalan tentang kandungan yang kelihatan, audio untuk maklumat pertuturan atau akustik, dan video untuk urutan yang perubahannya sepanjang masa penting. Sertakan aset sebenar bersama soalan, bukannya hanya menerangkannya daripada ingatan. Apabila membandingkan beberapa aset, labelkannya dengan jelas supaya jawapan boleh merujuk sumber yang betul.
Contohnya, ringkasan arahan analisis produk boleh menggabungkan spesifikasi bertulis, tangkapan skrin antara muka dan demonstrasi yang dirakam. Minta perbandingan yang memisahkan janji spesifikasi daripada perkara yang dapat dilihat atau didengar dalam bahan yang dibekalkan. Takrifkan hasil yang dikehendaki sebagai dapatan, pemerhatian sokongan dan soalan yang belum diselesaikan.
Untuk tugas PDF, berikan dokumen dan kenal pasti bahagian atau dakwaan yang perlu diperiksa. Soalan yang berguna meminta perbandingan, pengekstrakan atau penerangan yang terikat pada sumber, bukannya sekadar meminta ringkasan umum bagi fail besar.
Konteks panjang dan peruntukan output
Spesifikasi tepat pratonton menyenaraikan had input 1,048,576 token dan had output 65,536 token. Pembuat menyatakan tarikh akhir pengetahuan pada Januari 2025; berikan bukti lebih baharu apabila soalan bergantung pada peristiwa atau maklumat selepas itu. Ini ialah peruntukan yang berbeza. Set sumber besar boleh dibaca untuk jawapan terfokus tanpa memerlukan model menghasilkan semula setiap bahagian input.
Susun bahan panjang supaya strukturnya jelas: tajuk dokumen, sempadan bahagian, laluan kod dan soalan yang mesti dijawab oleh output. Letakkan pengecualian dan takrif yang berkaitan berhampiran kandungan yang diperincikannya. Jika tugas memerlukan laporan panjang, nyatakan bahagian laporan dan bukti yang dijangka dalam setiap bahagian.
Tetingkap konteks yang besar tidak menjamin setiap butiran mendapat perhatian sama rata atau setiap kesimpulan betul. Google juga mengenal pasti kemungkinan kemerosotan dalam perbualan berbilang giliran; semak fakta sumber penting dan konteks yang digunakan semula sepanjang perbualan berkembang. Semak jawapan dengan petikan atau aset khusus yang menyokong dakwaan pentingnya.
Pengekodan dan pembangunan algoritma
Kegunaan yang dimaksudkan pengeluar merangkumi pengekodan lanjutan dan kerja algoritma. Bekalkan sumber yang berkaitan, andaian persekitaran, kegagalan yang diperhatikan dan tingkah laku yang dijangka. Untuk tugas algoritma, takrifkan input, output yang dikehendaki serta syarat seperti susunan, pendua atau data tidak sah.
Ringkasan arahan penyahpepijatan yang berguna memasangkan input gagal dan ralat dengan bahagian sumber terkecil yang berkaitan. Minta diagnosis dan perubahan terfokus, kemudian periksa sama ada perubahan yang dicadangkan menangani tingkah laku yang dilaporkan. Kod yang dijana dan dakwaan bahawa kod itu patut berfungsi berbeza daripada pelaksanaan yang sudah dijalankan dan disahkan.
Untuk soalan repositori yang lebih besar, gunakan peruntukan input untuk membekalkan fail yang diperlukan dengan label laluan yang jelas. Nyatakan sama ada artifak yang dikehendaki ialah penerangan, cadangan tampalan atau analisis alternatif supaya hasilnya mempunyai tujuan yang konkrit.
Alat, sumber dan hasil berstruktur
Spesifikasi pengeluar untuk pratonton menyokong panggilan fungsi, pelaksanaan kod, carian fail, pembumian carian dan konteks URL. Ciri ini mempunyai peranan yang berbeza. Panggilan fungsi menerangkan operasi untuk dilaksanakan oleh aplikasi; hasil alat kemudian membekalkan bukti bagi langkah model yang seterusnya. Pelaksanaan kod ialah aliran kerja alat, bukannya jaminan bahawa sebarang kod aplikasi yang dijana sudah diuji.
Pembumian carian dan konteks URL menyediakan aliran kerja berorientasikan sumber, manakala carian fail berfungsi dengan koleksi fail yang disediakan. Kekalkan hasil alat dan perkaitan sumber bersama jawapan supaya kesimpulan boleh diperiksa. Menurut spesifikasinya, varian ini tidak menyokong penggunaan komputer atau pembumian Maps.
Sokongan output berstruktur boleh menyatakan hasil dalam skema yang ditentukan. Nyatakan medan dan maknanya sebelum penjanaan, dan semak kandungan serta formatnya. Objek berstruktur yang sah masih memerlukan semakan fakta dan semakan khusus mengikut tugas.
Penaakulan, penggunaan semula dan sempadan edisi
Pemikiran disokong untuk pratonton ini. Gunakan tugas yang jelas, bukti berkaitan dan kekangan eksplisit untuk kerja yang memerlukan beberapa langkah penaakulan. Hasil patut menerangkan andaian dan kesimpulan yang berguna; penaakulan tersembunyi atau kewujudan mod pemikiran bukan dengan sendirinya pengesahan.
Pengeluar turut menyenaraikan sokongan cache dan kelompok. Ini ialah ciri pemprosesan yang berasingan daripada keupayaan kandungan model, dan kewujudannya tidak membuktikan bahawa permintaan tertentu dicache atau hasil kelompok betul.
Bezakan Gemini 3 Pro Preview daripada Gemini 3.1 Pro Preview, Gemini 3 Pro Image serta varian audio atau Live. Output pratonton ini ialah teks, dan spesifikasinya tidak merangkumi penjanaan imej, penjanaan audio atau operasi Live. Nilai jawapan, kod atau hasil berstruktur yang dikembalikan berdasarkan set sumber yang dibekalkan dan tugas yang dimaksudkan.
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions gemini-3-pro-preview
gemini-3-pro-previewPengenalan
Gemini 3 Pro Preview ialah model penaakulan multimodal Google untuk teks, imej, audio, video dan PDF, dengan output teks. Peruntukan inputnya yang besar, keupayaan pengekodan dan aliran kerja alat yang disokong sesuai untuk analisis terperinci, perbandingan dokumen dan pelaksanaan tugas berasaskan bukti.
- Input yang diterima
- Teks
- Hasil
- Teks
Tersedia di Ailoot · input & kaedah
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Input
text- Output
text- Format output
- json atau SSE
| Medan | Jenis | Keperluan | Nilai & had | Lalai |
|---|---|---|---|---|
Medanmodel | Jenisstring | KeperluanDiperlukan | Nilai & had gemini-3-pro-preview | Lalai— |
Medanmessages | Jenismessage[] | KeperluanDiperlukan | Nilai & had Item minimum: 1 | Lalai— |
Medanmessages[].role | Jenisstring | KeperluanDiperlukan | Nilai & had Bergantung pada model | Lalai— |
Medanmessages[].content | Jenisstring | KeperluanPilihan | Nilai & had Terpakai apabila: Perbualan teks | Lalai— |
Medanstream | Jenisboolean | KeperluanPilihan | Nilai & had | Lalaifalse |
Gabungan bahan input
Teks · Teks UTF8
messages[].content
Parameter kaedah dan kitar hayat
| Parameter | Kontrak |
|---|---|
Parametercontent_type | Kontrakapplication/json |
Parameterrequired | Kontrakmodel, messages |
Parametermaterial_types | Kontraktext |
Parametermessages | Kontraktatasusunan mesej dengan struktur role/content |
Parameterfile_material | Kontrakdokumen UTF-8 sebenar dimasukkan sebagai teks literal; ID fail tidak diandaikan |
Parameteroptional_controls | Kontrakstream |
Parametercontrol_scope | KontrakPerbualan teks; stream ialah nilai boolean dengan false sebagai lalai. |
Parameteroutput_modalities | Kontraktext |
Parameterhosted_operations | Kontrakfalse |
Parametermultimodal_input_binding | Kontraknull |
Alias kaedah: /chat/completions
Kitar hayat: synchronous_or_streamed
Hantar ID model yang tepat bersama messages.
Panjang konteks bukan had output.
Fail teks boleh membekalkan teks literal; input imej/audio/objek fail memerlukan pengikatan tepat.
Pelan harga
Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.
- Mod pantas
- Tidak dinyatakan Apabila mod pantas dipilih
- Mod flex
- Tidak dinyatakan Apabila mod flex dipilih
- Usaha penaakulan maksimum
- Tidak dinyatakan Apabila usaha penaakulan maksimum menggunakan pelarasan default
- Harga cache eksplisit
- Tidak diaktifkan Apabila cache eksplisit diminta
Kadar Ailoot
Harga mengikut konfigurasi
| Konfigurasi | Jadual kadar | Caj |
|---|---|---|
| KonfigurasiKadar asas token | Jadual kadarKadar asas | Caj Input · Token input $0.004 / 1K token Output · Token output $0.024 / 1K token Input · Bacaan cache $0 / 1K token Input · Penulisan cache $0 / 1K token Input · Penulisan cache, 1 jam — / 1K token |
Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →
Contoh permintaan
Ailoot Ultra · OpenAI Chat
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"gemini-3-pro-preview","messages":[{"role":"user","content":"hello"}],"stream":false}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
from openai import OpenAI
import os
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model="gemini-3-pro-preview", messages=[{"role":"user","content":"hello"}], stream=False)
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
save_result(result.to_dict(mode="json"))
Terima dan simpan hasil
Ailoot Ultra · OpenAI Chat
json atau SSE
Simpan semua hasil yang selesai
Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.
Kekalkan setiap pilihan jawapan bersama kandungan, panggilan alat dan penaakulannya. Dalam SSE, gabungkan delta mengikut indeks pilihan jawapan/alat dan kekalkan sebab penamatan akhir serta data penggunaan.
Jika respons asal perlu disemak
Kekalkan ID permintaan/respons dan pengepala. Tiada URL umum bagi pengambilan tugas teks dibekalkan.
Medan respons
| Medan | Jenis |
|---|---|
Medanchoices[].index | Jenisinteger |
Medanchoices[].message.content | Jenisstring|null |
Medanchoices[].message.tool_calls | Jenistool_call[] |
Medanchoices[].message.reasoning_content | Jenisstring |
Medanchoices[].message.reasoning_details | Jenisobject|array |
Medanchoices[].finish_reason | Jenisstring|null |
Medanusage | Jenisobject |
Ralat dan langkah seterusnya
| Respons | Syarat | Langkah seterusnya |
|---|---|---|
Respons400 · invalid_request_error | SyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sah | Langkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu. |
Alias
Alias model
Ailoot Ultra gemini-3-pro-preview
Alias laluan kaedah
/chat/completions
ID pemanggil berkaitan
Ailoot Ultra · Anthropic Messages POST /v1/messages gemini-3-pro-preview
gemini-3-pro-previewPengenalan
Gemini 3 Pro Preview ialah model penaakulan multimodal Google untuk teks, imej, audio, video dan PDF, dengan output teks. Peruntukan inputnya yang besar, keupayaan pengekodan dan aliran kerja alat yang disokong sesuai untuk analisis terperinci, perbandingan dokumen dan pelaksanaan tugas berasaskan bukti.
- Input yang diterima
- Teks
- Hasil
- json · sse
Tersedia di Ailoot · input & kaedah
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Input
text- Output
json,sse- Format output
- JSON atau SSE
| Medan | Jenis | Keperluan | Nilai & had | Lalai |
|---|---|---|---|---|
Medanmodel | Jenisstring | KeperluanDiperlukan | Nilai & had gemini-3-pro-preview | Lalai— |
Medanmessages | Jenismessage[] | KeperluanDiperlukan | Nilai & had | Lalai— |
Medanmessages[].role | Jenisstring | KeperluanDiperlukan | Nilai & had user, assistant | Lalai— |
Medanmessages[].content | Jenisstring | KeperluanDiperlukan | Nilai & had | Lalai— |
Medanmax_tokens | Jenisinteger | KeperluanDiperlukan | Nilai & had | Lalai— |
Medanstream | Jenisboolean | KeperluanPilihan | Nilai & had | Lalaifalse |
Gabungan bahan input
Teks · Teks UTF-8
rentetan messages[].content
Parameter kaedah dan kitar hayat
| Parameter | Kontrak |
|---|---|
Parametercontent_type | Kontrakapplication/json |
Parameterrequired | Kontrakmodel, messages, max_tokens |
Parameteroptional_controls | Kontrakstream |
Parametermaterial_types | Kontraktext |
Parametertext_file_material | KontrakBaca dokumen UTF-8 sebenar dan letakkan teksnya dalam rentetan input atau kandungan mesej yang ditunjukkan. |
Kitar hayat: synchronous_or_streamed
Pelan harga
Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.
- Mod pantas
- Tidak dinyatakan Apabila mod pantas dipilih
- Mod flex
- Tidak dinyatakan Apabila mod flex dipilih
- Usaha penaakulan maksimum
- Tidak dinyatakan Apabila usaha penaakulan maksimum menggunakan pelarasan default
- Harga cache eksplisit
- Tidak diaktifkan Apabila cache eksplisit diminta
Kadar Ailoot
Harga mengikut konfigurasi
| Konfigurasi | Jadual kadar | Caj |
|---|---|---|
| KonfigurasiKadar asas token | Jadual kadarKadar asas | Caj Input · Token input $0.004 / 1K token Output · Token output $0.024 / 1K token Input · Bacaan cache $0 / 1K token Input · Penulisan cache $0 / 1K token Input · Penulisan cache, 1 jam — / 1K token |
Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →
Contoh permintaan
Ailoot Ultra · Anthropic Messages
{
"model": "gemini-3-pro-preview",
"max_tokens": 128,
"messages": [
{
"role": "user",
"content": "Summarize the incident report."
}
],
"stream": false
}set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'gemini-3-pro-preview', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
-H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'gemini-3-pro-preview', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError
api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
with urlopen(request, timeout=120) as response:
raw = response.read()
Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
Path('result.json').write_bytes(error.read())
Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
Terima dan simpan hasil
Ailoot Ultra · Anthropic Messages
JSON atau SSE
Simpan semua hasil yang selesai
Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.
Kekalkan semua blok kandungan, tandatangan penaakulan dan ID penggunaan alat sebenar. Gabungkan semua delta blok SSE; blok teks pertama bukan keseluruhan output.
Jika respons asal perlu disemak
Kekalkan ID permintaan/respons dan pengepala. Tiada URL umum bagi pengambilan tugas teks dibekalkan.
Medan respons
| Medan | Jenis |
|---|---|
Medanid | Jenisstring |
Medanmodel | Jenisstring |
Medancontent[] | Jenistext|thinking|tool_use|other content block |
Medanstop_reason | Jenisstring|null |
Medanusage | Jenisobject |
Ralat dan langkah seterusnya
| Respons | Syarat | Langkah seterusnya |
|---|---|---|
Respons400 · invalid_request_error | SyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sah | Langkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu. |
Alias
Alias model
Ailoot Ultra gemini-3-pro-preview
Alias laluan kaedah
/chat/completions
ID pemanggil berkaitan
FAQ · gemini-3-pro-preview
- Apakah input dan hasil yang tersedia?
POST /v1/chat/completions·gemini-3-pro-preview:text→textPOST /v1/messages·gemini-3-pro-preview:text→json,sse- Apakah medan yang digunakan oleh permintaan?
POST /v1/chat/completions·gemini-3-pro-preview:model,messages,streamPOST /v1/messages·gemini-3-pro-preview:model,messages,max_tokens,stream- Apakah had yang terpakai?
POST /v1/chat/completions·gemini-3-pro-preview:messages.min_items:1