Ekzekutimi i kodit

API-ja Gemini ofron një mjet ekzekutimi kodi që i mundëson modelit të gjenerojë dhe ekzekutojë kod Python. Modeli më pas mund të mësojë në mënyrë iterative nga rezultatet e ekzekutimit të kodit derisa të arrijë në një rezultat përfundimtar. Ju mund të përdorni ekzekutimin e kodit për të ndërtuar aplikacione që përfitojnë nga arsyetimi i bazuar në kod. Për shembull, ju mund të përdorni ekzekutimin e kodit për të zgjidhur ekuacione ose për të përpunuar tekst. Ju gjithashtu mund të përdorni libraritë e përfshira në mjedisin e ekzekutimit të kodit për të kryer detyra më të specializuara.

Gemini është në gjendje të ekzekutojë kod vetëm në Python. Ju prapë mund t'i kërkoni Gemini-t të gjenerojë kod në një gjuhë tjetër, por modeli nuk mund ta përdorë mjetin e ekzekutimit të kodit për ta ekzekutuar atë.

Aktivizo ekzekutimin e kodit

Për të aktivizuar ekzekutimin e kodit, konfiguroni mjetin e ekzekutimit të kodit në model. Kjo i lejon modelit të gjenerojë dhe ekzekutojë kod.

Python

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="What is the sum of the first 50 prime numbers? "
    "Generate and run code for the calculation, and make sure you get all 50.",
    config=types.GenerateContentConfig(
        tools=[types.Tool(code_execution=types.ToolCodeExecution)]
    ),
)

for part in response.candidates[0].content.parts:
    if part.text is not None:
        print(part.text)
    if part.executable_code is not None:
        print(part.executable_code.code)
    if part.code_execution_result is not None:
        print(part.code_execution_result.output)

JavaScript

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

const ai = new GoogleGenAI({});

let response = await ai.models.generateContent({
  model: "gemini-2.5-flash",
  contents: [
    "What is the sum of the first 50 prime numbers? " +
      "Generate and run code for the calculation, and make sure you get all 50.",
  ],
  config: {
    tools: [{ codeExecution: {} }],
  },
});

const parts = response?.candidates?.[0]?.content?.parts || [];
parts.forEach((part) => {
  if (part.text) {
    console.log(part.text);
  }

  if (part.executableCode && part.executableCode.code) {
    console.log(part.executableCode.code);
  }

  if (part.codeExecutionResult && part.codeExecutionResult.output) {
    console.log(part.codeExecutionResult.output);
  }
});

Shko

package main

import (
    "context"
    "fmt"
    "os"
    "google.golang.org/genai"
)

func main() {

    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    config := &genai.GenerateContentConfig{
        Tools: []*genai.Tool{
            {CodeExecution: &genai.ToolCodeExecution{}},
        },
    }

    result, _ := client.Models.GenerateContent(
        ctx,
        "gemini-2.5-flash",
        genai.Text("What is the sum of the first 50 prime numbers? " +
                  "Generate and run code for the calculation, and make sure you get all 50."),
        config,
    )

    fmt.Println(result.Text())
    fmt.Println(result.ExecutableCode())
    fmt.Println(result.CodeExecutionResult())
}

PUSHTIM

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d ' {"tools": [{"code_execution": {}}],
    "contents": {
      "parts":
        {
            "text": "What is the sum of the first 50 prime numbers? Generate and run code for the calculation, and make sure you get all 50."
        }
    },
}'

Rezultati mund të duket diçka si më poshtë, i cili është formatuar për lexueshmëri:

Okay, I need to calculate the sum of the first 50 prime numbers. Here's how I'll
approach this:

1.  **Generate Prime Numbers:** I'll use an iterative method to find prime
    numbers. I'll start with 2 and check if each subsequent number is divisible
    by any number between 2 and its square root. If not, it's a prime.
2.  **Store Primes:** I'll store the prime numbers in a list until I have 50 of
    them.
3.  **Calculate the Sum:**  Finally, I'll sum the prime numbers in the list.

Here's the Python code to do this:

def is_prime(n):
  """Efficiently checks if a number is prime."""
  if n <= 1:
    return False
  if n <= 3:
    return True
  if n % 2 == 0 or n % 3 == 0:
    return False
  i = 5
  while i * i <= n:
    if n % i == 0 or n % (i + 2) == 0:
      return False
    i += 6
  return True

primes = []
num = 2
while len(primes) < 50:
  if is_prime(num):
    primes.append(num)
  num += 1

sum_of_primes = sum(primes)
print(f'{primes=}')
print(f'{sum_of_primes=}')

primes=[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67,
71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229]
sum_of_primes=5117

The sum of the first 50 prime numbers is 5117.

