Udhëzuesi i Zhvilluesit për Gemini 3

Gemini 3 është familja jonë e modeleve më inteligjente deri më sot, e ndërtuar mbi një themel të arsyetimit të fjalës së fundit. Është projektuar për të sjellë në jetë çdo ide duke zotëruar rrjedhat e punës agjentike, kodimin autonom dhe detyrat komplekse multimodale. Ky udhëzues mbulon karakteristikat kryesore të familjes së modeleve Gemini 3 dhe si të përfitoni sa më shumë prej saj.

Eksploroni koleksionin tonë të aplikacioneve Gemini 3 për të parë se si modeli trajton arsyetimin e avancuar, kodimin autonom dhe detyrat komplekse multimodale.

Filloni me disa rreshta kodi:

Python

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.1-pro-preview",
    input="Find the race condition in this multi-threaded C++ snippet: [code here]",
)

print(interaction.steps[-1].content[0].text)

JavaScript

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

const client = new GoogleGenAI({});

async function run() {
  const interaction = await client.interactions.create({
    model: "gemini-3.1-pro-preview",
    input: "Find the race condition in this multi-threaded C++ snippet: [code here]",
  });

  console.log(interaction.steps.at(-1).content[0].text);
}

run();

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.1-pro-preview",
    "input": "Find the race condition in this multi-threaded C++ snippet: [code here]"
  }'

Njihuni me serinë Gemini 3

Gemini 3.1 Pro është më i miri për detyra komplekse që kërkojnë njohuri të gjera të botës dhe arsyetim të avancuar në të gjitha modalitetet.

Gemini 3 Flash është modeli ynë më i fundit i serisë 3, me inteligjencë të nivelit Pro me shpejtësinë dhe çmimin e Flash.

Nano Banana Pro (i njohur edhe si Gemini 3 Pro Image) është modeli ynë i gjenerimit të imazheve me cilësinë më të lartë, dhe Nano Banana 2 (i njohur edhe si Gemini 3.1 Flash Image) është ekuivalenti me vëllim të lartë, efikasitet të lartë dhe çmim më të ulët.

Gemini 3.1 Flash-Lite është modeli ynë i fuqishëm i ndërtuar për modele me efikasitet kostoje dhe detyra me volum të lartë.

Të gjitha modelet Gemini 3 janë aktualisht në fazën paraprake.

ID e modelit Dritarja e Kontekstit (Hyrëse / Dalëse) Kufiri i Njohurive Çmimi (Input / Output)*
Gemini-3.1-Flash-Lite-Parashikim 1M / 64k Janar 2025 0,25 dollarë (tekst, imazh, video), 0,50 dollarë (audio) / 1,50 dollarë
Gemini-3.1-pamje-pamjeje-flash 128 mijë / 32 mijë Janar 2025 0,25 dollarë (Futje Teksti) / 0,067 dollarë (Dalje Imazhesh)**
Gemini-3.1-pro-pamje paraprake 1M / 64k Janar 2025 $2 / $12 (<200 mijë tokenë)
4 dollarë / 18 dollarë (>200 mijë tokenë)
Gemini-3-flash-pamje paraprake 1M / 64k Janar 2025 0.50 dollarë / 3 dollarë
gemini-3-pro-pamje-pamjeje 65 mijë / 32 mijë Janar 2025 2 dollarë (Futje Teksti) / 0,134 dollarë (Dalje Imazhesh)**

* Çmimi është për 1 milion tokena, përveç nëse përcaktohet ndryshe. ** Çmimi i imazhit ndryshon në varësi të rezolucionit. Shihni faqen e çmimeve për detaje.

Për limite të detajuara, çmime dhe informacione shtesë, shihni faqen e modeleve .

Karakteristika të reja të API-t në Gemini 3

Gemini 3 prezanton parametra të rinj të dizajnuar për t'u dhënë zhvilluesve më shumë kontroll mbi vonesën, koston dhe besnikërinë multimodale.

Niveli i të menduarit

Modelet e serisë Gemini 3 përdorin të menduarit dinamik si parazgjedhje për të arsyetuar përmes kërkesave. Mund të përdorni parametrin thinking_level , i cili kontrollon thellësinë maksimale të procesit të brendshëm të arsyetimit të modelit përpara se të prodhojë një përgjigje. Gemini 3 i trajton këto nivele si lejime relative për të menduarit dhe jo si garanci të rrepta simbolike.

Nëse thinking_level nuk specifikohet, Gemini 3 do të vendosë si parazgjedhje high . Për përgjigje më të shpejta dhe me vonesë më të ulët kur nuk kërkohet arsyetim kompleks, mund ta kufizoni nivelin e të menduarit të modelit në low .

