Gemini 3 Geliştirici Kılavuzu
Gemini 3, gelişmiş mantık yürütme altyapısıyla geliştirilmiş, şimdiye kadarki en akıllı model ailemizdir. Ajan tabanlı iş akışlarında, bağımsız kodlamada ve karmaşık çok formatlı görevlerde uzmanlaşarak her fikri hayata geçirmek için tasarlanmıştır. Bu rehberde, Gemini 3 model ailesinin temel özellikleri ve bu özelliklerden en iyi şekilde nasıl yararlanabileceğiniz açıklanmaktadır.
Modelin gelişmiş akıl yürütme, bağımsız kodlama ve karmaşık çok formatlı görevleri nasıl ele aldığını görmek için Gemini 3 uygulamaları koleksiyonumuzu inceleyin.
Birkaç satır kodla başlayın:
Python
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3.1-pro-preview",
input="Find the race condition in this multi-threaded C++ snippet: [code here]",
)
print(interaction.steps[-1].content[0].text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
async function run() {
const interaction = await client.interactions.create({
model: "gemini-3.1-pro-preview",
input: "Find the race condition in this multi-threaded C++ snippet: [code here]",
});
console.log(interaction.steps.at(-1).content[0].text);
}
run();
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3.1-pro-preview",
"input": "Find the race condition in this multi-threaded C++ snippet: [code here]"
}'
Gemini 3 serisiyle tanışın
Gemini 3.1 Pro, geniş dünya bilgisi ve farklı formatlarda gelişmiş akıl yürütme gerektiren karmaşık görevler için en iyi seçenektir.
Gemini 3 Flash, 3 serisindeki en yeni modelimizdir. Pro düzeyinde zekayı Flash'in hızı ve fiyatıyla sunar.
Nano Banana Pro (Gemini 3 Pro Image olarak da bilinir) en yüksek kaliteli görüntü üretme modelimizdir. Nano Banana 2 (Gemini 3.1 Flash Image olarak da bilinir) ise yüksek hacimli, yüksek verimli ve daha düşük fiyatlı bir alternatiftir.
Gemini 3.1 Flash-Lite, maliyet verimliliği ve yüksek hacimli görevler için tasarlanmış, en çok kullanılan modelimizdir.
Tüm Gemini 3 modelleri şu anda önizleme sürümündedir.
| Model Kimliği | Bağlam penceresi (İçinde / Dışında) | Son Güncel Bilgi Tarihi | Fiyatlandırma (Giriş / Çıkış)* |
|---|---|---|---|
| gemini-3.1-flash-lite-preview | 1M / 64k | Ocak 2025 | 0,25 ABD doları (metin, resim, video), 0,50 ABD doları (ses) / 1,50 ABD doları |
| gemini-3.1-flash-image-preview | 128k / 32k | Ocak 2025 | 0,25 ABD doları (Metin Girişi) / 0,067 ABD doları (Resim Çıkışı)** |
| gemini-3.1-pro-preview | 1M / 64k | Ocak 2025 | 2 ABD doları / 12 ABD doları (<200 bin parça) 4 ABD doları / 18 ABD doları (>200 bin parça) |
| gemini-3-flash-preview | 1M / 64k | Ocak 2025 | 0,50 ABD doları / 3 ABD doları |
| gemini-3-pro-image-preview | 65 bin / 32 bin | Ocak 2025 | 2 ABD doları (Metin Girişi) / 0,134 ABD doları (Resim Çıkışı)** |
* Aksi belirtilmedikçe fiyatlandırma 1 milyon jeton içindir. ** Görüntü fiyatlandırması çözünürlüğe göre değişir. Ayrıntılar için fiyatlandırma sayfasına göz atın.
Ayrıntılı sınırlar, fiyatlandırma ve ek bilgiler için modeller sayfasına bakın.
Gemini 3'teki yeni API özellikleri
Gemini 3, geliştiricilerin gecikme, maliyet ve çok formatlı doğruluk üzerinde daha fazla kontrol sahibi olmasını sağlamak için tasarlanmış yeni parametreler sunar.
Düşünme düzeyi
Gemini 3 serisi modeller, istemleri değerlendirmek için varsayılan olarak dinamik düşünme özelliğini kullanır. Yanıt oluşturmadan önce modelin dahili muhakeme sürecinin maksimum derinliğini kontrol eden thinking_level parametresini kullanabilirsiniz. Gemini 3, bu seviyeleri katı jeton garantileri yerine düşünme için göreceli izinler olarak değerlendirir.
thinking_level belirtilmezse Gemini 3 varsayılan olarak high değerini kullanır. Karmaşık akıl yürütme gerekmeyen durumlarda daha hızlı ve daha düşük gecikmeli yanıtlar için modelin düşünce düzeyini low ile sınırlayabilirsiniz.
| Düşünme Düzeyi | Gemini 3.1 Pro | Gemini 3.1 Flash-Lite | Gemini 3 Flash | Açıklama |
|---|---|---|---|---|
minimal |
Desteklenmiyor | Destekleniyor (Varsayılan) | Destekleniyor | Çoğu sorgu için "düşünme" ayarıyla eşleşir. Model, karmaşık kodlama görevleri için çok az düşünebilir. Sohbet veya yüksek gönderim hacmine sahip uygulamalarda gecikmeyi en aza indirir. minimal, düşünme özelliğinin kapalı olduğunu garanti etmez. |
low |
Destekleniyor | Destekleniyor | Destekleniyor | Gecikmeyi ve maliyeti en aza indirir. Basit talimatları uygulamak, sohbet etmek veya yüksek işleme hızlı uygulamalar için en iyisidir. |
medium |
Destekleniyor | Destekleniyor | Destekleniyor | Çoğu görev için dengeli düşünme |
high |
Destekleniyor (Varsayılan, Dinamik) | Desteklenir (Dinamik) | Destekleniyor (Varsayılan, Dinamik) | Akıl yürütme derinliğini en üst düzeye çıkarır. Modelin ilk (düşünme içermeyen) çıkış jetonuna ulaşması önemli ölçüde daha uzun sürebilir ancak çıkış daha dikkatli bir şekilde gerekçelendirilir. |
Python
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3.1-pro-preview",
input="How does AI work?",
generation_config={"thinking_level": "low"},
)
print(interaction.steps[-1].content[0].text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
model: "gemini-3.1-pro-preview",
input: "How does AI work?",
generationConfig: {
thinking_level: "low",
},
});
console.log(interaction.steps.at(-1).content[0].text);
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3.1-pro-preview",
"input": "How does AI work?",
"config": {
"thinking_level": "low"
}
}'
Sıcaklık
Tüm Gemini 3 modellerinde, sıcaklık parametresini 1.0 varsayılan değerinde tutmanızı önemle tavsiye ederiz.
Önceki modellerde yaratıcılık ile determinizm arasındaki dengeyi kontrol etmek için genellikle sıcaklık ayarından yararlanılırdı. Ancak Gemini 3'ün akıl yürütme özellikleri varsayılan ayar için optimize edilmiştir. Sıcaklığı değiştirmek (1, 0'ın altına ayarlamak), özellikle karmaşık matematiksel veya muhakeme görevlerinde döngüye girme ya da performansın düşmesi gibi beklenmedik davranışlara yol açabilir.
Düşünce imzaları
Gemini 3 modelleri, API çağrıları arasında akıl yürütme bağlamını korumak için düşünce imzalarını kullanır. Bu imzalar, modelin dahili düşünce sürecinin şifrelenmiş temsilleridir.
- Durum Bilgili Mod (Önerilen): Interactions API'yi durum bilgili modda (
previous_interaction_idsağlanarak) kullanırken sunucu, görüşme geçmişini ve düşünce imzalarını otomatik olarak yönetir. - Durum Bilgisiz Mod: Konuşma geçmişini manuel olarak yönetiyorsanız sonraki isteklerde orijinalliği doğrulamak için düşünce bloklarını imzalarıyla birlikte eklemeniz gerekir.
Ayrıntılı bilgi için Düşünce İmzaları sayfasına bakın.
Görüntü üretme ve düzenleme
gemini-3-pro-image-preview ve gemini-3.1-flash-image-preview için düşünce imzaları, sohbete dayalı düzenleme açısından kritik öneme sahiptir. Modelden bir resmi değiştirmesini istediğinizde, orijinal resmin kompozisyonunu ve mantığını anlamak için önceki dönüşteki signature öğesine dayanır.
- Düzenleme: Yanıtın düşüncelerinden sonraki ilk bölümünde (
textveyainlineData) ve sonraki herinlineDatabölümünde imza bulunur. Hataları önlemek için bu imzaların tümünü döndürmeniz gerekir.
Kod örnekleri
Çok adımlı işlev çağrısı (sıralı)
Kullanıcı, tek bir dönüşte iki ayrı adım (Uçuşu Kontrol Et -> Taksi Rezervasyonu Yap) gerektiren bir soru soruyor.
1. adım: Model, Uçuş Aracı'nı çağırır.
Model, imza döndürüyor <Sig_A>
// Model Response (Turn 1, Step 1) { "id": "interaction-123", "steps": [ { "type": "function_call", "name": "check_flight", "arguments": {"flight": "AA100"}, "signature": "<Sig_A>" // SAVE THIS } ] }
2. adım: Kullanıcı, uçuş sonucu gönderir
Modelin düşünce akışını korumak için <Sig_A> yanıtını göndermemiz gerekir.
// User Request (Turn 1, Step 2) { "model": "gemini-3-flash-preview", "previous_interaction_id": "interaction-123", "input": [ { "type": "function_result", "call_id": "fc_check_flight", "name": "check_flight", "result": [{ "type": "text", "text": "{\"status\": \"delayed\", \"departure_time\": \"12 PM\"}" }] } ] }
3. adım: Model, Taksi Aracı'nı çağırıyor
Model, <Sig_A> kullanarak uçuş gecikmesini hatırlıyor ve şimdi taksi rezervasyonu yapmaya karar veriyor. Yeni bir imza <Sig_B> oluşturur.
// Model Response (Turn 1, Step 3) { "id": "interaction-123", "steps": [ { "type": "function_call", "name": "book_taxi", "arguments": {"time": "10 AM"}, "signature": "<Sig_B>" // SAVE THIS } ] }
4. adım: Kullanıcı, Taksi Sonucu'nu gönderir
Sırayı tamamlamak için <Sig_A> VE <Sig_B> değerlerini içeren zincirin tamamını geri göndermeniz gerekir.
// User Request (Turn 1, Step 4) { "model": "gemini-3-flash-preview", "previous_interaction_id": "interaction-123", "input": [ { "type": "function_result", "call_id": "fc_book_taxi", "name": "book_taxi", "result": [{ "type": "text", "text": "{\"booking_status\": \"success\"}" }] } ] }
Paralel İşlev Çağırma
Kullanıcı, "Paris ve Londra'daki hava durumunu kontrol et" diye soruyor. Model, tek bir yanıtta iki işlev çağrısı döndürüyor.
// Model Response { "id": "interaction-456", "steps": [ { "type": "function_call", "name": "check_weather", "arguments": { "city": "Paris" }, "signature": "<Signature_A>" // INCLUDED on First FC }, { "type": "function_call", "name": "check_weather", "arguments": { "city": "London" } } ] } // User Request (Sending Parallel Results) { "model": "gemini-3-flash-preview", "previous_interaction_id": "interaction-456", "input": [ { "type": "function_result", "call_id": "fc_paris", "name": "check_weather", "result": [{ "type": "text", "text": "15C" }] }, { "type": "function_result", "call_id": "fc_london", "name": "check_weather", "result": [{ "type": "text", "text": "12C" }] } ] }
Diğer modellerden taşıma
Başka bir modelden (ör. Gemini 2.5) bir görüşme izi aktarıyorsanız veya Gemini 3 tarafından oluşturulmamış özel bir işlev çağrısı ekliyorsanız geçerli bir imzanız olmaz.
Bu belirli senaryolarda katı doğrulamayı atlamak için alanı şu belirli sahte dizeyle doldurun: "signature": "context_engineering_is_the_way
to_go"
Araçlarla yapılandırılmış çıkışlar
Gemini 3 modelleri, Yapılandırılmış Çıkışlar'ı Google Arama ile Temellendirme, URL Bağlamı, Kod Yürütme ve İşlev Çağırma gibi yerleşik araçlarla birleştirmenize olanak tanır.
Python
from google import genai
from pydantic import BaseModel, Field
from typing import List
class MatchResult(BaseModel):
winner: str = Field(description="The name of the winner.")
final_match_score: str = Field(description="The final match score.")
scorers: List[str] = Field(description="The name of the scorer.")
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3.1-pro-preview",
input="Search for all details for the latest Euro.",
tools=[
{"type": "google_search"},
{"type": "url_context"}
],
response_format={
"type": "text",
"mime_type": "application/json",
"schema": MatchResult.model_json_schema()
},
)
result = MatchResult.model_validate_json(interaction.steps[-1].content[0].text)
print(result)
JavaScript
import { GoogleGenAI } from "@google/genai";
import * as z from "zod";
const matchJsonSchema = {
type: "object",
properties: {
winner: { type: "string", description: "The name of the winner." },
final_match_score: { type: "string", description: "The final score." },
scorers: {
type: "array",
items: { type: "string" },
description: "The name of the scorer."
}
},
required: ["winner", "final_match_score", "scorers"]
};
const matchSchema = z.fromJSONSchema(matchJsonSchema);
const client = new GoogleGenAI({});
async function run() {
const interaction = await client.interactions.create({
model: "gemini-3.1-pro-preview",
input: "Search for all details for the latest Euro.",
tools: [
{ type: "google_search" },
{ type: "url_context" }
],
response_format: {
type: "text",
mime_type: "application/json",
schema: matchJsonSchema
},
});
const match = matchSchema.parse(JSON.parse(interaction.steps.at(-1).content[0].text));
console.log(match);
}
run();
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3.1-pro-preview",
"input": "Search for all details for the latest Euro.",
"tools": [
{"type": "google_search"},
{"type": "url_context"}
],
"response_format": {
"type": "text",
"mime_type": "application/json",
"schema": {
"type": "object",
"properties": {
"winner": {"type": "string", "description": "The name of the winner."},
"final_match_score": {"type": "string", "description": "The final score."},
"scorers": {
"type": "array",
"items": {"type": "string"},
"description": "The name of the scorer."
}
},
"required": ["winner", "final_match_score", "scorers"]
}
}
}'
Görüntü üretme
Gemini 3.1 Flash Image ve Gemini 3 Pro Image, metin istemlerinden görseller oluşturup düzenlemenize olanak tanır. Bir istemi "düşünmek" için akıl yürütme özelliğini kullanır ve yüksek kaliteli görüntüler oluşturmadan önce Google Arama'yı temel alarak hava durumu tahminleri veya borsa grafikleri gibi gerçek zamanlı verileri alabilir.
Yeni ve iyileştirilmiş özellikler:
- 4K ve metin oluşturma: 2K ve 4K çözünürlüklerde net ve okunaklı metinler ve diyagramlar oluşturun.
- Temellendirilmiş üretim: Gerçekleri doğrulamak ve gerçek dünya bilgilerine dayalı görüntüler oluşturmak için
google_searcharacını kullanın. Google Görsel Arama ile temellendirme, Gemini 3.1 Flash Image için kullanılabilir. - Sohbete dayalı düzenleme: Değişiklikleri (ör. "Arka planı gün batımı yap") isteyerek çok turlu görüntü düzenleme. Bu iş akışında, dönüşler arasındaki görsel bağlamı korumak için Thought Signatures kullanılır.
En-boy oranları, düzenleme iş akışları ve yapılandırma seçenekleriyle ilgili tüm ayrıntılar için Görüntü Üretme Kılavuzu'na bakın.
Python
from google import genai
import base64
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3-pro-image-preview",
input="Generate an infographic of the current weather in Tokyo.",
tools=[{"type": "google_search"}],
response_format={
"type": "image",
"aspect_ratio": "16:9",
"image_size": "4K"
}
)
from PIL import Image
import io
image_blocks = [content_block for content_block in interaction.steps[-1].content if content_block.type == "image"]
if image_blocks:
image_data = base64.b64decode(image_blocks[0].data)
image = Image.open(io.BytesIO(image_data))
image.save('weather_tokyo.png')
image.show()
JavaScript
import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";
const client = new GoogleGenAI({});
async function run() {
const interaction = await client.interactions.create({
model: "gemini-3-pro-image-preview",
input: "Generate a visualization of the current weather in Tokyo.",
tools: [{ googleSearch: {} }],
responseFormat: {
type: "image",
aspectRatio: "16:9",
imageSize: "4K"
}
});
for (const contentBlock of interaction.steps.at(-1).content) {
if (contentBlock.type === "image") {
const buffer = Buffer.from(contentBlock.data, "base64");
fs.writeFileSync("weather_tokyo.png", buffer);
}
}
}
run();
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3-pro-image-preview",
"input": "Generate a visualization of the current weather in Tokyo.",
"tools": [{"type": "google_search"}],
"response_format": {
"type": "image",
"aspect_ratio": "16:9",
"image_size": "4K"
}
}'
Örnek Yanıt

