Gemini 3.5 Flash'teki yenilikler

En yeni model Diğer modeller

Gemini 3.5 Flash (gemini-3.5-flash), Gemini 3 serisindeki desteği sonlandırılmış eski nesil bir Flash modelidir. gemini-3.5-flash'a yapılan istekler otomatik olarak Gemini 3.6 Flash'e yönlendirilir. En yeni Flash modelimiz için Gemini 3.8 Flash'e göz atın.

Bu kılavuz, geçmişe yönelik referans olarak saklanır ve temel Gemini 3.x API değişikliklerini ve parametre önerilerini belgeler.

Modele genel bakış

Model Model Kimliği Durum
Gemini 3.5 Flash gemini-3.5-flash Kullanımdan kaldırıldı (otomatik olarak gemini-3.6-flash ürününe yönlendirilir).

Gemini 3.5 Flash, 1 milyon jetonluk bağlam penceresini, 65 bin maksimum çıkış jetonunu, düşünme özelliğini ve Bilgisayar Kullanımı (Önizleme) dahil olmak üzere Gemini 3 Flash ile aynı araç ve platform özelliklerini destekliyordu.

Tüm özellikler için modellere genel bakış başlıklı makaleyi inceleyin.

Hızlı başlangıç kılavuzu

Bu kılavuzdaki tüm örneklerde Etkileşimler API'si kullanılmaktadır. Aynı yapılandırma seçenekleri ve öneriler geçerli olmak üzere GenerateContent API de desteklenir.

Python

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.5-flash",
    input="Explain how parallel agentic execution works in three sentences."
)
print(interaction.output_text)

JavaScript

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

async function main() {
  const interaction = await client.interactions.create({
    model: "gemini-3.5-flash",
    input: "Explain how parallel agentic execution works in three sentences.",
  });
  console.log(interaction.output_text);
}

main();

Java

import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;

Client client = new Client();

CreateModelInteraction params =
    CreateModelInteraction.builder()
        .model(Model.of("gemini-3.5-flash"))
        .input(
            InteractionsInput.of(
                "Explain how parallel agentic execution works in three sentences."))
        .build();

Interaction interaction =
    client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();

System.out.println(interaction.outputText().orElse(""));

Go

package main

import (
    "context"
    "fmt"
    "log"

    "google.golang.org/genai"
    "google.golang.org/genai/interactions/models/interactions"
    "google.golang.org/genai/interactions/models/operations"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
        Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
            Model: interactions.Model("gemini-3.5-flash"),
            Input: interactions.NewInteractionsInput("Explain how parallel agentic execution works in three sentences."),
        }),
    })
    if err != nil {
        log.Fatal(err)
    }
    if res.Interaction.OutputText != nil {
        fmt.Println(*res.Interaction.OutputText)
    }
}

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.5-flash",
    "input": "Explain how parallel agentic execution works in three sentences."
  }'

Yenilikler

  • Sürdürülebilir performans: Ajan tabanlı ve kodlama görevleri için geniş ölçekte optimize edilmiştir.
  • Ajan tabanlı yürütme: Alt ajan dağıtımı, sorun çözme ve büyük ölçekte hızlı ajan tabanlı döngüler.
  • Kodlama: Alternatif yolları test etmek ve çözümleri dinamik olarak keşfetmek için yinelemeli kodlama döngüleri, hızlı keşif ve prototip oluşturma.
  • Uzun vadeli: Çok adımlı iş akışları ve araçların büyük ölçekte kullanımı.
  • Düşünce koruma: Model, çok aşamalı etkileşimlerde ara muhakemeyi otomatik olarak korur. API'de değişiklik yapılması gerekmez.
  • Yeni varsayılan çaba düzeyi: Varsayılan düşünme çabası high olarak değiştirildi medium. Ayrıntılı bilgi için Yeni varsayılan çaba düzeyi başlıklı makaleyi inceleyin.
  • Gelişmiş low düşünme: low, daha az adım gerektiren kod ve ajan tabanlı görevler için önemli ölçüde iyileştirildi. Daha düşük gecikme süresi ve maliyetle yüksek kalite sunuyor.

Doğru Flash modelini seçme

gemini-3.5-flash desteği sonlandırıldığından ve otomatik olarak gemini-3.6-flash'ye yönlendirildiğinden aşağıdaki etkin modellerden birine geçmenizi öneririz:

