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 modeline gönderilen 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ş referans için saklanmıştır ve temel Gemini 3.x API değişikliklerini ve parametre önerilerini belgelemektedir.
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 parçalık bağlam penceresini, maksimum 65 bin çıkış parçasını, düşünme özelliğini ve bilgisayar kullanımı (önizleme) dahil olmak üzere Gemini 3 Flash ile aynı araç ve platform özelliklerini destekliyordu.
Tüm teknik özellikler için modellere genel bakış sayfasını inceleyin.
Hızlı başlangıç kılavuzu
Bu kılavuzdaki tüm örneklerde Interactions API kullanılır. GenerateContent API de desteklenir. Aynı yapılandırma seçenekleri ve öneriler geçerlidir.
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: Temsilci 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 geniş ölçekte kullanımı.
- Düşünce koruma: Model, çok aşamalı etkileşimlerde ara akıl yürütme adımlarını 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: Flash'in tam akıl yürütme derinliğini gerektirmeyen düşük maliyetli, 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ı, gerçeklere dayalı hızlı 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 temsilci kullanım alanları için önerilir. |
high |
Modelin düşünme ve araçları kullanma becerisini 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. Kapsamlı düşüncelere ve işlev çağrılarına izin verir. |
Varsayılan ayarı 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 düzeyi | Gemini 3.5 Flash | Gemini 3.1 Pro | Gemini 3.1 Flash-Lite | Gemini 3 Flash | Açıklama |
|---|---|---|---|---|---|
minimal |
Destekleniyor | Desteklenmiyor | Desteklenir (Varsayılan) | Destekleniyor | Çoğu sorgu için "düşünme yok" ayarıyla eşleşir. minimal, düşünme özelliğinin devre dışı bırakılacağını garanti etmez. Model, karmaşık görevler için çok az düzeyde akıl yürütebilir. |
low |
Destekleniyor | Destekleniyor | Destekleniyor | Destekleniyor | Gecikmeyi ve maliyeti en aza indirir. |
medium |
Desteklenir (Varsayılan) | Destekleniyor | Destekleniyor | Destekleniyor | Çoğu görev için dengeli düşünme |
high |
Destekleniyor (Dinamik) | Destekleniyor (Varsayılan, Dinamik) | Destekleniyor (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ğişikliği gerekmez:
- Etkileşimler API'si: Düşünceler zaten otomatik olarak korunur. Davranışta değişiklik olmaz.
- 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
Aşağıdakiler, Gemini 3.5 Flash dahil tüm Gemini 3.x modelleri için geçerlidir.
temperature,top_p,top_k: Varsayılan değerleri değiştirmemenizi önemle tavsiye ederiz. Gemini 3'ün akıl yürütme özellikleri, varsayılan ayarlara göre 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ı azaltın: Temsilci tabanlı iş akışlarında araç çağrılarını azaltmak için daha düşük düşünme seviyeleri kullanın veya sistem talimatlarıyla denemeler yapın.
Kodunuzu nasıl güncelleyeceğinizi öğrenmek için aşağıdaki bölümlere bakın.
Örnekleme parametreleri (artık önerilmez)
temperature, top_p ve top_k artık tüm Gemini 3.x modelleri için önerilmiyor. Gemini 3'ün akıl yürütme özellikleri varsayılan ayarlara göre 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 enum'unu 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ğırma: katı yanıt eşleştirme
Interactions API, eşleşmeyen işlev yanıtlarında 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 öğesinden 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 genellikle işlev yanıtı dışında resimler sağladığını görüyoruz. Bu durum, beklenmedik model davranışlarına (ör. düşünce sızıntısı) yol açabilir ve daha düşük kaliteli çıkışlara neden olabilir. 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, bir sonraki adımda bu çok formatlı içeriği işleyerek daha bilinçli bir yanıt üretebilir.
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ındaki satır içi talimatlar
Müşterilerin genellikle işlev yanıtlarıyla birlikte sonraki Parts olarak ek talimatlar verdiğini görüyoruz. 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 seviyesini azaltarak başlayın (
medium,lowveyaminimal): Daha yüksek düşünme seviyeleri, modeli keşfetmek ve doğrulamak için daha fazla araç kullanmaya teşvik eder. Bu nedenle, seviyeyi 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ş akıl yürütme bağlamı, API çağrıları arasında korunur. Interactions API'de otomatik, GenerateContent'te dolaylıdır.
- 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 yapay görüntüler oluşturan kodları yürütün.
- Birleşik araç kullanımı: Aynı istekte yerleşik araçları ve özel işlev çağrısını kullanın.
- Medya çözünürlüğü:
Resim, video ve PDF girişleri için jeton tahsisi üzerinde ayrıntılı kontrol.
Gemini 3 modelleri, karma çözünürlüklü 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ı işlev çağrısı için gereklidir; Interactions API ve resmi SDK'lar tarafından otomatik olarak yönetilir.
İstem oluşturma 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, kod tabanları veya uzun videolar) çalışırken talimatlarınızı veya 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 bilgi edinmek için istem mühendisliği kılavuzunu inceleyin.
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'in son güncel bilgi tarihi nedir? Gemini 3.5 Flash'in son güncel bilgi 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.000'e kadar çıkış parçası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 bir performans içinthinking_level'e 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 standart İşlev Çağırma'yı destekler. Buna birleştirilmiş araç kullanımı ve Bilgisayar Kullanımı da dahildir.
Diğer modeller
Sırada ne var?
- İstem mühendisliği kılavuzunda istem tasarımı stratejileri hakkında daha fazla bilgi edinebilirsiniz.
- Gemini 3 Cookbook'u kullanmaya başlayın
- Gemini API optimizasyonu ve çıkarımı hakkında bilgi edinin.