Niveli i të menduarit Gemini 3.1 Pro Gemini 3.1 Flash-Lite Binjakët 3 Blic Përshkrimi
minimal Nuk mbështetet Mbështetur (Parazgjedhur) Mbështetur Përputhet me cilësimin "pa menduar" për shumicën e pyetjeve. Modeli mund të mendojë shumë minimalisht për detyra komplekse kodimi. Minimizon vonesën për aplikacionet e bisedave ose me rendiment të lartë. Vini re, minimal nuk garanton që të menduarit është i çaktivizuar.
low Mbështetur Mbështetur Mbështetur Minimizon vonesën dhe koston. Më e mira për ndjekjen e thjeshtë të udhëzimeve, bisedën ose aplikacionet me rendiment të lartë.
medium Mbështetur Mbështetur Mbështetur Të menduarit e ekuilibruar për shumicën e detyrave.
high Mbështetur (Parazgjedhur, Dinamik) Mbështetur (Dinamike) Mbështetur (Parazgjedhur, Dinamik) Maksimizon thellësinë e arsyetimit. Modelit mund t'i duhet shumë më tepër kohë për të arritur një shenjë të parë rezultati (jo-menduese), por rezultati do të arsyetohet më me kujdes.

Python

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.1-pro-preview",
    input="How does AI work?",
    generation_config={"thinking_level": "low"},
)

print(interaction.steps[-1].content[0].text)

JavaScript

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

const client = new GoogleGenAI({});

const interaction = await client.interactions.create({
    model: "gemini-3.1-pro-preview",
    input: "How does AI work?",
    generationConfig: {
      thinking_level: "low",
    },
  });

console.log(interaction.steps.at(-1).content[0].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.1-pro-preview",
    "input": "How does AI work?",
    "config": {
      "thinking_level": "low"
    }
  }'

Temperatura

Për të gjitha modelet Gemini 3, ne rekomandojmë fuqimisht mbajtjen e parametrit të temperaturës në vlerën e tij të paracaktuar prej 1.0 .

Ndërsa modelet e mëparshme shpesh përfitonin nga rregullimi i temperaturës për të kontrolluar kreativitetin në vend të determinizmit, aftësitë e arsyetimit të Gemini 3 janë të optimizuara për cilësimin fillestar. Ndryshimi i temperaturës (vendosja e saj nën 1.0) mund të çojë në sjellje të papritura, të tilla si rikthimi në një cikël ose performancë të degraduar, veçanërisht në detyra komplekse matematikore ose arsyetimi.

Nënshkrimet e mendimit

Modelet Gemini 3 përdorin nënshkrime mendimi për të ruajtur kontekstin e arsyetimit nëpër thirrjet API. Këto nënshkrime janë përfaqësime të koduara të procesit të brendshëm të mendimit të modelit.

  • Modaliteti i gjendjes (i rekomanduar) : Kur përdorni API-në e Ndërveprimeve në modalitetin e gjendjes (duke ofruar previous_interaction_id ), serveri menaxhon automatikisht historikun e bisedave dhe nënshkrimet e mendimeve.
  • Modaliteti pa shtetësi : Nëse po e menaxhoni historikun e bisedave manualisht, duhet të përfshini blloqet e mendimit me nënshkrimet e tyre në kërkesat pasuese për të vërtetuar vërtetësinë.

Për informacion të detajuar, shihni faqen e Nënshkrimeve të Mendimit .

Gjenerimi dhe redaktimi i imazhit

Për gemini-3-pro-image-preview dhe gemini-3.1-flash-image-preview , nënshkrimet e mendimit janë kritike për redaktimin bisedor. Kur i kërkoni modelit të modifikojë një imazh, ai mbështetet në signature nga kthesa e mëparshme për të kuptuar përbërjen dhe logjikën e imazhit origjinal.

  • Redaktimi: Nënshkrimet janë të garantuara në pjesën e parë pas mendimeve të përgjigjes ( text ose inlineData ) dhe në çdo pjesë pasuese inlineData . Ju duhet t'i ktheni të gjitha këto nënshkrime për të shmangur gabimet.

Shembuj kodi

Thirrja e Funksionit me Shumë Hapa (Sekuenciale)

Përdoruesi bën një pyetje që kërkon dy hapa të veçantë (Kontrolloni Fluturimin -> Rezervoni Taksi) në një raund të vetëm.

Hapi 1: Modeli thërret Mjetin e Fluturimit.
Modeli kthen një nënshkrim <Sig_A>

// Model Response (Turn 1, Step 1)
  {
    "id": "interaction-123",
    "steps": [
      {
        "type": "function_call",
        "name": "check_flight",
        "arguments": {"flight": "AA100"},
        "signature": "<Sig_A>" // SAVE THIS
      }
    ]
  }