Davranış değişiklikleri

Yeni varsayılan çaba düzeyi: medium

Gemini 3 Flash önizlemesinde high olan varsayılan düşünme çabası artık medium olarak değiştirildi. medium daha hızlı ve daha uygun maliyetli olmasının yanı sıra çok çeşitli görevlerde çok iyi sonuçlar veriyor. Karmaşık sorunlarda high, modeli daha derinlemesine düşünmeye teşvik eder.

Çaba düzeyi Ne zaman kullanılır?
minimal Yanıt hızı için optimize edilmiştir. Sohbet benzeri kullanım alanları, hızlı ve doğru yanıtlar, daha basit araç çağrıları.
low Daha düşük gecikme süresi ve daha az adım gerektiren kodlama ve ajan görevleri. Biraz düşünme gerektiren analiz ve yazma görevleri için de uygundur.
medium (varsayılan) Çoğu görev için en iyi kalite. Karmaşık kod ve ajan tabanlı kullanım alanları için önerilir.
high Modelin düşünme ve araç kullanma yeteneğini en üst düzeye çıkarır. Karmaşık akıl yürütme, zor matematik işlemleri ve en zor kod veya aracı görevleri için idealdir. Daha uzun düşüncelere ve işlev çağrılarına olanak tanır.

Varsayılanı geçersiz kılmak için yapılandırmanızda thinking_level değerini ayarlayın:

Python

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.5-flash",
    input="Prove that the square root of 2 is irrational.",
    generation_config={"thinking_level": "high"},
)
print(interaction.output_text)

JavaScript

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

async function main() {
  const interaction = await client.interactions.create({
    model: "gemini-3.5-flash",
    input: "Prove that the square root of 2 is irrational.",
    generationConfig: { thinkingLevel: "high" },
  });
  console.log(interaction.output_text);
}

main();

Java

import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.GenerationConfig;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.ThinkingLevel;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;

Client client = new Client();

CreateModelInteraction params =
    CreateModelInteraction.builder()
        .model(Model.of("gemini-3.5-flash"))
        .input(InteractionsInput.of("Prove that the square root of 2 is irrational."))
        .generationConfig(GenerationConfig.builder().thinkingLevel(ThinkingLevel.HIGH).build())
        .build();

Interaction interaction =
    client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();

System.out.println(interaction.outputText().orElse(""));

Go

package main

import (
    "context"
    "fmt"
    "log"

    "google.golang.org/genai"
    "google.golang.org/genai/interactions/models/interactions"
    "google.golang.org/genai/interactions/models/operations"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
        Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
            Model: interactions.Model("gemini-3.5-flash"),
            Input: interactions.NewInteractionsInput("Prove that the square root of 2 is irrational."),
            GenerationConfig: &interactions.GenerationConfig{
                ThinkingLevel: interactions.ThinkingLevelHigh.ToPointer(),
            },
        }),
    })
    if err != nil {
        log.Fatal(err)
    }
    if res.Interaction.OutputText != nil {
        fmt.Println(*res.Interaction.OutputText)
    }
}

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.5-flash",
    "input": "Prove that the square root of 2 is irrational.",
    "generation_config": {"thinking_level": "high"}
  }'

Aşağıdaki tabloda, her model için hangi düşünce düzeylerinin desteklendiği gösterilmektedir:

Düşünme Seviyesi Gemini 3.5 Flash Gemini 3.1 Pro Gemini 3.1 Flash-Lite Gemini 3 Flash Açıklama
minimal Destekleniyor Desteklenmiyor Destekleniyor (Varsayılan) Destekleniyor Çoğu sorgu için "düşünme yok" ayarıyla eşleşir. minimal, düşünmenin devre dışı olduğunu garanti etmez. Model, karmaşık görevler için çok az gerekçe sunabilir.
low Destekleniyor Destekleniyor Destekleniyor Destekleniyor Gecikmeyi ve maliyeti en aza indirir.
medium Destekleniyor (Varsayılan) Destekleniyor Destekleniyor Destekleniyor Çoğu görev için dengeli düşünme
high Desteklenir (Dinamik) Destekleniyor (Varsayılan, Dinamik) Desteklenir (Dinamik) Destekleniyor (Varsayılan, Dinamik) Akıl yürütme derinliğini en üst düzeye çıkarır.