Ky rezultat kombinon disa pjesë përmbajtjeje që modeli i kthen kur përdor ekzekutimin e kodit:

  • text : Tekst i brendshëm i gjeneruar nga modeli
  • executableCode : Kod i gjeneruar nga modeli që është menduar të ekzekutohet
  • codeExecutionResult : Rezultati i kodit të ekzekutueshëm

Konventat e emërtimit për këto pjesë ndryshojnë në varësi të gjuhës së programimit.

Përdorni ekzekutimin e kodit në bisedë

Mund të përdorni edhe ekzekutimin e kodit si pjesë të një bisede.

Python

from google import genai
from google.genai import types

client = genai.Client()

chat = client.chats.create(
    model="gemini-2.5-flash",
    config=types.GenerateContentConfig(
        tools=[types.Tool(code_execution=types.ToolCodeExecution)]
    ),
)

response = chat.send_message("I have a math question for you.")
print(response.text)

response = chat.send_message(
    "What is the sum of the first 50 prime numbers? "
    "Generate and run code for the calculation, and make sure you get all 50."
)

for part in response.candidates[0].content.parts:
    if part.text is not None:
        print(part.text)
    if part.executable_code is not None:
        print(part.executable_code.code)
    if part.code_execution_result is not None:
        print(part.code_execution_result.output)

JavaScript

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

const ai = new GoogleGenAI({});

const chat = ai.chats.create({
  model: "gemini-2.5-flash",
  history: [
    {
      role: "user",
      parts: [{ text: "I have a math question for you:" }],
    },
    {
      role: "model",
      parts: [{ text: "Great! I'm ready for your math question. Please ask away." }],
    },
  ],
  config: {
    tools: [{codeExecution:{}}],
  }
});

const response = await chat.sendMessage({
  message: "What is the sum of the first 50 prime numbers? " +
            "Generate and run code for the calculation, and make sure you get all 50."
});
console.log("Chat response:", response.text);

Shko

package main

import (
    "context"
    "fmt"
    "os"
    "google.golang.org/genai"
)

func main() {

    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    config := &genai.GenerateContentConfig{
        Tools: []*genai.Tool{
            {CodeExecution: &genai.ToolCodeExecution{}},
        },
    }

    chat, _ := client.Chats.Create(
        ctx,
        "gemini-2.5-flash",
        config,
        nil,
    )

    result, _ := chat.SendMessage(
                    ctx,
                    genai.Part{Text: "What is the sum of the first 50 prime numbers? " +
                                          "Generate and run code for the calculation, and " +
                                          "make sure you get all 50.",
                              },
                )

    fmt.Println(result.Text())
    fmt.Println(result.ExecutableCode())
    fmt.Println(result.CodeExecutionResult())
}

PUSHTIM

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"tools": [{"code_execution": {}}],
    "contents": [
        {
            "role": "user",
            "parts": [{
                "text": "Can you print \"Hello world!\"?"
            }]
        },{
            "role": "model",
            "parts": [
              {
                "text": ""
              },
              {
                "executable_code": {
                  "language": "PYTHON",
                  "code": "\nprint(\"hello world!\")\n"
                }
              },
              {
                "code_execution_result": {
                  "outcome": "OUTCOME_OK",
                  "output": "hello world!\n"
                }
              },
              {
                "text": "I have printed \"hello world!\" using the provided python code block. \n"
              }
            ],
        },{
            "role": "user",
            "parts": [{
                "text": "What is the sum of the first 50 prime numbers? Generate and run code for the calculation, and make sure you get all 50."
            }]
        }
    ]
}'

Hyrje/dalje (I/O)

Duke filluar me Gemini 2.0 Flash , ekzekutimi i kodit mbështet hyrjen e skedarëve dhe daljen e grafikëve. Duke përdorur këto aftësi hyrjeje dhe daljeje, ju mund të ngarkoni skedarë CSV dhe teksti, të bëni pyetje në lidhje me skedarët dhe të gjeneroni grafikë Matplotlib si pjesë të përgjigjes. Skedarët e daljes kthehen si imazhe të integruara në përgjigje.

Çmimi i I/O-së

Kur përdorni I/O për ekzekutimin e kodit, ju ngarkoheni për tokenët hyrës dhe dalës:

Shenjat hyrëse:

  • Kërkesa e përdoruesit

Tokenat e daljes:

  • Kodi i gjeneruar nga modeli
  • Rezultati i ekzekutimit të kodit në mjedisin e kodit
  • Shenjat e të menduarit
  • Përmbledhje e gjeneruar nga modeli

Detajet e I/O-së