Hapi 2: Përdoruesi dërgon rezultatin e fluturimit
Duhet ta dërgojmë mbrapsht <Sig_A> për të ruajtur rrjedhën e mendimeve të modelit.

// User Request (Turn 1, Step 2)
  {
    "model": "gemini-3-flash-preview",
    "previous_interaction_id": "interaction-123",
    "input": [
      {
        "type": "function_result",
        "call_id": "fc_check_flight",
        "name": "check_flight",
        "result": [{ "type": "text", "text": "{\"status\": \"delayed\", \"departure_time\": \"12 PM\"}" }]
      }
    ]
  }

Hapi 3: Modeli i thirrjeve Taxi Tool
Modeli e mban mend vonesën e fluturimit duke përdorur <Sig_A> dhe tani vendos të rezervojë një taksi. Ai gjeneron një nënshkrim të ri <Sig_B> .

// Model Response (Turn 1, Step 3)
  {
    "id": "interaction-123",
    "steps": [
      {
        "type": "function_call",
        "name": "book_taxi",
        "arguments": {"time": "10 AM"},
        "signature": "<Sig_B>" // SAVE THIS
      }
    ]
  }

Hapi 4: Përdoruesi dërgon rezultatin e taksisë
Për të përfunduar kthesën, duhet të ktheni mbrapsht të gjithë zinxhirin: <Sig_A> DHE <Sig_B> .

// User Request (Turn 1, Step 4)
  {
    "model": "gemini-3-flash-preview",
    "previous_interaction_id": "interaction-123",
    "input": [
      {
        "type": "function_result",
        "call_id": "fc_book_taxi",
        "name": "book_taxi",
        "result": [{ "type": "text", "text": "{\"booking_status\": \"success\"}" }]
      }
    ]
  }

Thirrja e Funksionit Paralel

Përdoruesi pyet: "Kontrolloni motin në Paris dhe Londër." Modeli kthen dy thirrje funksionesh në një përgjigje.

// Model Response
  {
    "id": "interaction-456",
    "steps": [
      {
        "type": "function_call",
        "name": "check_weather",
        "arguments": { "city": "Paris" },
        "signature": "<Signature_A>" // INCLUDED on First FC
      },
      {
        "type": "function_call",
        "name": "check_weather",
        "arguments": { "city": "London" }
      }
    ]
  }

// User Request (Sending Parallel Results)
  {
    "model": "gemini-3-flash-preview",
    "previous_interaction_id": "interaction-456",
    "input": [
      {
        "type": "function_result",
        "call_id": "fc_paris",
        "name": "check_weather",
        "result": [{ "type": "text", "text": "15C" }]
      },
      {
        "type": "function_result",
        "call_id": "fc_london",
        "name": "check_weather",
        "result": [{ "type": "text", "text": "12C" }]
      }
    ]
  }

Migrimi nga modele të tjera

Nëse po transferoni një gjurmë bisede nga një model tjetër (p.sh., Gemini 2.5) ose po injektoni një thirrje funksioni të personalizuar që nuk është gjeneruar nga Gemini 3, nuk do të keni një nënshkrim të vlefshëm.

Për të anashkaluar validimin e rreptë në këto skenarë specifikë, plotësoni fushën me këtë varg specifik fiktiv: "signature": "context_engineering_is_the_way to_go"

Rezultate të strukturuara me mjete

Modelet Gemini 3 ju lejojnë të kombinoni Daljet e Strukturuara me mjete të integruara, duke përfshirë Grounding with Google Search , URL Context , Code Execution dhe Function Calling .

Python

from google import genai
from pydantic import BaseModel, Field
from typing import List

class MatchResult(BaseModel):
    winner: str = Field(description="The name of the winner.")
    final_match_score: str = Field(description="The final match score.")
    scorers: List[str] = Field(description="The name of the scorer.")

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.1-pro-preview",
    input="Search for all details for the latest Euro.",
    tools=[
        {"google_search": {}},
        {"url_context": {}}
    ],
    response_format={
        "type": "text",
        "mime_type": "application/json",
        "schema": MatchResult.model_json_schema()
    },
)

result = MatchResult.model_validate_json(interaction.steps[-1].content[0].text)
print(result)

JavaScript

import { GoogleGenAI } from "@google/genai";
import { z } from "zod";
import { zodToJsonSchema } from "zod-to-json-schema";

const client = new GoogleGenAI({});

const matchSchema = z.object({
  winner: z.string().describe("The name of the winner."),
  final_match_score: z.string().describe("The final score."),
  scorers: z.array(z.string()).describe("The name of the scorer.")
});