Düşünce koruma

Model, çok aşamalı etkileşim sohbetlerindeki ara muhakemeyi otomatik olarak korur. Sohbet geçmişinde mevcut olduğunda akıl yürütme bağlamı devam eder. Bu da yinelemeli hata ayıklama ve kod yeniden düzenleme gibi karmaşık çok adımlı görevlerde performansı artırır. API'de değişiklik yapılması gerekmez:

  • Etkileşimler API'si: Düşünceler zaten otomatik olarak korunur. Davranışta değişiklik yok.
  • GenerateContent API: Gemini 3.5 Flash'tan itibaren model, görüşme geçmişinde düşünce imzaları varsa önceki tüm aşamalardaki akıl yürütme bağlamını kullanır. Bunu etkinleştirmek için contents içinde tam ve değiştirilmemiş görüşme geçmişini (düşünce imzaları dahil) iletin. SDK'lar bu işlemi otomatik olarak gerçekleştirir.

Gemini 3.x'teki parametre güncellemeleri ve en iyi uygulamalar

Gemini 3.5 Flash dahil olmak üzere tüm Gemini 3.x modelleri için aşağıdakiler geçerlidir.

  • temperature, top_p, top_k: Varsayılan değerlerin değiştirilmemesini önemle tavsiye ederiz. Gemini 3'ün akıl yürütme özellikleri, varsayılan ayarlar için optimize edilmiştir.
  • thinking_budget yerine thinking_level kullanın.
  • İşlev çağrısı yanıtı eşleştirme: id, name ve yanıt sayısı önceki çağrılarla eşleşmelidir.
  • Çok formatlı işlev yanıtları: Çok formatlı içerik, işlev yanıtının dışında değil içinde yer almalıdır.
  • İşlev yanıtlarındaki satır içi talimatlar: Ayrı parçalar olarak değil, işlev yanıtı metnine eklenir.
  • Gereksiz araç çağrılarını azaltma: Düşünme seviyelerini düşürün veya sistem talimatlarıyla denemeler yaparak bağımsız iş akışlarındaki araç çağrılarını azaltın.

Kodunuzu nasıl güncelleyeceğinizi öğrenmek için aşağıdaki bölümlere bakın.

Örnekleme parametreleri (artık önerilmiyor)

temperature, top_p ve top_k artık tüm Gemini 3.x modelleri için önerilmemektedir. Gemini 3'ün muhakeme özellikleri, varsayılan ayarlar için optimize edilmiştir. Bu parametreleri tüm isteklerden kaldırın.

# ⚠️ Remove these parameters (not recommended)
generation_config = {
    "temperature": 0.7,
    "top_p": 0.9,
    "top_k": 40,
}

Belirleyiciliği sağlamak için belirli kullanım alanınızla ilgili açık kurallar içeren bir sistem talimatı tanımlamanızı öneririz.

thinking_budget (artık önerilmiyor)

Ham sayısal thinking_budget parametresinin tüm Gemini 3.x modellerinde kullanılması artık önerilmiyor. Bunun yerine thinking_level dize sabit listesini kullanın.

# ⚠️ Before (not recommended)
generation_config = {
    "thinking": {"thinking_budget": 7500},
}

# ✅ After
generation_config = {
    "thinking": {"thinking_level": "medium"},
}

Kullanılabilir değerler: minimal, low, medium (varsayılan) ve high.

İşlev çağrısı: Katı yanıt eşleştirme

Etkileşimler API'si, eşleşmeyen işlev yanıtları için zaten hata veriyor. GenerateContent API henüz hata vermiyor ancak eşleşmeyen yanıtlar, modelin çoğu durumda finish_reason: STOP ile boş yanıtlar döndürmesine neden oluyor. Her zaman aşağıdaki kurallara uyun:

Gereksinim Ayrıntılar
id öğesini dahil et Her FunctionResponse, ilgili FunctionCall'den id içermelidir.
name. maç Yanıtın name bölümü, görüşmedeki name ile eşleşmelidir.
Eşleşme sayıları Alınan her FunctionCall için tam olarak bir FunctionResponse döndürün.

Python

