API-ja e Ndërveprimeve tani është përgjithësisht e disponueshme. Ne rekomandojmë përdorimin e kësaj API-je për qasje në të gjitha veçoritë dhe modelet më të fundit.
Dërgo komente
Fillimi, Fillimi
Ky udhëzues ju orienton në fillim me Gemini API duke përdorur Interactions API . Do të kryeni thirrjen tuaj të parë të API-t në më pak se një minutë dhe do të eksploroni gjenerimin e tekstit, kuptimin multimodal, gjenerimin e imazheve, prodhimin e strukturuar, mjetet, thirrjen e funksioneve, agjentët dhe ekzekutimin në sfond.
Po përdorni një agjent kodimi? Instaloni aftësinë në mënyrë që agjenti juaj të mbetet i azhurnuar me modelet e Interactions API:
npx skills add google-gemini/gemini-skills --skill gemini-interactions-api API-ja e Ndërveprimeve është e disponueshme përmes SDK-ve të Python dhe JavaScript , si dhe përmes REST.
1. Merrni një çelës API Për të përdorur Gemini API, ju nevojitet një çelës API . Krijoni një falas për të filluar:
Krijo një Çelës API Gemini
Pastaj vendoseni atë si një ndryshore mjedisi:
export GEMINI_API_KEY = "YOUR_API_KEY"
2. Instaloni SDK-në dhe bëni thirrjen tuaj të parë Instaloni SDK-në dhe gjeneroni tekst me një thirrje të vetme API-je.
Python Instaloni SDK-në:
pip install -U google-genai
Inicializoni klientin dhe bëni një kërkesë:
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 )
JavaScript Instaloni SDK-në:
npm install @google/genai
Inicializoni klientin dhe bëni një kërkesë:
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 );
PUSHTIM
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 AI works in a few words"
}'
Përgjigje:
{
"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" ,
}
Kur përdoret REST, API kthen burimin e plotë Interaction që përmban meta të dhëna, statistika përdorimi dhe historikun hap pas hapi të kthesës.
Ndërkohë që SDK-të e ekspozojnë përgjigjen e plotë, ato ofrojnë gjithashtu veti të përshtatshme si interaction.output_text dhe interaction.output_image për të aksesuar drejtpërdrejt rezultatet përfundimtare. Mësoni më shumë rreth strukturës së përgjigjes në përmbledhjen e Ndërveprimeve ose lexoni udhëzuesin e gjenerimit të tekstit për detaje mbi udhëzimet e sistemit dhe konfigurimin e gjenerimit.
3. Transmetoni përgjigjen Për ndërveprime më fluide, transmetoni përgjigjen ndërsa gjenerohet. Çdo ngjarje step.delta ofron një pjesë teksti që mund ta shfaqni menjëherë.
Python
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 )
JavaScript
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 );
}
PUSHTIM
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions?alt=sse" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
--no-buffer \
-d '{
"model": "gemini-3.5-flash",
"input": "Explain how AI works",
"stream": true
}'
Gjatë transmetimit, serveri përgjigjet me një rrjedhë ngjarjesh të dërguara nga serveri (SSE). Çdo ngjarje përfshin një lloj dhe të dhëna JSON.
Përgjigje:
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" }
Për një vështrim të detajuar mbi trajtimin e ngjarjeve të transmetimit dhe llojeve të deltave, shihni udhëzuesin e ndërveprimeve të transmetimit .
4. Biseda me shumë kthesa API-ja e Ndërveprimeve mbështet biseda me shumë kthesa me dy qasje:
I plotë (i rekomanduar) Ndërveprimet zinxhir duke kaluar previous_interaction_id . Serveri menaxhon historikun e plotë të bisedave për ju.
Python
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 )
JavaScript
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 );
PUSHTIM
RESPONSE1 = $( curl -s -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": "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' \
-d '{
"model": "gemini-3.5-flash",
"input": "How many paws are in my house?",
"previous_interaction_id": "' $INTERACTION_ID '"
}'
Pa shtetësi Cakto store=false dhe menaxho historikun e bisedave në anën e klientit. Duhet të ruash dhe ridërgosh të gjithë hapat e gjeneruar nga modeli (duke përfshirë hapat e thought dhe function_call ) pikërisht ashtu siç i ke marrë.
Python
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 )
JavaScript
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 );
PUSHTIM
# 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' \
-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' \
-d "{
\"model\": \"gemini-3.5-flash\",
\"store\": false,
\"input\": $HISTORY
}"
Përgjigje:
{
"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"
}
Ndërveprimi i dytë kthen një objekt të plotë përgjigjeje që përfshin vetëm hapat e rinj, por bazohet në kontekstin e kthesës së mëparshme. Mësoni më shumë rreth ruajtjes së gjendjes në udhëzuesin e bisedave me shumë kthesa ose eksploroni modalitetin pa gjendje për menaxhimin e historikut nga ana e klientit.
5. Kuptimi multimodal Modelet Gemini i kuptojnë imazhet, audion, videon dhe dokumentet në mënyrë native. Kaloni median së bashku me tekstin në një kërkesë të vetme.
Python
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 )
JavaScript
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 );
PUSHTIM
# 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"
}
]
}'
Përgjigje:
{
"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" ,
}
Eksploroni se si të kaloni imazhe, skedarë video dhe audio në udhëzuesin e të kuptuarit të imazheve .
hearing
Kuptimi i audios
Transkripto, përmbledh ose përgjigju pyetjeve rreth skedarëve audio.
videocam Kuptimi i videos
Analizoni përmbajtjen e videos, gjeni ngjarjet dhe përshkruani veprimet.
description Përpunimi i dokumenteve
Nxjerr informacion nga PDF-të dhe formate të tjera dokumentesh.
6. Gjenerimi multimodal Gemini mund të gjenerojë imazhe në mënyrë native duke përdorur modelet e imazhit Nano Banana .
Python
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 ))
JavaScript
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 );
}
PUSHTIM
curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3.1-flash-image",
"input": [
{"type": "text", "text": "Generate an image of a futuristic city skyline at sunset"}
]
}'
Përgjigje:
{
"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" ,
}
Kur modeli gjeneron një imazh, ai kthen të dhënat e imazhit të koduara në base64 në një hap brenda vargut të steps , si dhe nëpërmjet vetisë së lehtësisë output_image . Shikoni udhëzuesin e gjenerimit të imazhit për të mësuar rreth raporteve të aspektit, redaktimit të imazhit dhe referencave.
record_voice_over
Gjenerimi i të folurit
Gjeneroni të folur shprehës me shumë folës me Gemini 3.1 Flash TTS.
music_note Gjenerimi i muzikës
Krijo klipe dhe këngë të plota me Lyria 3.
7. Përdorni rezultate të strukturuara Konfiguroni modelin për të kthyer JSON që përputhet me një skemë që përcaktoni. Dalja e strukturuar funksionon me Pydantic (Python) dhe Zod (JavaScript).
Python
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 )
JavaScript
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 );
PUSHTIM
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": "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"]
}
}
}'
Përgjigje:
{
"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" ,
}
Blloku i tekstit të daljes përmban një varg të vlefshëm JSON që përputhet saktësisht me skemën e kërkuar. Për të mësuar se si të përcaktoni struktura më komplekse dhe skema rekursive, shihni udhëzuesin e daljes së strukturuar .
Bazojeni përgjigjen e modelit në informacion në kohë reale me Google Search. API kërkon automatikisht, përpunon rezultatet dhe kthen citime.
Python
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 } )" )
JavaScript
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 } )` );
}
}
}
}
}
}
PUSHTIM
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": "Who won the euro 2024?",
"tools": [{"type": "google_search"}]
}'
Përgjigje:
{
"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" ,
}
Hapat e kërkimit janë të detajuar brenda historikut të ndërveprimit, dhe rezultati përfundimtar përfshin citime të integruara që tregojnë burime në internet.
Mund të mësoni se si të nxirrni citate kërkimi në udhëzuesin bazë të Kërkimit në Google ose të shihni se si të kombinoni mjete të shumta në udhëzuesin e kombinimit të mjeteve .
code
Ekzekutimi i kodit
Ekzekutoni kodin Python në një mjedis të sigurt Borg me sandbox.
link Konteksti i URL-së
Kaloni URL-të publike të internetit direkt te përgjigjet në terren në përmbajtjen e faqes së internetit.
search Kërkim skedarësh
Indeksoni dhe kërkoni nëpër dokumente dhe skedarë mediatikë të ngarkuar.
map Hartat e Google-it
Reagimet tokësore në të dhënat gjeohapësinore dhe të vendndodhjes së botës reale.
computer Përdorimi i kompjuterit
Automatizimi i shfletuesit dhe ndërveprimi me ekranin.
9. Thirrni funksionet tuaja Thirrja e funksionit ju lejon të lidhni modelin me kodin tuaj. Ju deklaroni emrin dhe parametrat e një funksioni, modeli vendos se kur ta thërrasë atë dhe kthen argumente të strukturuara, dhe ju e ekzekutoni atë lokalisht dhe e dërgoni rezultatin mbrapsht.
I plotë (i rekomanduar) Python
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 )
JavaScript
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 );
PUSHTIM
# 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' \
-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' \
-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"]
}
}]
}'
Pa shtetësi Gjithashtu mund të përdorni thirrjen e funksioneve në modalitetin pa gjendje duke menaxhuar historikun e bisedave në anën e klientit dhe duke vendosur store=false . Në modalitetin pa gjendje, duhet të kaloni historikun e plotë të bisedës në fushën input së çdo kërkese pasuese. Ky historik duhet të përfshijë:
Hapi fillestar user_input . Të gjithë hapat e gjeneruar nga modeli u kthyen në Turnin 1 (duke përfshirë hapat thought dhe function_call ) pikërisht ashtu siç u morën. Hapi function_result që përmban rezultatin e funksionit të ekzekutuar. Python
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 )
JavaScript
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 );
PUSHTIM
# 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' \
-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' \
-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\"]
}
}]
}"
Përgjigje:
Gjatë Raundit 1, modeli kthen një përgjigje me statusin requires_action dhe hapin 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"
}
Pasi ta ekzekutoni funksionin lokalisht dhe të dërgoni rezultatin (Radha 2), bashkëveprimi përfundimtar i përfunduar kthehet:
{
"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" ,
}
Për veçori të përparuara si thirrja paralele e funksioneve ose mënyrat e zgjedhjes së funksioneve, shihni udhëzuesin e thirrjes së funksioneve .
10. Drejtoni një agjent të menaxhuar Agjentët e menaxhuar ekzekutohen në një sandbox të largët me qasje në mjete si ekzekutimi i kodit dhe menaxhimi i skedarëve. Kaloni një agent në vend të një model dhe vendosni environment="remote" .
Python
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 )
JavaScript
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 );
PUSHTIM
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY " \
-H 'Content-Type: application/json' \
-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"
}'
Gjithashtu mund të përcaktoni dhe ruani agjentë të personalizuar me udhëzimet, aftësitë dhe burimet e të dhënave tuaja.
rocket_launch
Nisje e shpejtë
Bëni thirrjen tuaj të parë si agjent, transmetoni përgjigjet dhe ndërtoni një agjent të personalizuar.
smart_toy Agjent antigravitacional
Aftësitë, mjetet, të dhënat multimodale dhe çmimet për agjentin parazgjedhur.
experiment Agjentë në AI Studio
Hapësirë vizuale për prototipimin e agjentëve pa shkruar kod.
11. Ekzekutoni detyrat në sfond Cakto background=True për të ekzekutuar detyra të gjata në mënyrë asinkrone. Anketo për rezultate me interactions.get() .
Python
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 )
JavaScript
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 ));
}
PUSHTIM
# 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' \
-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
Përgjigje:
Përgjigja fillestare kthehet menjëherë me statusin in_progress :
{
"id" : "v1_abc123" ,
"status" : "in_progress" ,
"object" : "interaction" ,
"model" : "gemini-3.5-flash"
}
Pasi detyra në sfond të ekzekutohet plotësisht, kontrollimi i gjendjes së ndërveprimit jep rezultatin:
{
"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" ,
}
Lexoni rreth ekzekutimit asinkron të modeleve dhe agjentëve në udhëzuesin e ekzekutimit në sfond .
Çfarë vjen më pas
Dërgo komente