async function run() {
  const interaction = await client.interactions.create({
    model: "gemini-3.1-pro-preview",
    input: "Search for all details for the latest Euro.",
    tools: [
      { googleSearch: {} },
      { urlContext: {} }
    ],
    response_format: {
        type: "text",
        mime_type: "application/json",
        schema: zodToJsonSchema(matchSchema)
    },
  });

  const match = matchSchema.parse(JSON.parse(interaction.steps.at(-1).content[0].text));
  console.log(match);
}

run();

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.1-pro-preview",
    "input": "Search for all details for the latest Euro.",
    "tools": [
      {"google_search": {}},
      {"url_context": {}}
    ],
    "response_format": {
        "type": "text",
        "mime_type": "application/json",
        "schema": {
            "type": "object",
            "properties": {
                "winner": {"type": "string", "description": "The name of the winner."},
                "final_match_score": {"type": "string", "description": "The final score."},
                "scorers": {
                    "type": "array",
                    "items": {"type": "string"},
                    "description": "The name of the scorer."
                }
            },
            "required": ["winner", "final_match_score", "scorers"]
        }
    }
  }'

Gjenerimi i imazhit

Gemini 3.1 Flash Image dhe Gemini 3 Pro Image ju lejojnë të gjeneroni dhe modifikoni imazhe nga kërkesat me tekst. Ai përdor arsyetimin për të "menduar" përmes një kërkese dhe mund të nxjerrë të dhëna në kohë reale - të tilla si parashikimet e motit ose grafikët e aksioneve - përpara se të përdorë bazën e Kërkimit Google përpara se të gjenerojë imazhe me besueshmëri të lartë.

Aftësi të reja dhe të përmirësuara:

  • Renderim 4K dhe teksti: Gjeneroni tekst dhe diagrama të qarta dhe të lexueshme me rezolucione deri në 2K dhe 4K.
  • Gjenerimi i bazuar: Përdorni mjetin google_search për të verifikuar faktet dhe për të gjeneruar imazhe bazuar në informacione nga bota reale. Bazimi me Google Image Search është i disponueshëm për Gemini 3.1 Flash Image.
  • Redaktimi bisedor: Redaktimi i imazhit me shumë kthesa duke kërkuar thjesht ndryshime (p.sh., "Bëjeni sfondin si perëndim dielli"). Ky rrjedhë pune mbështetet në Nënshkrimet e Mendimit për të ruajtur kontekstin vizual midis kthesave.

Për detaje të plota mbi raportet e aspektit, rrjedhat e punës së redaktimit dhe opsionet e konfigurimit, shihni udhëzuesin e Gjenerimit të Imazheve .

Python

from google import genai
import base64

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3-pro-image-preview",
    input="Generate an infographic of the current weather in Tokyo.",
    tools=[{"google_search": {}}],
    response_format={
        "type": "image",
        "aspect_ratio": "16:9",
        "image_size": "4K"
    }
)

from PIL import Image
import io

image_blocks = [content_block for content_block in interaction.steps[-1].content if content_block.type == "image"]
if image_blocks:
    image_data = base64.b64decode(image_blocks[0].data)
    image = Image.open(io.BytesIO(image_data))
    image.save('weather_tokyo.png')
    image.show()

JavaScript

import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";

const client = new GoogleGenAI({});

async function run() {
  const interaction = await client.interactions.create({
    model: "gemini-3-pro-image-preview",
    input: "Generate a visualization of the current weather in Tokyo.",
    tools: [{ googleSearch: {} }],
    responseFormat: {
      type: "image",
      aspectRatio: "16:9",
      imageSize: "4K"
    }
  });

  for (const contentBlock of interaction.steps.at(-1).content) {
    if (contentBlock.type === "image") {
      const buffer = Buffer.from(contentBlock.data, "base64");
      fs.writeFileSync("weather_tokyo.png", buffer);
    }
  }
}

run();

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-pro-image-preview",
    "input": "Generate a visualization of the current weather in Tokyo.",
    "tools": [{"google_search": {}}],
    "response_format": {
        "type": "image",
        "aspect_ratio": "16:9",
        "image_size": "4K"
    }
  }'

Shembull Përgjigjeje

Moti në Tokio

Ekzekutimi i Kodit me imazhe

Gemini 3 Flash mund ta trajtojë shikimin si një hetim aktiv, jo vetëm si një vështrim statik. Duke kombinuar arsyetimin me ekzekutimin e kodit , modeli formulon një plan, pastaj shkruan dhe ekzekuton kodin Python për të zmadhuar, prerë, shënuar ose manipuluar imazhet hap pas hapi për të bazuar vizualisht përgjigjet e tij.