# ✅ Include matching call_id and name in the function_result
final_interaction = client.interactions.create(
    model="gemini-3.5-flash",
    previous_interaction_id=interaction.id,
    tools=[my_tool],
    input=[{
        "type": "function_result",
        "name": fc_step.name,
        "call_id": fc_step.id,
        "result": [{"type": "text", "text": json.dumps(result)}],
    }],
)

JavaScript

// ✅ Include matching call_id and name in the function_result
const finalInteraction = await client.interactions.create({
  model: "gemini-3.5-flash",
  previousInteractionId: interaction.id,
  tools: [myTool],
  input: [{
    type: "function_result",
    name: fcStep.name,
    call_id: fcStep.id,
    result: [{ type: "text", text: JSON.stringify(result) }],
  }],
});

Java

import java.util.Arrays;
import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.Function;
import com.google.genai.gaos.models.interactions.FunctionResultStep;
import com.google.genai.gaos.models.interactions.FunctionResultStepResultUnion;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.TextContent;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import java.util.List;

Client client = new Client();

// Assumes interactionId, callId, functionName, myTool, and resultJson from previous step
String interactionId = "interaction-id-123";
String callId = "call-id-123";
String functionName = "get_weather";
Function myTool = Function.builder().name(functionName).build();
String resultJson = "{\"temperature\": \"72F\"}";

// ✅ Include matching callId and name in the FunctionResultStep
FunctionResultStep functionResult =
    FunctionResultStep.builder()
        .name(functionName)
        .callId(callId)
        .result(
            FunctionResultStepResultUnion.of(
                Arrays.asList(TextContent.builder().text(resultJson).build())))
        .build();

CreateModelInteraction params =
    CreateModelInteraction.builder()
        .model(Model.of("gemini-3.5-flash"))
        .previousInteractionId(interactionId)
        .tools(Arrays.asList(myTool))
        .input(InteractionsInput.ofStep(Arrays.asList(functionResult)))
        .build();

Interaction finalInteraction =
    client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();

Go

package main

import (
    "context"
    "log"

    "google.golang.org/genai"
    "google.golang.org/genai/interactions/models/interactions"
    "google.golang.org/genai/interactions/models/operations"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    // Assumes interactionID, callID, functionName, myTool, and resultJSON from previous step
    interactionID := "interaction-id-123"
    callID := "call-id-123"
    functionName := "get_weather"
    myTool := interactions.NewTool(interactions.Function{Name: genai.Ptr(functionName)})
    resultJSON := `{"temperature": "72F"}`

    // ✅ Include matching CallID and Name in the FunctionResultStep
    functionResult := interactions.NewStep(interactions.FunctionResultStep{
        Name:   genai.Ptr(functionName),
        CallID: callID,
        Result: interactions.NewFunctionResultStepResultUnion([]interactions.FunctionResultSubcontent{
            interactions.NewFunctionResultSubcontent(interactions.TextContent{Text: resultJSON}),
        }),
    })

    finalRes, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
        Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
            Model:                 interactions.Model("gemini-3.5-flash"),
            PreviousInteractionID: genai.Ptr(interactionID),
            Tools:                 []interactions.Tool{myTool},
            Input:                 interactions.NewInteractionsInput([]interactions.Step{functionResult}),
        }),
    })
    if err != nil {
        log.Fatal(err)
    }
    _ = finalRes
}

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.5-flash",
    "previous_interaction_id": "<INTERACTION_ID>",
    "tools": [...],
    "input": [{
      "type": "function_result",
      "name": "my_function",
      "call_id": "<CALL_ID>",
      "result": [{"type": "text", "text": "..."}]
    }]
  }'

Çok formatlı işlev yanıtları

Müşterilerin, işlev yanıtı dışında resimler sağladığını sık sık görüyoruz. Bu durum, beklenmedik model davranışlarına (ör. düşünce sızıntısı) ve daha düşük kaliteli çıktılara yol açabilir. Bunun yerine Çok Formatlı İşlev Yanıtları API dokümanlarındaki öneriyi uygulayın ve modele gönderdiğiniz işlev yanıtı bölümlerine çok formatlı içerik ekleyin. Model, daha bilinçli bir yanıt üretmek için bu çok formatlı içeriği bir sonraki adımda işleyebilir.

Python

