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ı
higholarak değiştirildimedium. Ayrıntılı bilgi için Yeni varsayılan çaba düzeyi başlıklı makaleyi inceleyin. - Gelişmiş
lowdüşü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:
- Gemini 3.8 Flash: Karmaşık kodlama ve temsilci tabanlı iş akışları için en yeni ve en akıllı Flash modelimiz. Gemini 3.8 Flash kılavuzunu inceleyin.
- Gemini 3.6 Flash:
gemini-3.5-flashmodelinin doğrudan yerine geçen bu model, daha az jeton kullanımı ve daha düşük çıkış fiyatı sunar. Gemini 3.6 Flash ve 3.5 Flash-Lite kılavuzuna göz atın. - Gemini 3.5 Flash-Lite / Gemini 3.1 Flash-Lite: Tam Flash muhakeme derinliği gerektirmeyen, düşük maliyetli ve yüksek hacimli görevler için Gemini 3.5 Flash-Lite veya Gemini 3.1 Flash-Lite'ı kullanın.
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
contentsiç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_budgetyerinethinking_levelkullanın.- İşlev çağrısı yanıtı eşleştirme:
id,nameve 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:
Düşünme düzeyini azaltarak başlayın (
medium,lowveyaminimal): 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.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
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.
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.
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. Aynı istekte ikisini birden kullanmayın.Gemini 3.5 Flash, Batch API'yi destekliyor mu? Evet. Ayrıntılar için Batch API kılavuzuna bakın.
Bağlamı önbelleğe alma özelliği destekleniyor mu? Evet, bağlam önbelleğe alma desteklenir.
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?
- İstem tasarımı stratejileri hakkında daha fazla bilgiyi istem mühendisliği kılavuzunda bulabilirsiniz.
- Gemini 3 Cookbook'u kullanmaya başlayın
- Gemini API optimizasyonu ve çıkarımı hakkında bilgi edinin.