Rastet e përdorimit:

  • Zmadhoni dhe inspektoni: Modeli zbulon në mënyrë implicite kur detajet janë shumë të vogla (p.sh., duke lexuar një matës të largët ose numër serial) dhe shkruan kod për të prerë dhe rishqyrtuar zonën me rezolucion më të lartë.
  • Matematika vizuale dhe paraqitja grafike: Modeli mund të kryejë llogaritje me shumë hapa duke përdorur kod (p.sh., duke mbledhur artikujt e rreshtit në një faturë ose duke gjeneruar një grafik Matplotlib nga të dhënat e nxjerra).
  • Shënimi i imazhit: Modeli mund të vizatojë shigjeta, kuti kufizuese ose shënime të tjera direkt mbi imazhe për t'iu përgjigjur pyetjeve hapësinore si "Ku duhet të shkojë ky artikull?".

Për të aktivizuar të menduarit vizual, konfiguroni Ekzekutimin e Kodit si një mjet. Modeli do të përdorë automatikisht kodin për të manipuluar imazhet kur është e nevojshme.

Python

from google import genai
from google.genai import types
import requests
from PIL import Image
import io
import base64

image_path = "https://goo.gle/instrument-img"
image_bytes = requests.get(image_path).content
image = types.Part.from_bytes(data=image_bytes, mime_type="image/jpeg")

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3-flash-preview",
    input=[
        image,
        "Zoom into the expression pedals and tell me how many pedals are there?"
    ],
    tools=[{"code_execution": {}}],
)

from IPython.display import display
from PIL import Image
import io

for step in interaction.steps:
    if step.type == "model_output":
        for content_block in step.content:
            if content_block.type == "text":
                print(content_block.text)
            elif content_block.type == "image":
                 display(Image.open(io.BytesIO(base64.b64decode(content_block.data))))
    elif step.type == "code_execution_call":
        print(step.code)
    elif step.type == "code_execution_result":
        print(step.output)

JavaScript

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

const client = new GoogleGenAI({});

async function main() {
  const imageUrl = "https://goo.gle/instrument-img";
  const response = await fetch(imageUrl);
  const imageArrayBuffer = await response.arrayBuffer();
  const base64ImageData = Buffer.from(imageArrayBuffer).toString("base64");

  const interaction = await client.interactions.create({
    model: "gemini-3-flash-preview",
    input: [
      {
        inlineData: {
          mimeType: "image/jpeg",
          data: base64ImageData,
        },
      },
      {
        text: "Zoom into the expression pedals and tell me how many pedals are there?",
      },
    ],
    tools: [{ codeExecution: {} }],
  });

  for (const step of interaction.steps) {
    if (step.type === "model_output") {
      for (const contentBlock of step.content) {
        if (contentBlock.type === "text") {
          console.log("Text:", contentBlock.text);
        }
      }
    } else if (step.type === "code_execution_call") {
      console.log("Code:", step.code);
    } else if (step.type === "code_execution_result") {
      console.log("Output:", step.output);
    }
  }
}

main();

PUSHTIM

IMG_URL="https://goo.gle/instrument-img"
MODEL="gemini-3-flash-preview"