# ✅ Include multimodal content in the function response
final_interaction = client.interactions.create(
    model="gemini-3.5-flash",
    previous_interaction_id=interaction.id,
    input=[
        {
            "type": "function_result",
            "name": tool_call.name,
            "call_id": tool_call.id,
            "result": [
                {"type": "text", "text": "instrument.jpg"},
                {
                    "type": "image",
                    "mime_type": "image/jpeg",
                    "data": base64_image_data,
                },
            ],
        }
    ],
)

JavaScript

// ✅ Include multimodal content in the function response
const finalInteraction = await client.interactions.create({
  model: "gemini-3.5-flash",
  previousInteractionId: interaction.id,
  input: [{
    type: "function_result",
    name: toolCall.name,
    call_id: toolCall.id,
    result: [
      { type: "text", text: "instrument.jpg" },
      {
        type: "image",
        mime_type: "image/jpeg",
        data: base64ImageData,
      },
    ],
  }],
});

Java

import java.util.Arrays;
import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.FunctionResultStep;
import com.google.genai.gaos.models.interactions.FunctionResultStepResultUnion;
import com.google.genai.gaos.models.interactions.ImageContent;
import com.google.genai.gaos.models.interactions.ImageContentMimeType;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.TextContent;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import java.util.List;

Client client = new Client();

// Assumes interactionId, callId, functionName, and base64ImageData from previous step
String interactionId = "interaction-id-123";
String callId = "call-id-123";
String functionName = "get_instrument_image";
String base64ImageData = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=";

// ✅ Include multimodal content in the function response
FunctionResultStep functionResult =
    FunctionResultStep.builder()
        .name(functionName)
        .callId(callId)
        .result(
            FunctionResultStepResultUnion.of(
                Arrays.asList(
                    TextContent.builder().text("instrument.jpg").build(),
                    ImageContent.builder()
                        .mimeType(ImageContentMimeType.IMAGE_JPEG)
                        .data(base64ImageData)
                        .build())))
        .build();

CreateModelInteraction params =
    CreateModelInteraction.builder()
        .model(Model.of("gemini-3.5-flash"))
        .previousInteractionId(interactionId)
        .input(InteractionsInput.ofStep(Arrays.asList(functionResult)))
        .build();

Interaction finalInteraction =
    client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();

Go

package main

import (
    "context"
    "log"

    "google.golang.org/genai"
    "google.golang.org/genai/interactions/models/interactions"
    "google.golang.org/genai/interactions/models/operations"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    // Assumes interactionID, callID, functionName, and base64ImageData from previous step
    interactionID := "interaction-id-123"
    callID := "call-id-123"
    functionName := "get_instrument_image"
    base64ImageData := "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII="

    // ✅ Include multimodal content in the function response
    functionResult := interactions.NewStep(interactions.FunctionResultStep{
        Name:   genai.Ptr(functionName),
        CallID: callID,
        Result: interactions.NewFunctionResultStepResultUnion([]interactions.FunctionResultSubcontent{
            interactions.NewFunctionResultSubcontent(interactions.TextContent{
                Text: "instrument.jpg",
            }),
            interactions.NewFunctionResultSubcontent(interactions.ImageContent{
                MimeType: interactions.ImageContentMimeType("image/jpeg").ToPointer(),
                Data:     genai.Ptr(base64ImageData),
            }),
        }),
    })

    finalRes, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
        Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
            Model:                 interactions.Model("gemini-3.5-flash"),
            PreviousInteractionID: genai.Ptr(interactionID),
            Input:                 interactions.NewInteractionsInput([]interactions.Step{functionResult}),
        }),
    })
    if err != nil {
        log.Fatal(err)
    }
    _ = finalRes
}

İşlev yanıtlarında satır içi talimatlar

Müşterilerin, işlev yanıtlarıyla birlikte ek talimatlar sağladığını sıklıkla görüyoruz sonraki Parts. Bu durum, modelin beklenmedik davranışlar sergilemesine (ör. düşünce sızıntısı) ve daha düşük kaliteli çıkışlar üretmesine neden olabilir. Bunun yerine, ek talimatları iki yeni satırla ayrılmış şekilde işlev yanıtı metninin sonuna ekleyin.

Python

# ✅ Append inline instructions to the end of the function response separated by two newlines
result_text = f"{json.dumps(result)}\n\n<your inline instructions>"