Kur punoni me I/O për ekzekutimin e kodit, kini parasysh detajet teknike të mëposhtme:

  • Koha maksimale e ekzekutimit të mjedisit të kodit është 30 sekonda.
  • Nëse mjedisi i kodit gjeneron një gabim, modeli mund të vendosë të rigjenerojë rezultatin e kodit. Kjo mund të ndodhë deri në 5 herë.
  • Madhësia maksimale e futjes së skedarit është e kufizuar nga dritarja e tokenit të modelit. Në AI Studio, duke përdorur Gemini Flash 2.0, madhësia maksimale e skedarit të futur është 1 milion token (afërsisht 2MB për skedarët tekstualë të llojeve të mbështetura të futjes). Nëse ngarkoni një skedar që është shumë i madh, AI Studio nuk do t'ju lejojë ta dërgoni atë.
  • Ekzekutimi i kodit funksionon më mirë me skedarët tekst dhe CSV.
  • Skedari hyrës mund të kalohet në part.inlineData ose part.fileData (i ngarkuar nëpërmjet Files API ), dhe skedari dalës kthehet gjithmonë si part.inlineData .
Kthesë e vetme Bidireksionale (API Multimodale Live)
Modelet e mbështetura Të gjitha modelet Gemini 2.0 dhe 2.5 Vetëm modelet eksperimentale të Flash
Llojet e dhënash të mbështetura .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts
Bibliotekat e grafikimit të mbështetura Matplotlib, i lindur në det Matplotlib, i lindur në det
Përdorimi i shumë mjeteve Po (vetëm ekzekutimi i kodit + tokëzimi) Po

Faturimi

Nuk ka pagesë shtesë për aktivizimin e ekzekutimit të kodit nga Gemini API. Do të faturoheni me çmimin aktual të tokenëve hyrës dhe dalës bazuar në modelin Gemini që po përdorni.

Ja disa gjëra të tjera që duhet të dini rreth faturimit për ekzekutimin e kodit:

  • Ju faturoheni vetëm një herë për tokenët hyrës që i kaloni modelit dhe ju faturoheni për tokenët përfundimtarë dalës që ju kthehen nga modeli.
  • Tokenët që përfaqësojnë kodin e gjeneruar llogariten si tokena dalës. Kodi i gjeneruar mund të përfshijë tekst dhe dalje multimodale si imazhe.
  • Rezultatet e ekzekutimit të kodit llogariten gjithashtu si tokena dalëse.

Modeli i faturimit është paraqitur në diagramin e mëposhtëm:

modeli i faturimit të ekzekutimit të kodit

  • Ju faturoheni me çmimin aktual të tokenëve hyrës dhe dalës bazuar në modelin Gemini që po përdorni.
  • Nëse Gemini përdor ekzekutimin e kodit kur gjeneron përgjigjen tuaj, kërkesa origjinale, kodi i gjeneruar dhe rezultati i kodit të ekzekutuar etiketohen si tokena të ndërmjetëm dhe faturohen si tokena hyrëse .
  • Pastaj Gemini gjeneron një përmbledhje dhe kthen kodin e gjeneruar, rezultatin e kodit të ekzekutuar dhe përmbledhjen përfundimtare. Këto faturohen si tokena dalës .
  • API-ja Gemini përfshin një numër të ndërmjetëm tokenësh në përgjigjen e API-t, kështu që ju e dini pse po merrni tokena shtesë hyrës përtej kërkesës fillestare.

Kufizime

  • Modeli mund të gjenerojë dhe ekzekutojë vetëm kod. Nuk mund të kthejë objekte të tjera si skedarët mediatikë.
  • Në disa raste, aktivizimi i ekzekutimit të kodit mund të çojë në regresione në fusha të tjera të rezultatit të modelit (për shembull, shkrimi i një historie).
  • Ekzistojnë disa ndryshime në aftësinë e modeleve të ndryshme për të përdorur me sukses ekzekutimin e kodit.

Kombinimet e mjeteve të mbështetura

Mjeti i ekzekutimit të kodit mund të kombinohet me Grounding me Google Search për të mundësuar raste përdorimi më komplekse.

Bibliotekat e mbështetura

Mjedisi i ekzekutimit të kodit përfshin libraritë e mëposhtme:

  • atrimet
  • shah
  • konturor
  • fpdf
  • gjeopandat
  • imageio
  • jinja2
  • libraria e punës
  • jsonschema
  • specifikimet-e-jsonschema-s
  • lxml
  • matplotlib
  • mpmath
  • i paqëndrueshëm
  • opencv-python
  • openpyxl
  • paketim
  • pandat
  • jastëk
  • protobuf
  • pilateks
  • pyparsing
  • PyPDF2
  • python-dateutil
  • python-docx
  • python-pptx
  • raportlaboratori
  • scikit-learn
  • scipy
  • detar
  • gjashtë
  • striptf
  • sympy
  • tabeloj
  • rrjedha tensorike
  • mjete
  • xlrd

Nuk mund të instaloni bibliotekat tuaja.

Çfarë vjen më pas