MIME_TYPE=$(curl -sIL "$IMG_URL" | grep -i '^content-type:' | awk -F ': ' '{print $2}' | sed 's/\r$//' | head -n 1)
if [[ -z "$MIME_TYPE" || ! "$MIME_TYPE" == image/* ]]; then
  MIME_TYPE="image/jpeg"
fi

if [[ "$(uname)" == "Darwin" ]]; then
  IMAGE_B64=$(curl -sL "$IMG_URL" | base64 -b 0)
elif [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  IMAGE_B64=$(curl -sL "$IMG_URL" | base64)
else
  IMAGE_B64=$(curl -sL "$IMG_URL" | base64 -w0)
fi

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
    -H "x-goog-api-key: $GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
      "model": "'$MODEL'",
      "input": [{
        "parts":[
            {
              "inline_data": {
                "mime_type":"'"$MIME_TYPE"'",
                "data": "'"$IMAGE_B64"'"
              }
            },
            {"text": "Zoom into the expression pedals and tell me how many pedals are there?"}
        ]
      }],
      "tools": [{"code_execution": {}}]
    }'

Për më shumë detaje mbi ekzekutimin e kodit me imazhe, shihni Ekzekutimi i Kodit .

Përgjigjet e funksionit multimodal

Thirrja e funksioneve multimodale u lejon përdoruesve të kenë përgjigje funksionesh që përmbajnë objekte multimodale, duke lejuar shfrytëzimin e përmirësuar të aftësive të thirrjes së funksioneve të modelit. Thirrja standarde e funksioneve mbështet vetëm përgjigjet e funksioneve të bazuara në tekst:

Python

from google import genai
import requests
import base64

client = genai.Client()

# 1. Define the tool
get_image_tool = {
    "type": "function",
    "name": "get_image",
    "description": "Retrieves the image file reference for a specific order item.",
    "parameters": {
        "type": "object",
        "properties": {
            "item_name": {
                "type": "string",
                "description": "The name or description of the item ordered (e.g., 'instrument')."
            }
        },
        "required": ["item_name"],
    },
}

# 2. Send the request with tools
interaction_1 = client.interactions.create(
    model="gemini-3-flash-preview",
    input="Show me the instrument I ordered last month.",
    tools=[get_image_tool],
)

# 3. Find the function call step
fc_step = next(s for s in interaction_1.steps if s.type == "function_call")
print(f"Tool Call: {fc_step.name}({fc_step.arguments})")

# Execute tool (fetch image)
image_path = "https://goo.gle/instrument-img"
image_bytes = requests.get(image_path).content
image_b64 = base64.b64encode(image_bytes).decode("utf-8")

# 4. Send multimodal function result back
interaction_2 = client.interactions.create(
    model="gemini-3-flash-preview",
    previous_interaction_id=interaction_1.id,
    input=[{
        "type": "function_result",
        "name": fc_step.name,
        "call_id": fc_step.id,
        "result": [
            {"type": "text", "text": "instrument.jpg"},
            {
                "type": "image",
                "mime_type": "image/jpeg",
                "data": image_b64,
            }
        ]
    }],
    tools=[get_image_tool],
    thinking_config={"include_thoughts": True},
)

print(f"\nFinal model response: {interaction_2.steps[-1].content[0].text}")

JavaScript

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

const client = new GoogleGenAI({});

// 1. Define the tool
const getImageTool = {
    type: 'function',
    name: 'get_image',
    description: 'Retrieves the image file reference for a specific order item.',
    parameters: {
        type: 'object',
        properties: {
            item_name: {
                type: 'string',
                description: "The name or description of the item ordered (e.g., 'instrument').",
            },
        },
        required: ['item_name'],
    },
};

// 2. Send the request with tools
const interaction1 = await client.interactions.create({
    model: 'gemini-3-flash-preview',
    input: 'Show me the instrument I ordered last month.',
    tools: [getImageTool],
});

// 3. Find the function call step
const fcStep = interaction1.steps.find(s => s.type === 'function_call');
console.log(`Tool Call: ${fcStep.name}(${JSON.stringify(fcStep.arguments)})`);

// Execute tool (fetch image)
const imageUrl = 'https://goo.gle/instrument-img';
const response = await fetch(imageUrl);
const imageArrayBuffer = await response.arrayBuffer();
const base64ImageData = Buffer.from(imageArrayBuffer).toString('base64');

// 4. Send multimodal function result back
const interaction2 = await client.interactions.create({
    model: 'gemini-3-flash-preview',
    previousInteractionId: interaction1.id,
    input: [{
        type: 'function_result',
        name: fcStep.name,
        call_id: fcStep.id,
        result: [
            { type: 'text', text: 'instrument.jpg' },
            {
                type: 'image',
                mimeType: 'image/jpeg',
                data: base64ImageData,
            }
        ]
    }],
    tools: [getImageTool],
    thinking_config: { include_thoughts: true },
});

console.log(`\nFinal model response: ${interaction2.steps.at(-1).content[0].text}`);

PUSHTIM

IMG_URL="https://goo.gle/instrument-img"

MIME_TYPE=$(curl -sIL "$IMG_URL" | grep -i '^content-type:' | awk -F ': ' '{print $2}' | sed 's/\r$//' | head -n 1)
if [[ -z "$MIME_TYPE" || ! "$MIME_TYPE" == image/* ]]; then
  MIME_TYPE="image/jpeg"
fi

# Check for macOS
if [[ "$(uname)" == "Darwin" ]]; then
  IMAGE_B64=$(curl -sL "$IMG_URL" | base64 -b 0)
elif [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  IMAGE_B64=$(curl -sL "$IMG_URL" | base64)
else
  IMAGE_B64=$(curl -sL "$IMG_URL" | base64 -w0)
fi

# 1. First interaction (triggers function call)
# 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-flash-preview", "input": "Show me the instrument I ordered last month.", "tools": [...] }'

# 2. Send multimodal function result back (Replace INTERACTION_ID and CALL_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-flash-preview",
    "previous_interaction_id": "INTERACTION_ID",
    "input": [{
      "type": "function_result",
      "name": "get_image",
      "call_id": "CALL_ID",
      "result": [
        { "type": "text", "text": "instrument.jpg" },
        {
          "type": "image",
          "mime_type": "'"$MIME_TYPE"'",
          "data": "'"$IMAGE_B64"'"
        }
      ]
    }],
    "thinking_config": { "include_thoughts": true }
  }'

Kombinoni mjetet e integruara dhe thirrjen e funksioneve

Gemini 3 lejon përdorimin e mjeteve të integruara (si Kërkimi në Google, konteksti i URL-së dhe më shumë ) dhe mjeteve të personalizuara të thirrjes së funksioneve në të njëjtën thirrje API, duke lejuar rrjedha pune më komplekse.

Python

from google import genai
from google.genai import types

client = genai.Client()

getWeather = {
    "type": "function",
    "name": "getWeather",
    "description": "Gets the weather for a requested city.",
    "parameters": {
        "type": "object",
        "properties": {
            "city": {
                "type": "string",
                "description": "The city and state, e.g. Utqiaġvik, Alaska",
            },
        },
        "required": ["city"],
    },
}

interaction = client.interactions.create(
    model="gemini-3-flash-preview",
    input="What is the northernmost city in the United States? What's the weather like there today?",
    tools=[
        {"google_search": {}},
        getWeather
    ],
)

# Find the function call step
fc_step = next((s for s in interaction.steps if s.type == "function_call"), None)

if fc_step:
    # Simulate a function result
    result = {"response": "Very cold. 22 degrees Fahrenheit."}

    final_interaction = client.interactions.create(
        model="gemini-3-flash-preview",
        input=[
            {"type": "function_result", "name": fc_step.name, "call_id": fc_step.id, "result": result}
        ],
        tools=[
            {"google_search": {}},
            getWeather
        ],
        previous_interaction_id=interaction.id,
    )

    print(final_interaction.steps[-1].content[0].text)

JavaScript

import { GoogleGenAI, Type } from '@google/genai';

const client = new GoogleGenAI({});

const getWeatherDeclaration = {
  type: 'function',
  name: 'getWeather',
  description: 'Gets the weather for a requested city.',
  parameters: {
    type: Type.OBJECT,
    properties: {
      city: {
        type: Type.STRING,
        description: 'The city and state, e.g. Utqiaġvik, Alaska',
      },
    },
    required: ['city'],
  },
};

const interaction = await client.interactions.create({
  model: 'gemini-3-flash-preview',
  input: "What is the northernmost city in the United States? What's the weather like there today?",
  tools: [
    { googleSearch: {} },
    getWeatherDeclaration
  ],
});

// Find the function call step
const fcStep = interaction.steps.find(s => s.type === 'function_call');

if (fcStep) {
  const result = { response: "Very cold. 22 degrees Fahrenheit." };

  const finalInteraction = await client.interactions.create({
    model: 'gemini-3-flash-preview',
    input: [
      { type: 'function_result', name: fcStep.name, call_id: fcStep.id, result: result }
    ],
    tools: [
      { googleSearch: {} },
      getWeatherDeclaration
    ],
    previous_interaction_id: interaction.id,
  });

  console.log(finalInteraction.steps.at(-1).content[0].text);
}

Migrimi nga Binjakët 2.5

Gemini 3 është familja jonë model më e aftë deri më sot dhe ofron një përmirësim gradual në krahasim me Gemini 2.5. Kur migroni, merrni parasysh sa vijon:

  • Të menduarit: Nëse më parë keni përdorur inxhinieri komplekse të pyetjeve (si zinxhiri i mendimit) për të detyruar Gemini 2.5 të arsyetojë, provoni Gemini 3 me thinking_level: "high" dhe pyetje të thjeshtuara.
  • Cilësimet e temperaturës: Nëse kodi juaj ekzistues e vendos temperaturën në mënyrë të qartë (veçanërisht në vlera të ulëta për daljet deterministike), ne rekomandojmë heqjen e këtij parametri dhe përdorimin e parazgjedhjes 1.0 të Gemini 3 për të shmangur problemet e mundshme të cikleve ose degradimin e performancës në detyra komplekse.
  • Kuptimi i PDF-ve dhe dokumenteve: Nëse jeni mbështetur në sjellje specifike për analizimin e dendur të dokumenteve, testoni cilësimin e ri media_resolution_high për të siguruar saktësi të vazhdueshme.
  • Konsumi i tokenëve: Migrimi në cilësimet fillestare të Gemini 3 mund të rrisë përdorimin e tokenëve për PDF-të, por të ulë përdorimin e tokenëve për videon. Nëse kërkesat tani tejkalojnë dritaren e kontekstit për shkak të rezolucioneve më të larta fillestare, ne rekomandojmë që të zvogëlohet në mënyrë të qartë rezolucioni i medias.
  • Segmentimi i imazhit: Aftësitë e segmentimit të imazhit (kthimi i maskave në nivel pikseli për objektet) nuk mbështeten në Gemini 3 Pro ose Gemini 3 Flash. Për ngarkesat e punës që kërkojnë segmentim të integruar të imazhit, ne rekomandojmë të vazhdoni të përdorni Gemini 2.5 Flash me të menduarit të çaktivizuar ose Gemini Robotics-ER 1.6 .
  • Përdorimi i Kompjuterit: Gemini 3 Pro dhe Gemini 3 Flash mbështesin Përdorimin e Kompjuterit . Ndryshe nga seria 2.5, nuk keni nevojë të përdorni një model të veçantë për të aksesuar mjetin e Përdorimit të Kompjuterit.
  • Mbështetje për mjetet : Kombinimi i mjeteve të integruara me thirrjen e funksioneve tani mbështetet për modelet Gemini 3. Tokëzimi i hartave tani mbështetet gjithashtu për modelet Gemini 3.

Pajtueshmëria me OpenAI

Për përdoruesit që përdorin shtresën e përputhshmërisë OpenAI , parametrat standardë ( reasoning_effort i OpenAI) hartëzohen automatikisht në ekuivalentët Gemini ( thinking_level ).

Nxitja e praktikave më të mira

Binjakët 3 është një model arsyetimi, i cili ndryshon mënyrën se si duhet të nxitni.

  • Udhëzime të sakta: Jini koncizë në udhëzimet tuaja hyrëse. Binjakët 3 i përgjigjen më së miri udhëzimeve të drejtpërdrejta dhe të qarta. Mund të analizojë tepër teknikat e hollësishme ose tepër komplekse të inxhinierisë së udhëzimeve të përdorura për modelet e vjetra.
  • Fjalëkalimi i rezultateve: Si parazgjedhje, Gemini 3 është më pak i gjatë dhe preferon të ofrojë përgjigje të drejtpërdrejta dhe efikase. Nëse rasti juaj i përdorimit kërkon një personazh më bisedor ose "të hapur", duhet ta drejtoni modelin në mënyrë të qartë në kërkesë (p.sh., "Shpjegojeni këtë si një asistent miqësor dhe i hapur").
  • Menaxhimi i kontekstit: Kur punoni me grupe të mëdha të dhënash (p.sh., libra të tërë, baza kodesh ose video të gjata), vendosni udhëzimet ose pyetjet tuaja specifike në fund të kërkesës, pas kontekstit të të dhënave. Ankoroni arsyetimin e modelit me të dhënat e dhëna duke e filluar pyetjen tuaj me një frazë si, "Bazuar në informacionin paraprak...".

Mësoni më shumë rreth strategjive të projektimit të shpejtë në udhëzuesin e inxhinierisë së shpejtë .

Pyetje të shpeshta

  1. Cili është kufiri i njohurive për Gemini 3? Modelet Gemini 3 kanë një kufi njohurish në janar 2025. Për informacione më të fundit, përdorni mjetin Search Grounding .

  2. Cilat janë kufizimet e dritares së kontekstit? Modelet Gemini 3 mbështesin një dritare konteksti hyrëse prej 1 milion tokenësh dhe deri në 64 mijë tokenësh daljeje.

  3. A ka një nivel falas për Gemini 3? Gemini 3 Flash gemini-3-flash-preview ka një nivel falas në Gemini API. Mund të provoni Gemini 3.1 Pro dhe 3 Flash pa pagesë në Google AI Studio, por nuk ka asnjë nivel falas në dispozicion për gemini-3.1-pro-preview në Gemini API.

  4. A do të funksionojë ende kodi im i vjetër thinking_budget ? Po, thinking_budget mbështetet ende për pajtueshmëri me prapavijë, por ne rekomandojmë migrimin në thinking_level për një performancë më të parashikueshme. Mos i përdorni të dyja në të njëjtën kërkesë.

  5. A e mbështet Gemini 3 Batch API? Po, Gemini 3 mbështet Batch API .

  6. A mbështetet Context Caching? Po, Context Caching mbështetet për Gemini 3.

  7. Cilat mjete mbështeten në Gemini 3? Gemini 3 mbështet Kërkimin në Google , Grounding me Google Maps , Kërkimin e Skedarëve , Ekzekutimin e Kodit dhe Kontekstin e URL-së . Ai gjithashtu mbështet Thirrjen standarde të Funksioneve për mjetet tuaja të personalizuara dhe në kombinim me mjetet e integruara .

  8. Çfarë është gemini-3.1-pro-preview-customtools ? Nëse po përdorni gemini-3.1-pro-preview dhe modeli i shpërfill mjetet tuaja të personalizuara në favor të komandave bash, provoni modelin gemini-3.1-pro-preview-customtools . Më shumë informacion këtu .

Hapat e ardhshëm