final_interaction = client.interactions.create(
    model="gemini-3.5-flash",
    previous_interaction_id=interaction.id,
    tools=[my_tool],
    input=[{
        "type": "function_result",
        "name": fc_step.name,
        "call_id": fc_step.id,
        "result": [{"type": "text", "text": result_text}],
    }],
)

JavaScript

// ✅ Append inline instructions to the end of the function response separated by two newlines
const resultText = `${JSON.stringify(result)}\n\n<your inline instructions>`;

const finalInteraction = await client.interactions.create({
  model: "gemini-3.5-flash",
  previousInteractionId: interaction.id,
  tools: [myTool],
  input: [{
    type: "function_result",
    name: fcStep.name,
    call_id: fcStep.id,
    result: [{ type: "text", text: resultText }],
  }],
});

Java

import java.util.Arrays;
import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.Function;
import com.google.genai.gaos.models.interactions.FunctionResultStep;
import com.google.genai.gaos.models.interactions.FunctionResultStepResultUnion;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.TextContent;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import java.util.List;

Client client = new Client();

// Assumes interactionId, callId, functionName, myTool, and resultJson from previous step
String interactionId = "interaction-id-123";
String callId = "call-id-123";
String functionName = "get_weather";
Function myTool = Function.builder().name(functionName).build();
String resultJson = "{\"temperature\": \"72F\"}";

// ✅ Append inline instructions to the end of the function response separated by two newlines
String resultText = resultJson + "\n\n<your inline instructions>";

FunctionResultStep functionResult =
    FunctionResultStep.builder()
        .name(functionName)
        .callId(callId)
        .result(
            FunctionResultStepResultUnion.of(
                Arrays.asList(TextContent.builder().text(resultText).build())))
        .build();

CreateModelInteraction params =
    CreateModelInteraction.builder()
        .model(Model.of("gemini-3.5-flash"))
        .previousInteractionId(interactionId)
        .tools(Arrays.asList(myTool))
        .input(InteractionsInput.ofStep(Arrays.asList(functionResult)))
        .build();

Interaction finalInteraction =
    client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();

Go

package main

import (
    "context"
    "log"

    "google.golang.org/genai"
    "google.golang.org/genai/interactions/models/interactions"
    "google.golang.org/genai/interactions/models/operations"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    // Assumes interactionID, callID, functionName, myTool, and resultJSON from previous step
    interactionID := "interaction-id-123"
    callID := "call-id-123"
    functionName := "get_weather"
    myTool := interactions.NewTool(interactions.Function{Name: genai.Ptr(functionName)})
    resultJSON := `{"temperature": "72F"}`

    // ✅ Append inline instructions to the end of the function response separated by two newlines
    resultText := resultJSON + "\n\n<your inline instructions>"

    functionResult := interactions.NewStep(interactions.FunctionResultStep{
        Name:   genai.Ptr(functionName),
        CallID: callID,
        Result: interactions.NewFunctionResultStepResultUnion([]interactions.FunctionResultSubcontent{
            interactions.NewFunctionResultSubcontent(interactions.TextContent{Text: resultText}),
        }),
    })

    finalRes, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
        Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
            Model:                 interactions.Model("gemini-3.5-flash"),
            PreviousInteractionID: genai.Ptr(interactionID),
            Tools:                 []interactions.Tool{myTool},
            Input:                 interactions.NewInteractionsInput([]interactions.Step{functionResult}),
        }),
    })
    if err != nil {
        log.Fatal(err)
    }
    _ = finalRes
}

Gereksiz araç çağrılarını azaltma

Araç çağrıları aşırı kullanılıyorsa bu çağrıları en aza indirmek için iki teknikten yararlanabilirsiniz:

  1. Düşünme düzeyini azaltarak başlayın (medium, low veya minimal): Daha yüksek düşünme düzeyleri, modelin keşfetmek ve doğrulamak için daha fazla araç kullanmasını teşvik eder. Bu nedenle, düzeyi düşürmek araç çağrılarını azaltabilir.

  2. Sistem talimatı ekleyin: Düşünme düzeyi ayarlandıktan sonra aşırı kullanım devam ederse araç kullanımını kısıtlayan bir istem kullanmayı deneyin. Örneğin:

    You have a limited action budget of <n> tool calls. Use them efficiently.
    