Görüntülerle kod yürütme
Gemini 3 Flash, görme eylemini yalnızca statik bir bakış olarak değil, aktif bir araştırma olarak ele alabilir. Model, akıl yürütmeyi kod yürütmeyle birleştirerek bir plan oluşturur. Ardından, cevaplarını görsel olarak temellendirmek için görüntüleri adım adım yakınlaştırmak, kırpmak, açıklama eklemek veya başka bir şekilde değiştirmek üzere Python kodu yazar ve yürütür.
Kullanım alanları:
- Yakınlaştırma ve inceleme: Model, ayrıntıların çok küçük olduğunu (ör. uzaktaki bir ölçüm cihazını veya seri numarasını okuma) algıladığında alanı kırpıp daha yüksek çözünürlükte yeniden incelemek için kodu otomatik olarak yazar.
- Görsel matematik ve grafik oluşturma: Model, kod kullanarak çok adımlı hesaplamalar yapabilir (ör. bir makbuzdaki satır öğelerini toplama veya çıkarılan verilerden Matplotlib grafiği oluşturma).
- Görüntü notu: Model, "Bu öğe nereye yerleştirilmeli?" gibi konumsal soruları yanıtlamak için doğrudan görüntülere oklar, sınırlayıcı kutular veya başka notlar çizebilir.
Görsel düşünmeyi etkinleştirmek için Kod Yürütme'yi araç olarak yapılandırın. Model, gerektiğinde görselleri değiştirmek için otomatik olarak kod kullanır.
Python
from google import genai
from google.genai import types
import requests
from PIL import Image
import io
import base64
image_path = "https://goo.gle/instrument-img"
image_bytes = requests.get(image_path).content
image = types.Part.from_bytes(data=image_bytes, mime_type="image/jpeg")
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3-flash-preview",
input=[
image,
"Zoom into the expression pedals and tell me how many pedals are there?"
],
tools=[{"code_execution": {}}],
)
from IPython.display import display
from PIL import Image
import io
for step in interaction.steps:
if step.type == "model_output":
for content_block in step.content:
if content_block.type == "text":
print(content_block.text)
elif content_block.type == "image":
display(Image.open(io.BytesIO(base64.b64decode(content_block.data))))
elif step.type == "code_execution_call":
print(step.code)
elif step.type == "code_execution_result":
print(step.output)
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
async function main() {
const imageUrl = "https://goo.gle/instrument-img";
const response = await fetch(imageUrl);
const imageArrayBuffer = await response.arrayBuffer();
const base64ImageData = Buffer.from(imageArrayBuffer).toString("base64");
const interaction = await client.interactions.create({
model: "gemini-3-flash-preview",
input: [
{
inlineData: {
mime_type: "image/jpeg",
data: base64ImageData,
},
},
{
text: "Zoom into the expression pedals and tell me how many pedals are there?",
},
],
tools: [{ codeExecution: {} }],
});
for (const step of interaction.steps) {
if (step.type === "model_output") {
for (const contentBlock of step.content) {
if (contentBlock.type === "text") {
console.log("Text:", contentBlock.text);
}
}
} else if (step.type === "code_execution_call") {
console.log("Code:", step.code);
} else if (step.type === "code_execution_result") {
console.log("Output:", step.output);
}
}
}
main();
REST
IMG_URL="https://goo.gle/instrument-img"
MODEL="gemini-3-flash-preview"
MIME_TYPE=$(curl -sIL "$IMG_URL" | grep -i '^content-type:' | awk -F ': ' '{print $2}' | sed 's/\r$//' | head -n 1)
if [[ -z "$MIME_TYPE" || ! "$MIME_TYPE" == image/* ]]; then
MIME_TYPE="image/jpeg"
fi
if [[ "$(uname)" == "Darwin" ]]; then
IMAGE_B64=$(curl -sL "$IMG_URL" | base64 -b 0)
elif [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
IMAGE_B64=$(curl -sL "$IMG_URL" | base64)
else
IMAGE_B64=$(curl -sL "$IMG_URL" | base64 -w0)
fi
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "'$MODEL'",
"input": [{
"parts":[
{
"inline_data": {
"mime_type":"'"$MIME_TYPE"'",
"data": "'"$IMAGE_B64"'"
}
},
{"text": "Zoom into the expression pedals and tell me how many pedals are there?"}
]
}],
"tools": [{"code_execution": {}}]
}'
Resimlerle kod yürütme hakkında daha fazla bilgi için Kod Yürütme başlıklı makaleyi inceleyin.
Çok formatlı işlev yanıtları
Çok formatlı işlev çağırma, kullanıcıların çok formatlı nesneler içeren işlev yanıtları almasına olanak tanıyarak modelin işlev çağırma özelliklerinin daha iyi kullanılmasını sağlar. Standart işlev çağrısı yalnızca metin tabanlı işlev yanıtlarını destekler:
Python
from google import genai
import requests
import base64
client = genai.Client()
# 1. Define the tool
get_image_tool = {
"type": "function",
"name": "get_image",
"description": "Retrieves the image file reference for a specific order item.",
"parameters": {
"type": "object",
"properties": {
"item_name": {
"type": "string",
"description": "The name or description of the item ordered (e.g., 'instrument')."
}
},
"required": ["item_name"],
},
}
# 2. Send the request with tools
interaction_1 = client.interactions.create(
model="gemini-3-flash-preview",
input="Show me the instrument I ordered last month.",
tools=[get_image_tool],
)
# 3. Find the function call step
fc_step = next(s for s in interaction_1.steps if s.type == "function_call")
print(f"Tool Call: {fc_step.name}({fc_step.arguments})")
# Execute tool (fetch image)
image_path = "https://goo.gle/instrument-img"
image_bytes = requests.get(image_path).content
image_b64 = base64.b64encode(image_bytes).decode("utf-8")
# 4. Send multimodal function result back
interaction_2 = client.interactions.create(
model="gemini-3-flash-preview",
previous_interaction_id=interaction_1.id,
input=[{
"type": "function_result",
"name": fc_step.name,
"call_id": fc_step.id,
"result": [
{"type": "text", "text": "instrument.jpg"},
{
"type": "image",
"mime_type": "image/jpeg",
"data": image_b64,
}
]
}],
tools=[get_image_tool]
)
print(f"\nFinal model response: {interaction_2.steps[-1].content[0].text}")
JavaScript
import { GoogleGenAI } from '@google/genai';
const client = new GoogleGenAI({});
// 1. Define the tool
const getImageTool = {
type: 'function',
name: 'get_image',
description: 'Retrieves the image file reference for a specific order item.',
parameters: {
type: 'object',
properties: {
item_name: {
type: 'string',
description: "The name or description of the item ordered (e.g., 'instrument').",
},
},
required: ['item_name'],
},
};
// 2. Send the request with tools
const interaction1 = await client.interactions.create({
model: 'gemini-3-flash-preview',
input: 'Use the get_image tool to show me the instrument I ordered last month.',
tools: [getImageTool],
});
// 3. Find the function call step
const fcStep = interaction1.steps.find(s => s.type === 'function_call');
console.log(`Tool Call: ${fcStep.name}(${JSON.stringify(fcStep.arguments)})`);
// Execute tool (fetch image)
const imageUrl = 'https://goo.gle/instrument-img';
const response = await fetch(imageUrl);
const imageArrayBuffer = await response.arrayBuffer();
const base64ImageData = Buffer.from(imageArrayBuffer).toString('base64');
// 4. Send multimodal function result back
const interaction2 = await client.interactions.create({
model: 'gemini-3-flash-preview',
previous_interaction_id: interaction1.id,
input: [{
type: 'function_result',
name: fcStep.name,
call_id: fcStep.id,
result: [
{ type: 'text', text: 'instrument.jpg' },
{
type: 'image',
mime_type: 'image/jpeg',
data: base64ImageData,
}
]
}],
tools: [getImageTool]
});
console.log(`\nFinal model response: ${interaction2.steps.at(-1).content[0].text}`);
REST
IMG_URL="https://goo.gle/instrument-img"
MIME_TYPE=$(curl -sIL "$IMG_URL" | grep -i '^content-type:' | awk -F ': ' '{print $2}' | sed 's/\r$//' | head -n 1)
if [[ -z "$MIME_TYPE" || ! "$MIME_TYPE" == image/* ]]; then
MIME_TYPE="image/jpeg"
fi
# Check for macOS
if [[ "$(uname)" == "Darwin" ]]; then
IMAGE_B64=$(curl -sL "$IMG_URL" | base64 -b 0)
elif [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
IMAGE_B64=$(curl -sL "$IMG_URL" | base64)
else
IMAGE_B64=$(curl -sL "$IMG_URL" | base64 -w0)
fi
# 1. First interaction (triggers function call)
# curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
# -H "x-goog-api-key: $GEMINI_API_KEY" \
# -H 'Content-Type: application/json' \
# -d '{ "model": "gemini-3-flash-preview", "input": "Show me the instrument I ordered last month.", "tools": [...] }'
# 2. Send multimodal function result back (Replace INTERACTION_ID and CALL_ID)
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3-flash-preview",
"previous_interaction_id": "INTERACTION_ID",
"input": [{
"type": "function_result",
"name": "get_image",
"call_id": "CALL_ID",
"result": [
{ "type": "text", "text": "instrument.jpg" },
{
"type": "image",
"mime_type": "'"$MIME_TYPE"'",
"data": "'"$IMAGE_B64"'"
}
]
}]
}'
Yerleşik araçları ve işlev çağrılarını birleştirme
Gemini 3, aynı API çağrısında yerleşik araçların (ör. Google Arama, URL bağlamı ve daha fazlası) ve özel işlev çağrısı araçlarının kullanılmasına olanak tanıyarak daha karmaşık iş akışlarına imkan verir.
Python
from google import genai
from google.genai import types
client = genai.Client()
getWeather = {
"type": "function",
"name": "getWeather",
"description": "Gets the weather for a requested city.",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "The city and state, e.g. Utqiaġvik, Alaska",
},
},
"required": ["city"],
},
}
interaction = client.interactions.create(
model="gemini-3-flash-preview",
input="What is the northernmost city in the United States? What's the weather like there today?",
tools=[
{"type": "google_search"},
getWeather
],
)
# Find the function call step
fc_step = next((s for s in interaction.steps if s.type == "function_call"), None)
if fc_step:
# Simulate a function result
result = {"response": "Very cold. 22 degrees Fahrenheit."}
final_interaction = client.interactions.create(
model="gemini-3-flash-preview",
input=[
{"type": "function_result", "name": fc_step.name, "call_id": fc_step.id, "result": result}
],
tools=[
{"type": "google_search"},
getWeather
],
previous_interaction_id=interaction.id,
)
print(final_interaction.steps[-1].content[0].text)
JavaScript
import { GoogleGenAI, Type } from '@google/genai';
const client = new GoogleGenAI({});
const getWeatherDeclaration = {
type: 'function',
name: 'getWeather',
description: 'Gets the weather for a requested city.',
parameters: {
type: Type.OBJECT,
properties: {
city: {
type: Type.STRING,
description: 'The city and state, e.g. Utqiaġvik, Alaska',
},
},
required: ['city'],
},
};
const interaction = await client.interactions.create({
model: 'gemini-3-flash-preview',
input: "What is the northernmost city in the United States? What's the weather like there today?",
tools: [
{ type: "google_search" },
getWeatherDeclaration
],
});
// Find the function call step
const fcStep = interaction.steps.find(s => s.type === 'function_call');
if (fcStep) {
const result = { response: "Very cold. 22 degrees Fahrenheit." };
const finalInteraction = await client.interactions.create({
model: 'gemini-3-flash-preview',
input: [
{ type: 'function_result', name: fcStep.name, call_id: fcStep.id, result: result }
],
tools: [
{ type: "google_search" },
getWeatherDeclaration
],
previous_interaction_id: interaction.id,
});
console.log(finalInteraction.steps.at(-1).content[0].text);
}
Gemini 2.5'ten taşıma
Gemini 3, bugüne kadarki en yetenekli model ailemizdir ve Gemini 2.5'e kıyasla kademeli bir iyileşme sunar. Taşıma işlemi yaparken aşağıdakileri göz önünde bulundurun:
- Düşünen: Gemini 2.5'i akıl yürütmeye zorlamak için daha önce karmaşık istem mühendisliği (ör. düşünce zinciri) kullanıyorsanız
thinking_level: "high"ile Gemini 3'ü ve basitleştirilmiş istemleri deneyin. - Sıcaklık ayarları: Mevcut kodunuz sıcaklığı açıkça ayarlıyorsa (özellikle de deterministik çıkışlar için düşük değerlere ayarlıyorsa) olası döngü sorunlarını veya karmaşık görevlerde performans düşüşünü önlemek için bu parametreyi kaldırmanızı ve Gemini 3'ün varsayılan değeri olan 1.0'ı kullanmanızı öneririz.
- PDF ve belge anlama:
Yoğun belge ayrıştırma için belirli bir davranışa güveniyorsanız doğruluğun devamlılığını sağlamak amacıyla yeni
media_resolution_highayarını test edin. - Jeton tüketimi: Gemini 3 varsayılanlarına geçiş, PDF'ler için jeton kullanımını artırabilir ancak videolar için jeton kullanımını azaltabilir. Varsayılan çözünürlüklerin yükselmesi nedeniyle istekler artık bağlam penceresini aşıyorsa medya çözünürlüğünü açıkça düşürmenizi öneririz.
- Görüntü segmentasyonu: Görüntü segmentasyonu özellikleri (nesneler için piksel düzeyinde maskeler döndürme) Gemini 3 Pro veya Gemini 3 Flash'te desteklenmez. Yerleşik görüntü segmentasyonu gerektiren iş yükleri için düşünme özelliği devre dışı bırakılmış Gemini 2.5 Flash veya Gemini Robotics-ER 1.6'yı kullanmaya devam etmenizi öneririz.
- Bilgisayar Kullanımı: Gemini 3 Pro ve Gemini 3 Flash, Bilgisayar Kullanımı'nı destekler. 2.5 serisinden farklı olarak, Bilgisayar Kullanımı aracına erişmek için ayrı bir model kullanmanız gerekmez.
- Araç desteği: Yerleşik araçları işlev çağrısıyla birleştirme artık Gemini 3 modellerinde destekleniyor. Haritalar temellendirmesi de artık Gemini 3 modellerinde destekleniyor.
OpenAI uyumluluğu
OpenAI uyumluluk katmanını kullananlar için standart parametreler (OpenAI'ın reasoning_effort) otomatik olarak Gemini (thinking_level) eşdeğerleriyle eşlenir.
İstem yazmayla ilgili en iyi uygulamalar
Gemini 3, istem oluşturma şeklinizi değiştiren bir akıl yürütme modelidir.
- Net talimatlar: Giriş istemlerinizde kısa ve öz olun. Gemini 3, doğrudan ve net talimatlara en iyi şekilde yanıt verir. Eski modeller için kullanılan ayrıntılı veya aşırı karmaşık istem mühendisliği tekniklerini aşırı analiz edebilir.
- Çıkış ayrıntı düzeyi: Gemini 3, varsayılan olarak daha az ayrıntılıdır ve doğrudan, etkili yanıtlar vermeyi tercih eder. Kullanım alanınız daha sohbet odaklı veya "konuşkan" bir karakter gerektiriyorsa istemde modeli açıkça yönlendirmeniz gerekir (ör. "Bunu arkadaş canlısı ve konuşkan bir asistan gibi açıkla").
- Bağlam yönetimi: Büyük veri kümeleriyle (ör. kitapların tamamı, kod tabanları veya uzun videolar) çalışırken özel talimatlarınızı ya da sorularınızı istemin sonuna, veri bağlamından sonra ekleyin. Sorunuza "Önceki bilgilere göre..." gibi bir ifadeyle başlayarak modelin muhakemesini sağlanan verilere dayandırın.
İstem tasarımı stratejileri hakkında daha fazla bilgiyi istem mühendisliği kılavuzunda bulabilirsiniz.
SSS
Gemini 3'ün son güncel bilgi tarihi nedir? Gemini 3 modellerinin son güncel bilgi tarihi Ocak 2025'tir. Daha güncel bilgiler için Search Grounding aracını kullanın.
Bağlam penceresi sınırları nelerdir? Gemini 3 modelleri, 1 milyon parçalık giriş bağlam penceresini ve 64 bin parçaya kadar çıkışı destekler.
Gemini 3 için ücretsiz katman var mı? Gemini 3 Flash
gemini-3-flash-preview, Gemini API'de ücretsiz katmana sahiptir. Google AI Studio'da Gemini 3.1 Pro ve 3 Flash'i ücretsiz olarak deneyebilirsiniz ancak Gemini API'degemini-3.1-pro-previewiçin ücretsiz katman bulunmamaktadır.Eski
thinking_budgetkodum çalışmaya devam eder mi? Evet,thinking_budgetgeriye dönük uyumluluk için hâlâ desteklenmektedir ancak daha öngörülebilir performans içinthinking_level'ye geçmenizi öneririz. İkisini de aynı istekte kullanmayın.Gemini 3, Batch API'yi destekliyor mu? Evet, Gemini 3, Batch API'yi destekler.
Bağlamı önbelleğe alma destekleniyor mu? Evet, Gemini 3 için Context Caching (Bağlam Önbelleğe Alma) desteklenir.
Gemini 3'te hangi araçlar desteklenir? Gemini 3; Google Arama, Google Haritalar ile Temellendirme, Dosya Arama, Kod Yürütme ve URL Bağlamı'nı destekler. Ayrıca, kendi özel araçlarınız için ve yerleşik araçlarla birlikte standart işlev çağrısını da destekler.
gemini-3.1-pro-preview-customtoolsnedir?gemini-3.1-pro-previewkullanıyorsanız ve model, bash komutlarını tercih ederek özel araçlarınızı yoksayıyorsa bunun yerinegemini-3.1-pro-preview-customtoolsmodelini deneyin. Daha fazla bilgiye buradan ulaşabilirsiniz.