Gemini Deep Research اکنون به صورت پیشنمایش با برنامهریزی مشارکتی، تجسم، پشتیبانی MCP و موارد دیگر در دسترس است.
ارسال بازخورد
شروع کار با API تعاملات
این راهنما به شما کمک میکند تا با استفاده از Interactions API، کار با Gemini API را شروع کنید. شما اولین فراخوانی API خود را در کمتر از یک دقیقه انجام خواهید داد و تولید متن، درک چندوجهی، تولید تصویر، خروجی ساختاریافته، ابزارها، فراخوانی تابع، عاملها و اجرای پسزمینه را بررسی خواهید کرد.
رابط برنامهنویسی کاربردی (API) تعاملات (Interactions) از طریق SDK های پایتون و جاوا اسکریپت و همچنین از طریق REST در دسترس است.
۱. دریافت کلید API برای استفاده از API جمینی، به یک کلید API نیاز دارید. برای شروع، یکی را به صورت رایگان ایجاد کنید:
یک کلید API جمینی ایجاد کنید
سپس آن را به عنوان یک متغیر محیطی تنظیم کنید:
export GEMINI_API_KEY = "YOUR_API_KEY"
۲. SDK را نصب کنید و اولین تماس خود را برقرار کنید SDK را نصب کنید و با یک فراخوانی API، متن تولید کنید.
پایتون SDK را نصب کنید:
pip install -U google-genai
کلاینت را مقداردهی اولیه کنید و یک درخواست ارسال کنید:
from google import genai
client = genai . Client ()
interaction = client . interactions . create (
model = "gemini-3.5-flash" ,
input = "Explain how AI works in a few words"
)
print ( interaction . output_text )
جاوا اسکریپت SDK را نصب کنید:
npm install @google/genai
کلاینت را مقداردهی اولیه کنید و یک درخواست ارسال کنید:
import { GoogleGenAI } from "@google/genai" ;
const ai = new GoogleGenAI ({});
const interaction = await ai . interactions . create ({
model : "gemini-3.5-flash" ,
input : "Explain how AI works in a few words" ,
});
console . log ( interaction . output_text );
استراحت
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-H "Api-Revision: 2026-05-20" \
-d '{
"model": "gemini-3.5-flash",
"input": "Explain how AI works in a few words"
}'
پاسخ:
{
"id" : "v1_ChdpQUFvYXI..." ,
"status" : "completed" ,
"usage" : {
"total_tokens" : 197 ,
"total_input_tokens" : 8 ,
"total_output_tokens" : 12
},
"created" : "2026-06-09T12:01:25Z" ,
"steps" : [
{
"type" : "thought" ,
"signature" : "EvEFCu4FAQw..."
},
{
"type" : "model_output" ,
"content" : [
{
"type" : "text" ,
"text" : "AI learns patterns from data, then uses those patterns to make predictions or decisions on new data."
}
]
}
],
"object" : "interaction" ,
"model" : "gemini-3.5-flash" ,
}
هنگام استفاده از REST، API منبع کامل Interaction را که شامل ابرداده، آمار استفاده و تاریخچه گام به گام نوبت است، برمیگرداند.
در حالی که SDKها پاسخ کامل را نمایش میدهند، ویژگیهای راحتی مانند interaction.output_text و interaction.output_image را نیز برای دسترسی مستقیم به خروجیهای نهایی ارائه میدهند. برای کسب اطلاعات بیشتر در مورد ساختار پاسخ، به مرور کلی Interactions مراجعه کنید یا برای جزئیات بیشتر در مورد دستورالعملهای سیستم و پیکربندی تولید، راهنمای تولید متن را مطالعه کنید.
۳. پاسخ را پخش کنید برای تعاملات روانتر، پاسخ را همزمان با تولید، پخش کنید. هر رویداد step.delta بخشی از متن را ارائه میدهد که میتوانید بلافاصله نمایش دهید.
پایتون
from google import genai
client = genai . Client ()
stream = client . interactions . create (
model = "gemini-3.5-flash" ,
input = "Explain how AI works" ,
stream = True
)
for event in stream :
print ( event )
جاوا اسکریپت
import { GoogleGenAI } from "@google/genai" ;
const ai = new GoogleGenAI ({});
const stream = await ai . interactions . create ({
model : "gemini-3.5-flash" ,
input : "Explain how AI works" ,
stream : true ,
});
for await ( const event of stream ) {
console . log ( event );
}
استراحت
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions?alt=sse" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-H "Api-Revision: 2026-05-20" \
--no-buffer \
-d '{
"model": "gemini-3.5-flash",
"input": "Explain how AI works",
"stream": true
}'
هنگام پخش، سرور با جریانی از رویدادهای ارسالی از سرور (SSE) پاسخ میدهد. هر رویداد شامل یک نوع و دادههای JSON است.
پاسخ:
eve nt : i ntera c t io n .crea te d
da ta : { "interaction" :{ "id" : "v1_Chd..." , "status" : "in_progress" , "model" : "gemini-3.5-flash" }, "event_type" : "interaction.created" }
eve nt : s te p.s tart
da ta : { "index" : 0 , "step" :{ "type" : "thought" }, "event_type" : "step.start" }
eve nt : s te p.del ta
da ta : { "index" : 0 , "delta" :{ "signature" : "EvEFCu4F..." , "type" : "thought_signature" }, "event_type" : "step.delta" }
eve nt : s te p.s t op
da ta : { "index" : 0 , "event_type" : "step.stop" }
eve nt : s te p.s tart
da ta : { "index" : 1 , "step" :{ "type" : "model_output" }, "event_type" : "step.start" }
eve nt : s te p.del ta
da ta : { "index" : 1 , "delta" :{ "text" : "AI " , "type" : "text" }, "event_type" : "step.delta" }
eve nt : s te p.del ta
da ta : { "index" : 1 , "delta" :{ "text" : "works " , "type" : "text" }, "event_type" : "step.delta" }
eve nt : s te p.s t op
da ta : { "index" : 1 , "event_type" : "step.stop" }
eve nt : i ntera c t io n .comple te d
da ta : { "interaction" :{ "id" : "v1_Chd..." , "status" : "completed" , "usage" :{ "total_tokens" : 197 }}, "event_type" : "interaction.completed" }
برای بررسی دقیقتر مدیریت رویدادهای استریمینگ و انواع دلتا، به راهنمای تعاملات استریمینگ مراجعه کنید.
۴. مکالمات چند نوبتی API تعاملات از مکالمات چند نوبتی با دو رویکرد پشتیبانی میکند:
با وضعیت (توصیه میشود) تعاملات را با ارسال previous_interaction_id زنجیرهای کنید. سرور کل تاریخچه مکالمات را برای شما مدیریت میکند.
پایتون
from google import genai
client = genai . Client ()
# Server-side state (recommended)
interaction1 = client . interactions . create (
model = "gemini-3.5-flash" ,
input = "I have 2 dogs in my house." ,
)
print ( "Response 1:" , interaction1 . output_text )
interaction2 = client . interactions . create (
model = "gemini-3.5-flash" ,
input = "How many paws are in my house?" ,
previous_interaction_id = interaction1 . id ,
)
print ( "Response 2:" , interaction2 . output_text )
جاوا اسکریپت
import { GoogleGenAI } from "@google/genai" ;
const ai = new GoogleGenAI ({});
// Server-side state (recommended)
const interaction1 = await ai . interactions . create ({
model : "gemini-3.5-flash" ,
input : "I have 2 dogs in my house." ,
});
console . log ( "Response 1:" , interaction1 . output_text );
const interaction2 = await ai . interactions . create ({
model : "gemini-3.5-flash" ,
input : "How many paws are in my house?" ,
previous_interaction_id : interaction1 . id ,
});
console . log ( "Response 2:" , interaction2 . output_text );
استراحت
RESPONSE1 = $( curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-H "Api-Revision: 2026-05-20" \
-d '{
"model": "gemini-3.5-flash",
"input": "I have 2 dogs in my house."
}' )
INTERACTION_ID = $( echo " $RESPONSE1 " | jq -r '.id' )
echo "Interaction 1 ID: $INTERACTION_ID "
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-H "Api-Revision: 2026-05-20" \
-d '{
"model": "gemini-3.5-flash",
"input": "How many paws are in my house?",
"previous_interaction_id": "' $INTERACTION_ID '"
}'
بیتابعیت مقدار store=false تنظیم کنید و تاریخچه مکالمه را در سمت کلاینت مدیریت کنید. شما باید تمام مراحل تولید شده توسط مدل (از جمله مراحل thought و function_call ) را دقیقاً همانطور که دریافت کردهاید، حفظ و دوباره ارسال کنید.
پایتون
from google import genai
client = genai . Client ()
history = [
{
"type" : "user_input" ,
"content" : [{ "type" : "text" , "text" : "I have 2 dogs in my house." }]
}
]
interaction1 = client . interactions . create (
model = "gemini-3.5-flash" ,
store = False ,
input = history
)
print ( "Response 1:" , interaction1 . steps [ - 1 ] . content [ 0 ] . text )
for step in interaction1 . steps :
history . append ( step . model_dump ())
history . append ({
"type" : "user_input" ,
"content" : [{ "type" : "text" , "text" : "How many paws are in my house?" }]
})
interaction2 = client . interactions . create (
model = "gemini-3.5-flash" ,
store = False ,
input = history
)
print ( "Response 2:" , interaction2 . steps [ - 1 ] . content [ 0 ] . text )
جاوا اسکریپت
import { GoogleGenAI } from "@google/genai" ;
const ai = new GoogleGenAI ({});
const history = [
{
type : "user_input" ,
content : [{ type : "text" , text : "I have 2 dogs in my house." }]
}
];
const interaction1 = await ai . interactions . create ({
model : "gemini-3.5-flash" ,
store : false ,
input : history
});
console . log ( "Response 1:" , interaction1 . steps . at ( - 1 ). content [ 0 ]. text );
history . push (... interaction1 . steps );
history . push ({
type : "user_input" ,
content : [{ type : "text" , text : "How many paws are in my house?" }]
});
const interaction2 = await ai . interactions . create ({
model : "gemini-3.5-flash" ,
store : false ,
input : history
});
console . log ( "Response 2:" , interaction2 . steps . at ( - 1 ). content [ 0 ]. text );
استراحت
# Turn 1: Send with store: false
RESPONSE1 = $( curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-H "Api-Revision: 2026-05-20" \
-d '{
"model": "gemini-3.5-flash",
"store": false,
"input": [
{
"type": "user_input",
"content": "I have 2 dogs in my house."
}
]
}' )
MODEL_STEPS = $( echo " $RESPONSE1 " | jq '.steps' )
# Turn 2: Build full history
HISTORY = $( jq -n \
--argjson first_input '[{"type": "user_input", "content": "I have 2 dogs in my house."}]' \
--argjson model_steps " $MODEL_STEPS " \
--argjson second_input '[{"type": "user_input", "content": "How many paws are in my house?"}]' \
'$first_input + $model_steps + $second_input' )
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-H "Api-Revision: 2026-05-20" \
-d "{
\"model\": \"gemini-3.5-flash\",
\"store\": false,
\"input\": $HISTORY
}"
پاسخ:
{
"id" : "v2_Chd..." ,
"status" : "completed" ,
"usage" : {
"total_tokens" : 240 ,
"total_input_tokens" : 60 ,
"total_output_tokens" : 20
},
"steps" : [
{
"type" : "model_output" ,
"content" : [
{
"type" : "text" ,
"text" : "There are 8 paws in your house. 2 dogs \u00d7 4 paws = 8 paws."
}
]
}
],
"object" : "interaction" ,
"model" : "gemini-3.5-flash"
}
تعامل دوم یک شیء پاسخ کامل را برمیگرداند که فقط شامل مراحل جدید است، اما در متن نوبت قبلی ریشه دارد. برای کسب اطلاعات بیشتر در مورد حفظ وضعیت، به راهنمای مکالمات چند نوبتی مراجعه کنید ، یا حالت بدون وضعیت را برای مدیریت تاریخچه سمت کلاینت بررسی کنید.
۵. درک چندوجهی مدلهای Gemini تصاویر، صدا، ویدئو و اسناد را به صورت بومی درک میکنند. رسانهها را در کنار متن در یک درخواست واحد ارسال میکنند.
پایتون
import base64
from google import genai
client = genai . Client ()
# Load a local image
with open ( "sample.jpg" , "rb" ) as f :
image_bytes = f . read ()
image_b64 = base64 . b64encode ( image_bytes ) . decode ( "utf-8" )
interaction = client . interactions . create (
model = "gemini-3.5-flash" ,
input = [
{ "type" : "text" , "text" : "Compare this local image and this remote audio file." },
{
"type" : "image" ,
"data" : image_b64 ,
"mime_type" : "image/jpeg"
},
{
"type" : "audio" ,
"uri" : "https://storage.googleapis.com/generativeai-downloads/data/sample.mp3" ,
"mime_type" : "audio/mp3"
}
]
)
print ( interaction . output_text )
جاوا اسکریپت
import fs from "fs" ;
import { GoogleGenAI } from "@google/genai" ;
const ai = new GoogleGenAI ({});
// Load a local image
const imageBytes = fs . readFileSync ( "sample.jpg" );
const imageB64 = imageBytes . toString ( "base64" );
const interaction = await ai . interactions . create ({
model : "gemini-3.5-flash" ,
input : [
{ type : "text" , text : "Compare this local image and this remote audio file." },
{
type : "image" ,
data : imageB64 ,
mime_type : "image/jpeg"
},
{
type : "audio" ,
uri : "https://storage.googleapis.com/generativeai-downloads/data/sample.mp3" ,
mime_type : "audio/mp3"
}
],
});
console . log ( interaction . output_text );
استراحت
# Base64-encode local image
BASE64_IMAGE = $( base64 -w 0 sample.jpg)
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" -H "x-goog-api-key: $GEMINI_API_KEY " -H 'Content-Type: application/json' -H "Api-Revision: 2026-05-20" -d '{
"model": "gemini-3.5-flash",
"input": [
{
"type": "text",
"text": "Compare this local image and this remote audio file."
},
{
"type": "image",
"data": "' $BASE64_IMAGE '",
"mime_type": "image/jpeg"
},
{
"type": "audio",
"uri": "https://storage.googleapis.com/generativeai-downloads/data/sample.mp3",
"mime_type": "audio/mp3"
}
]
}'
پاسخ:
{
"id" : "v1_Chd..." ,
"status" : "completed" ,
"usage" : {
"total_tokens" : 300
},
"steps" : [
{
"type" : "model_output" ,
"content" : [
{
"type" : "text" ,
"text" : "The local image displays a pipe organ while the remote audio file is a sample MP3 clip..."
}
]
}
],
"object" : "interaction" ,
"model" : "gemini-3.5-flash" ,
}
نحوهی ارسال تصاویر، ویدیو و فایلهای صوتی را در راهنمای درک تصویر بررسی کنید.
hearing
درک صوتی
فایلهای صوتی را رونویسی، خلاصه یا به سوالات پاسخ دهید.
videocam درک ویدیو
محتوای ویدیو را تجزیه و تحلیل کنید، رویدادها را پیدا کنید و اقدامات را شرح دهید.
description پردازش اسناد
استخراج اطلاعات از فایلهای PDF و سایر فرمتهای سند.
۶. تولید چندوجهی جمینی میتواند تصاویر را به صورت بومی با استفاده از مدلهای تصویر نانو موز تولید کند.
پایتون
import base64
from google import genai
client = genai . Client ()
interaction = client . interactions . create (
model = "gemini-3.1-flash-image" ,
input = "Generate an image of a futuristic city skyline at sunset" ,
)
with open ( "generated_image.png" , "wb" ) as f :
f . write ( base64 . b64decode ( interaction . output_image . data ))
جاوا اسکریپت
import { GoogleGenAI } from "@google/genai" ;
import * as fs from "node:fs" ;
const ai = new GoogleGenAI ({});
const interaction = await ai . interactions . create ({
model : "gemini-3.1-flash-image" ,
input : "Generate an image of a futuristic city skyline at sunset" ,
});
const generatedImage = interaction . output_image ;
if ( generatedImage ) {
const buffer = Buffer . from ( generatedImage . data , "base64" );
fs . writeFileSync ( "generated_image.png" , buffer );
}
استراحت
curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-H "Api-Revision: 2026-05-20" \
-d '{
"model": "gemini-3.1-flash-image",
"input": [
{"type": "text", "text": "Generate an image of a futuristic city skyline at sunset"}
]
}'
پاسخ:
{
"id" : "v1_Chd..." ,
"status" : "completed" ,
"steps" : [
{
"type" : "model_output" ,
"content" : [
{
"type" : "image" ,
"data" : "BASE64_ENCODED_IMAGE" ,
"mime_type" : "image/png"
}
]
}
],
"object" : "interaction" ,
"model" : "gemini-3.1-flash-image" ,
}
وقتی مدل یک تصویر تولید میکند، دادههای تصویر کدگذاری شده با base64 را در یک مرحله درون آرایه steps و همچنین از طریق ویژگی output_image برمیگرداند. برای کسب اطلاعات در مورد نسبتهای ابعاد، ویرایش تصویر و ارجاعات ، راهنمای تولید تصویر را بررسی کنید.
record_voice_over
تولید گفتار
با Gemini 3.1 Flash TTS سخنرانی رسا و چند گوینده تولید کنید.
music_note نسل موسیقی
با Lyria 3 کلیپ و آهنگهای بلند بسازید.
۷. از خروجی ساختاریافته استفاده کنید مدل را طوری پیکربندی کنید که JSON را مطابق با طرحوارهای که تعریف میکنید، برگرداند. خروجی ساختاریافته با Pydantic (پایتون) و Zod (جاوااسکریپت) کار میکند.
پایتون
from google import genai
from pydantic import BaseModel , Field
from typing import List , Optional
class Recipe ( BaseModel ):
recipe_name : str = Field ( description = "Name of the recipe." )
ingredients : List [ str ] = Field ( description = "List of ingredients." )
prep_time_minutes : Optional [ int ] = Field ( description = "Prep time in minutes." )
client = genai . Client ()
interaction = client . interactions . create (
model = "gemini-3.5-flash" ,
input = "Give me a recipe for banana bread" ,
response_format = {
"type" : "text" ,
"mime_type" : "application/json" ,
"schema" : Recipe . model_json_schema ()
},
)
recipe = Recipe . model_validate_json ( interaction . output_text )
print ( recipe )
جاوا اسکریپت
import { GoogleGenAI } from "@google/genai" ;
import * as z from "zod" ;
const ai = new GoogleGenAI ({});
const recipeJsonSchema = {
type : "object" ,
properties : {
recipe_name : { type : "string" , description : "Name of the recipe." },
ingredients : {
type : "array" ,
items : { type : "string" },
description : "List of ingredients."
},
prep_time_minutes : {
type : "integer" ,
description : "Prep time in minutes."
}
},
required : [ "recipe_name" , "ingredients" ]
};
const recipeSchema = z . fromJSONSchema ( recipeJsonSchema );
const interaction = await ai . interactions . create ({
model : "gemini-3.5-flash" ,
input : "Give me a recipe for banana bread" ,
response_format : {
type : "text" ,
mime_type : "application/json" ,
schema : recipeJsonSchema
},
});
const recipe = recipeSchema . parse ( JSON . parse ( interaction . output_text ));
console . log ( recipe );
استراحت
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-H "Api-Revision: 2026-05-20" \
-d '{
"model": "gemini-3.5-flash",
"input": "Give me a recipe for banana bread",
"response_format": {
"type": "text",
"mime_type": "application/json",
"schema": {
"type": "object",
"properties": {
"recipe_name": { "type": "string", "description": "Name of the recipe." },
"ingredients": {
"type": "array",
"items": { "type": "string" },
"description": "List of ingredients."
},
"prep_time_minutes": {
"type": "integer",
"description": "Prep time in minutes."
}
},
"required": ["recipe_name", "ingredients"]
}
}
}'
پاسخ:
{
"id" : "v1_Chd..." ,
"status" : "completed" ,
"steps" : [
{
"type" : "model_output" ,
"content" : [
{
"type" : "text" ,
"text" : "{\n \"recipe_name\": \"Classic Banana Bread\",\n \"ingredients\": [\n \"3 ripe bananas, mashed\",\n \"1/3 cup melted butter\",\n \"3/4 cup sugar\",\n \"1 egg, beaten\",\n \"1 teaspoon vanilla extract\",\n \"1 teaspoon baking soda\",\n \"Pinch of salt\",\n \"1.5 cups all-purpose flour\"\n ],\n \"prep_time_minutes\": 15\n}"
}
]
}
],
"object" : "interaction" ,
"model" : "gemini-3.5-flash" ,
}
بلوک متن خروجی شامل یک رشته JSON معتبر است که دقیقاً با طرحواره درخواستی مطابقت دارد. برای یادگیری نحوه تعریف ساختارهای پیچیدهتر و طرحوارههای بازگشتی، به راهنمای خروجی ساختاریافته مراجعه کنید.
پاسخ مدل را با اطلاعات بلادرنگ با جستجوی گوگل پایهگذاری کنید. API به طور خودکار جستجو میکند، نتایج را پردازش میکند و استنادها را برمیگرداند.
پایتون
from google import genai
client = genai . Client ()
interaction = client . interactions . create (
model = "gemini-3.5-flash" ,
input = "Who won the euro 2024?" ,
tools = [{ "type" : "google_search" }]
)
print ( interaction . output_text )
# Print citations
for step in interaction . steps :
if step . type == "model_output" :
for content_block in step . content :
if content_block . type == "text" and content_block . annotations :
print ( " \n Citations:" )
for annotation in content_block . annotations :
if annotation . type == "url_citation" :
print ( f " [ { annotation . title } ]( { annotation . url } )" )
جاوا اسکریپت
import { GoogleGenAI } from "@google/genai" ;
const ai = new GoogleGenAI ({});
const interaction = await ai . interactions . create ({
model : "gemini-3.5-flash" ,
input : "Who won the euro 2024?" ,
tools : [{ type : "google_search" }]
});
console . log ( interaction . output_text );
// Print citations
for ( const step of interaction . steps ) {
if ( step . type === "model_output" ) {
for ( const contentBlock of step . content ) {
if ( contentBlock . type === "text" && contentBlock . annotations ) {
console . log ( "\nCitations:" );
for ( const annotation of contentBlock . annotations ) {
if ( annotation . type === "url_citation" ) {
console . log ( ` [ ${ annotation . title } ]( ${ annotation . url } )` );
}
}
}
}
}
}
استراحت
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-H "Api-Revision: 2026-05-20" \
-d '{
"model": "gemini-3.5-flash",
"input": "Who won the euro 2024?",
"tools": [{"type": "google_search"}]
}'
پاسخ:
{
"id" : "v1_Chd..." ,
"status" : "completed" ,
"steps" : [
{
"type" : "thought" ,
"signature" : "EvEFCu4F..."
},
{
"type" : "google_search_call" ,
"arguments" : {
"queries" : [ "UEFA Euro 2024 winner" ]
}
},
{
"type" : "google_search_result" ,
"call_id" : "search_001" ,
"result" : [
{
"search_suggestions" : "<!-- HTML and CSS search widget -->"
}
]
},
{
"type" : "model_output" ,
"content" : [
{
"type" : "text" ,
"text" : "Spain won Euro 2024, defeating England 2-1 in the final." ,
"annotations" : [
{
"type" : "url_citation" ,
"url" : "https://www.uefa.com/euro2024" ,
"title" : "uefa.com" ,
"start_index" : 0 ,
"end_index" : 56
}
]
}
]
}
],
"object" : "interaction" ,
"model" : "gemini-3.5-flash" ,
}
مراحل جستجو در تاریخچه تعاملات به تفصیل شرح داده شدهاند و خروجی نهایی شامل استنادهای درونخطی است که به منابع وب اشاره دارند.
شما میتوانید نحوه استخراج استنادهای جستجو را در راهنمای پایه جستجوی گوگل بیاموزید، یا نحوه ترکیب چندین ابزار را در راهنمای ترکیب ابزار ببینید.
code
اجرای کد
کد پایتون را در یک محیط امن و سندباکس شده Borg اجرا کنید.
link زمینه URL
آدرسهای اینترنتی عمومی را مستقیماً به پاسخهای پایه در محتوای صفحه وب منتقل کنید.
search جستجوی فایل
فهرستبندی و جستجو در اسناد و فایلهای رسانهای آپلود شده.
map نقشههای گوگل
پاسخهای زمین در دادههای مکانی و جغرافیایی دنیای واقعی
computer استفاده از کامپیوتر
اتوماسیون مرورگر و تعامل صفحه نمایش.
۹. توابع خودتان را فراخوانی کنید فراخوانی تابع به شما امکان میدهد مدل را به کد خود متصل کنید. شما نام و پارامترهای یک تابع را تعریف میکنید، مدل تصمیم میگیرد چه زمانی آن را فراخوانی کند و آرگومانهای ساختاریافته را برمیگرداند، و شما آن را به صورت محلی اجرا میکنید و نتیجه را برمیگردانید.
با وضعیت (توصیه میشود) پایتون
import json
from google import genai
client = genai . Client ()
weather_tool = {
"type" : "function" ,
"name" : "get_current_temperature" ,
"description" : "Gets the current temperature for a given location." ,
"parameters" : {
"type" : "object" ,
"properties" : {
"location" : {
"type" : "string" ,
"description" : "The city name, e.g. San Francisco" ,
},
},
"required" : [ "location" ],
},
}
available_functions = {
"get_current_temperature" : lambda location : {
"location" : location , "temperature" : "22" , "unit" : "celsius"
},
}
user_input = "What is the temperature in London?"
previous_id = None
while True :
interaction = client . interactions . create (
model = "gemini-3.5-flash" ,
input = user_input ,
tools = [ weather_tool ],
previous_interaction_id = previous_id ,
)
function_results = []
for step in interaction . steps :
if step . type == "function_call" :
result = available_functions [ step . name ]( ** step . arguments )
print ( f "Called { step . name } ( { step . arguments } ) → { result } " )
function_results . append ({
"type" : "function_result" ,
"name" : step . name ,
"call_id" : step . id ,
"result" : [{ "type" : "text" , "text" : json . dumps ( result )}],
})
if not function_results :
break
user_input = function_results
previous_id = interaction . id
print ( interaction . output_text )
جاوا اسکریپت
import { GoogleGenAI } from "@google/genai" ;
const ai = new GoogleGenAI ({});
const weatherTool = {
type : "function" ,
name : "get_current_temperature" ,
description : "Gets the current temperature for a given location." ,
parameters : {
type : "object" ,
properties : {
location : {
type : "string" ,
description : "The city name, e.g. San Francisco" ,
},
},
required : [ "location" ],
},
};
const availableFunctions = {
get_current_temperature : ({ location }) = > ({
location , temperature : "22" , unit : "celsius"
}),
};
let input = "What is the temperature in London?" ;
let previousId = null ;
let interaction ;
while ( true ) {
interaction = await ai . interactions . create ({
model : "gemini-3.5-flash" ,
input ,
tools : [ weatherTool ],
previous_interaction_id : previousId ,
});
const functionResults = [];
for ( const step of interaction . steps ) {
if ( step . type === "function_call" ) {
const result = availableFunctions [ step . name ]( step . arguments );
console . log ( `Called ${ step . name } ( ${ JSON . stringify ( step . arguments ) } ) →` , result );
functionResults . push ({
type : "function_result" ,
name : step . name ,
call_id : step . id ,
result : [{ type : "text" , text : JSON . stringify ( result ) }],
});
}
}
if ( functionResults . length === 0 ) break ;
input = functionResults ;
previousId = interaction . id ;
}
console . log ( interaction . output_text );
استراحت
# Turn 1: Send prompt with function declaration
RESPONSE1 = $( curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-H "Api-Revision: 2026-05-20" \
-d '{
"model": "gemini-3.5-flash",
"input": "What is the temperature in London?",
"tools": [{
"type": "function",
"name": "get_current_temperature",
"description": "Gets the current temperature for a given location.",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city name"}
},
"required": ["location"]
}
}]
}' )
INTERACTION_ID = $( echo " $RESPONSE1 " | jq -r '.id' )
FC_NAME = $( echo " $RESPONSE1 " | jq -r '.steps[] | select(.type=="function_call") | .name' )
FC_ID = $( echo " $RESPONSE1 " | jq -r '.steps[] | select(.type=="function_call") | .id' )
echo "Function: $FC_NAME , Call ID: $FC_ID "
# Turn 2: Send function result back
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-H "Api-Revision: 2026-05-20" \
-d '{
"model": "gemini-3.5-flash",
"previous_interaction_id": "' $INTERACTION_ID '",
"input": [{
"type": "function_result",
"name": "' $FC_NAME '",
"call_id": "' $FC_ID '",
"result": [{"type": "text", "text": "{\"location\": \"London\", \"temperature\": \"22\", \"unit\": \"celsius\"}"}]
}],
"tools": [{
"type": "function",
"name": "get_current_temperature",
"description": "Gets the current temperature for a given location.",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city name"}
},
"required": ["location"]
}
}]
}'
بیتابعیت همچنین میتوانید با مدیریت تاریخچه مکالمه در سمت کلاینت و تنظیم store=false از فراخوانی تابع در حالت بیحالت استفاده کنید. در حالت بیحالت، باید تاریخچه کامل مکالمه را در فیلد input هر درخواست بعدی ارسال کنید. این تاریخچه باید شامل موارد زیر باشد:
مرحله اولیه user_input . تمام مراحل تولید شده توسط مدل در نوبت ۱ (از جمله مراحل thought و function_call ) دقیقاً همانطور که دریافت شدهاند، بازگردانده میشوند. مرحله function_result شامل خروجی تابع اجرا شده شما است. پایتون
import json
from google import genai
client = genai . Client ()
weather_tool = {
"type" : "function" ,
"name" : "get_current_temperature" ,
"description" : "Gets the current temperature for a given location." ,
"parameters" : {
"type" : "object" ,
"properties" : {
"location" : {
"type" : "string" ,
"description" : "The city name, e.g. San Francisco" ,
},
},
"required" : [ "location" ],
},
}
available_functions = {
"get_current_temperature" : lambda location : {
"location" : location , "temperature" : "22" , "unit" : "celsius"
},
}
history = [
{
"type" : "user_input" ,
"content" : [{ "type" : "text" , "text" : "What is the temperature in London?" }]
}
]
while True :
interaction = client . interactions . create (
model = "gemini-3.5-flash" ,
store = False ,
input = history ,
tools = [ weather_tool ],
)
function_results = []
for step in interaction . steps :
history . append ( step . model_dump ())
if step . type == "function_call" :
result = available_functions [ step . name ]( ** step . arguments )
print ( f "Called { step . name } ( { step . arguments } ) → { result } " )
fn_result = {
"type" : "function_result" ,
"name" : step . name ,
"call_id" : step . id ,
"result" : [{ "type" : "text" , "text" : json . dumps ( result )}],
}
function_results . append ( fn_result )
history . append ( fn_result )
if not function_results :
break
print ( interaction . output_text )
جاوا اسکریپت
import { GoogleGenAI } from "@google/genai" ;
const ai = new GoogleGenAI ({});
const weatherTool = {
type : "function" ,
name : "get_current_temperature" ,
description : "Gets the current temperature for a given location." ,
parameters : {
type : "object" ,
properties : {
location : {
type : "string" ,
description : "The city name, e.g. San Francisco" ,
},
},
required : [ "location" ],
},
};
const availableFunctions = {
get_current_temperature : ({ location }) = > ({
location , temperature : "22" , unit : "celsius"
}),
};
const history = [
{
type : "user_input" ,
content : [{ type : "text" , text : "What is the temperature in London?" }]
}
];
let interaction ;
while ( true ) {
interaction = await ai . interactions . create ({
model : "gemini-3.5-flash" ,
store : false ,
input : history ,
tools : [ weatherTool ],
});
const functionResults = [];
for ( const step of interaction . steps ) {
history . push ( step );
if ( step . type === "function_call" ) {
const result = availableFunctions [ step . name ]( step . arguments );
console . log ( `Called ${ step . name } ( ${ JSON . stringify ( step . arguments ) } ) →` , result );
const fnResult = {
type : "function_result" ,
name : step . name ,
call_id : step . id ,
result : [{ type : "text" , text : JSON . stringify ( result ) }],
};
functionResults . push ( fnResult );
history . push ( fnResult );
}
}
if ( functionResults . length === 0 ) break ;
}
console . log ( interaction . output_text );
استراحت
# Turn 1: Send request with tools and store: false
RESPONSE1 = $( curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-H "Api-Revision: 2026-05-20" \
-d '{
"model": "gemini-3.5-flash",
"store": false,
"input": [
{
"type": "user_input",
"content": "What is the temperature in London?"
}
],
"tools": [{
"type": "function",
"name": "get_current_temperature",
"description": "Gets the current temperature for a given location.",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city name"}
},
"required": ["location"]
}
}]
}' )
# Extract model steps (thought, function_call)
MODEL_STEPS = $( echo " $RESPONSE1 " | jq '.steps' )
FC_NAME = $( echo " $RESPONSE1 " | jq -r '.steps[] | select(.type=="function_call") | .name' )
FC_ID = $( echo " $RESPONSE1 " | jq -r '.steps[] | select(.type=="function_call") | .id' )
echo "Function: $FC_NAME , Call ID: $FC_ID "
# Assume local execution returns:
RESULT = "{\"location\": \"London\", \"temperature\": \"22\", \"unit\": \"celsius\"}"
# Reconstruct history for Turn 2
HISTORY = $( jq -n \
--argjson first_input '[{"type": "user_input", "content": "What is the temperature in London?"}]' \
--argjson model_steps " $MODEL_STEPS " \
--arg fc_name " $FC_NAME " \
--arg fc_id " $FC_ID " \
--arg result " $RESULT " \
'$first_input + $model_steps + [{"type": "function_result", "name": $fc_name, "call_id": $fc_id, "result": [{"type": "text", "text": $result}]}]' )
# Turn 2: Send the full history
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-H "Api-Revision: 2026-05-20" \
-d "{
\"model\": \"gemini-3.5-flash\",
\"store\": false,
\"input\": $HISTORY ,
\"tools\": [{
\"type\": \"function\",
\"name\": \"get_current_temperature\",
\"description\": \"Gets the current temperature for a given location.\",
\"parameters\": {
\"type\": \"object\",
\"properties\": {
\"location\": {\"type\": \"string\", \"description\": \"The city name\"}
},
\"required\": [\"location\"]
}
}]
}"
پاسخ:
در طول نوبت اول، مدل پاسخی با وضعیت requires_action و مرحله function_call برمیگرداند:
{
"id" : "v1_Chd..." ,
"status" : "requires_action" ,
"steps" : [
{
"type" : "function_call" ,
"id" : "call_abc123" ,
"name" : "get_current_temperature" ,
"arguments" : {
"location" : "London"
}
}
],
"object" : "interaction" ,
"model" : "gemini-3.5-flash"
}
پس از اجرای تابع به صورت محلی و ارسال نتیجه (مرحله 2)، تعامل نهایی تکمیل شده به صورت زیر برمیگردد:
{
"id" : "v1_Chd..." ,
"status" : "completed" ,
"steps" : [
{
"type" : "function_call" ,
"id" : "call_abc123" ,
"name" : "get_current_temperature" ,
"arguments" : {
"location" : "London"
}
},
{
"type" : "model_output" ,
"content" : [
{
"type" : "text" ,
"text" : "The temperature in London is currently 22°C."
}
]
}
],
"object" : "interaction" ,
"model" : "gemini-3.5-flash" ,
}
برای ویژگیهای پیشرفته مانند فراخوانی موازی توابع یا حالتهای انتخاب تابع، به راهنمای فراخوانی توابع مراجعه کنید.
۱۰. یک عامل مدیریتشده را اجرا کنید عاملهای مدیریتشده در یک محیط سندباکس از راه دور با دسترسی به ابزارهایی مانند اجرای کد و مدیریت فایل اجرا میشوند. به جای یک model یک agent ارسال کنید و environment="remote" را تنظیم کنید.
پایتون
from google import genai
client = genai . Client ()
interaction = client . interactions . create (
agent = "antigravity-preview-05-2026" ,
input = "Write a Python script that generates the first 20 Fibonacci numbers and saves them to fibonacci.txt. Then read the file and print its contents." ,
environment = "remote" ,
)
print ( f "Environment: { interaction . environment_id } " )
print ( interaction . output_text )
جاوا اسکریپت
import { GoogleGenAI } from "@google/genai" ;
const ai = new GoogleGenAI ({});
const interaction = await ai . interactions . create ({
agent : "antigravity-preview-05-2026" ,
input : "Write a Python script that generates the first 20 Fibonacci numbers and saves them to fibonacci.txt. Then read the file and print its contents." ,
environment : "remote" ,
});
console . log ( `Environment: ${ interaction . environment_id } ` );
console . log ( interaction . output_text );
استراحت
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-H "Api-Revision: 2026-05-20" \
-d '{
"agent": "antigravity-preview-05-2026",
"input": "Write a Python script that generates the first 20 Fibonacci numbers and saves them to fibonacci.txt. Then read the file and print its contents.",
"environment": "remote"
}'
همچنین میتوانید عاملهای سفارشی را با دستورالعملها، مهارتها و منابع داده خودتان تعریف و ذخیره کنید.
rocket_launch
شروع سریع
اولین تماس خود با کارشناس را برقرار کنید، پاسخها را پخش کنید و یک کارشناس سفارشی بسازید.
smart_toy عامل ضد جاذبه
قابلیتها، ابزارها، ورودی چندوجهی و قیمتگذاری برای عامل پیشفرض.
experiment عوامل در استودیوی هوش مصنوعی
زمین بازی بصری برای نمونهسازی اولیه عاملها بدون نوشتن کد.
۱۱. اجرای وظایف در پسزمینه برای اجرای وظایف طولانی به صورت غیرهمزمان، background=True را تنظیم کنید. برای نتایج با interactions.get() نظرسنجی کنید.
پایتون
import time
from google import genai
client = genai . Client ()
interaction = client . interactions . create (
model = "gemini-3.5-flash" ,
input = "Write a detailed analysis of the impact of artificial intelligence on modern healthcare." ,
background = True ,
)
print ( f "Started background task: { interaction . id } " )
print ( f "Status: { interaction . status } " )
# Poll for completion
while True :
result = client . interactions . get ( interaction . id )
print ( f "Status: { result . status } " )
if result . status == "completed" :
print ( f " \n Result: \n { result . output_text } " )
break
elif result . status == "failed" :
print ( f "Failed: { result . error } " )
break
time . sleep ( 5 )
جاوا اسکریپت
import { GoogleGenAI } from "@google/genai" ;
const ai = new GoogleGenAI ({});
const interaction = await ai . interactions . create ({
model : "gemini-3.5-flash" ,
input : "Write a detailed analysis of the impact of artificial intelligence on modern healthcare." ,
background : true ,
});
console . log ( `Started background task: ${ interaction . id } ` );
console . log ( `Status: ${ interaction . status } ` );
// Poll for completion
while ( true ) {
const result = await ai . interactions . get ( interaction . id );
console . log ( `Status: ${ result . status } ` );
if ( result . status === "completed" ) {
console . log ( `\nResult:\n ${ result . output_text } ` );
break ;
} else if ( result . status === "failed" ) {
console . log ( `Failed: ${ result . error } ` );
break ;
}
await new Promise ( r = > setTimeout ( r , 5000 ));
}
استراحت
# Start a background task
RESPONSE = $( curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-H "Api-Revision: 2026-05-20" \
-d '{
"model": "gemini-3.5-flash",
"input": "Write a detailed analysis of the impact of artificial intelligence on modern healthcare.",
"background": true
}' )
INTERACTION_ID = $( echo " $RESPONSE " | jq -r '.id' )
echo "Started background task: $INTERACTION_ID "
# Poll for completion
while true; do
RESULT = $( curl -s "https://generativelanguage.googleapis.com/v1beta/interactions/ $INTERACTION_ID " \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H "Api-Revision: 2026-05-20" )
STATUS = $( echo " $RESULT " | jq -r '.status' )
echo "Status: $STATUS "
if [ " $STATUS " = "completed" ] ; then
echo " $RESULT " | jq -r '.steps[] | select(.type=="model_output") | .content[] | select(.type=="text") | .text'
break
elif [ " $STATUS " = "failed" ] ; then
echo "Failed"
break
fi
sleep 5
done
پاسخ:
پاسخ اولیه بلافاصله با وضعیت in_progress برمیگردد:
{
"id" : "v1_abc123" ,
"status" : "in_progress" ,
"object" : "interaction" ,
"model" : "gemini-3.5-flash"
}
پس از اجرای کامل وظیفه پسزمینه، بررسی وضعیت تعامل، نتیجه زیر را برمیگرداند:
{
"id" : "v1_abc123" ,
"status" : "completed" ,
"steps" : [
{
"type" : "model_output" ,
"content" : [
{
"type" : "text" ,
"text" : "Artificial intelligence has transformed modern healthcare in several..."
}
]
}
],
"object" : "interaction" ,
"model" : "gemini-3.5-flash" ,
}
درباره اجرای ناهمگام مدلها و عاملها در راهنمای اجرای پسزمینه بخوانید.
قدم بعدی چیست؟ تولید متن : دستورالعملهای سیستم، پیکربندی تولید و الگوهای متنی پیشرفته. تولید تصویر : نسبتهای ابعاد، ویرایش تصویر و ارجاعات سبک. درک تصویر : طبقهبندی، تشخیص اشیا و پرسش و پاسخ بصری تفکر : از استدلال زنجیرهای برای کارهای پیچیده استفاده کنید. فراخوانی تابع : حالتهای تابع موازی، ترکیبی و محدود. جستجوی گوگل : زمینهسازی، استنادها و پیشنهادهای جستجو. عاملهای مدیریتشده : عاملهای از پیش ساخته شده با قابلیت اجرای کد و مدیریت فایل. تحقیق عمیق : تحقیق چند مرحلهای مستقل با برنامهریزی و ترکیب. خروجی ساختاریافته : طرحوارههای JSON، enumها و تعاریف نوع بازگشتی.
ارسال بازخورد