Gemini 3 ailesinin özellikleri

Gemini 3.5 Flash, Bilgisayar Kullanımı da dahil olmak üzere Gemini 3 ailesinin tüm özelliklerini devralır. Gemini 3'te kullanıma sunulan ve devam eden özellikler:

  • Düşünme: Şifrelenmiş nedenlendirme bağlamı, API çağrıları arasında korunur. Interactions API'de otomatik, GenerateContent'te örtülü.
  • Araçlarla yapılandırılmış çıkışlar: JSON modunu yerleşik araçlarla (arama, URL bağlamı, kod yürütme, işlev çağrısı) birleştirin.
  • Çok formatlı işlev yanıtları: İşlev çağrısı sonuçlarında resim, ses ve diğer medya türlerini döndürün.
  • Görüntülerle kod yürütme: Görüntüleri işleyen ve oluşturan kodları yürütün.
  • Birleşik araç kullanımı: Aynı istekte yerleşik araçları ve özel işlev çağrılarını kullanın.
  • Medya çözünürlüğü: Resim, video ve PDF girişleri için jeton dağıtımı üzerinde ayrıntılı kontrol. Gemini 3 modelleri, karma doğruluklu istemler için içerik öğesi başına çözünürlük ayarlarını (low, medium, high, ultra_high) destekler.
  • Düşünce imzaları: Modelin dahili muhakemesinin şifrelenmiş temsilleri. Durum bilgisiz modda çok aşamalı etkileşim işlev çağrısı için gereklidir; Interactions API ve resmi SDK'lar tarafından otomatik olarak yönetilir.

İstem yazmayla ilgili en iyi uygulamalar

Gemini 3.x modelleri, akıl yürütme modelleridir. Bu nedenle istemlerinizi farklı şekilde yazmanız gerekir.

  • Net talimatlar: Kısa ve öz olun. Gemini 3.x, doğrudan ve net talimatlara en iyi şekilde yanıt verir. Eski modeller için tasarlanmış ayrıntılı veya karmaşık istem mühendisliği teknikleri, modelin aşırı analiz yapmasına neden olabilir.
  • Çıkış ayrıntı düzeyi: Gemini 3 ve 3.1 varsayılan olarak daha az ayrıntılıdır ve doğrudan, verimli yanıtları tercih eder. Kullanım alanınızda sohbet tonu gerekiyorsa isteminizde modeli açıkça yönlendirin (ör. "Bunu arkadaş canlısı, 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 sabitleyin.

İstem tasarımı stratejileri hakkında daha fazla bilgiyi istem mühendisliği kılavuzunda bulabilirsiniz.

Sınırlamalar

  • Görüntü segmentasyonu, Gemini 3.x'te desteklenmez. Segmentasyon iş yükleri için düşünme özelliği kapalıyken Gemini 2.5 Flash'i kullanmaya devam edin.

SSS

  1. Gemini 3.5 Flash'ın bilgi kesme tarihi nedir? Gemini 3.5 Flash'ın bilgi kesme tarihi Ocak 2025'tir. Daha güncel bilgiler için Arama Temellendirme aracını kullanın.

  2. Bağlam penceresi sınırları nelerdir? Gemini 3.5 Flash, 1 milyon parçalık giriş bağlam penceresini ve 65 bin parçaya kadar çıkış parçalarını destekler.

  3. Eski thinking_budget kodum çalışmaya devam eder mi? Evet, thinking_budget geriye dönük uyumluluk için hâlâ desteklenmektedir ancak daha öngörülebilir performans için thinking_level'ye geçmenizi öneririz. Aynı istekte ikisini birden kullanmayın.

  4. Gemini 3.5 Flash, Batch API'yi destekliyor mu? Evet. Ayrıntılar için Batch API kılavuzuna bakın.

  5. Bağlamı önbelleğe alma özelliği destekleniyor mu? Evet, bağlam önbelleğe alma desteklenir.

  6. Hangi araçlar desteklenir? Gemini 3.5 Flash; Google Arama, Google Haritalar ile Temellendirme, Dosya Arama, Kod Yürütme, URL Bağlamı ve birleştirilmiş araç kullanımı ile Bilgisayar Kullanımı dahil olmak üzere standart İşlev Çağırma'yı destekler.

Diğer modeller

Sırada ne var?