Gemini API ofron një mjet për ekzekutimin e kodit që i mundëson modelit të gjenerojë dhe ekzekutojë kodin Python. Modeli më pas mund të mësojë në mënyrë të përsëritur nga rezultatet e ekzekutimit të kodit derisa të arrijë në një dalje përfundimtare. 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, mund të përdorni ekzekutimin e kodit për të zgjidhur ekuacionet ose për të përpunuar tekstin. Ju gjithashtu mund të përdorni bibliotekat e përfshira në mjedisin e ekzekutimit të kodit për të kryer detyra më të specializuara.
Binjakët janë në gjendje të ekzekutojnë kodin vetëm në Python. Ju ende mund t'i kërkoni Binjakëve të gjenerojë kodin në një gjuhë tjetër, por modeli nuk mund të 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ë kodin.
Python
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-2.0-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({ apiKey: "GOOGLE_API_KEY" });
let response = await ai.models.generateContent({
model: "gemini-2.0-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);
}
});
Shkoni
package main
import (
"context"
"fmt"
"os"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, _ := genai.NewClient(ctx, &genai.ClientConfig{
APIKey: os.Getenv("GOOGLE_API_KEY"),
Backend: genai.BackendGeminiAPI,
})
config := &genai.GenerateContentConfig{
Tools: []*genai.Tool{
{CodeExecution: &genai.ToolCodeExecution{}},
},
}
result, _ := client.Models.GenerateContent(
ctx,
"gemini-2.0-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())
}
PUSHIMI
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GOOGLE_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."
}
},
}'
Dalja mund të duket diçka si më poshtë, e cila ë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 dalje kombinon disa pjesë të përmbajtjes që modeli i kthen kur përdor ekzekutimin e kodit:
-
text
: Teksti inline i krijuar nga modeli -
executableCode
: Kodi i krijuar nga modeli që është menduar të ekzekutohet -
codeExecutionResult
: Rezultati i kodit të ekzekutueshëm
Konventat e emërtimit për këto pjesë ndryshojnë sipas gjuhës së programimit.
Përdorni ekzekutimin e kodit në chat
Ju gjithashtu mund të përdorni ekzekutimin e kodit si pjesë e një bisede.
Python
from google import genai
from google.genai import types
client = genai.Client()
chat = client.chats.create(
model="gemini-2.0-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({ apiKey: "GOOGLE_API_KEY" });
const chat = ai.chats.create({
model: "gemini-2.0-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);
Shkoni
package main
import (
"context"
"fmt"
"os"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, _ := genai.NewClient(ctx, &genai.ClientConfig{
APIKey: os.Getenv("GOOGLE_API_KEY"),
Backend: genai.BackendGeminiAPI,
})
config := &genai.GenerateContentConfig{
Tools: []*genai.Tool{
{CodeExecution: &genai.ToolCodeExecution{}},
},
}
chat, _ := client.Chats.Create(
ctx,
"gemini-2.0-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())
}
PUSHIMI
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GOOGLE_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."
}]
}
]
}'
Hyrja/dalja (I/O)
Duke filluar me Gemini 2.0 Flash , ekzekutimi i kodit mbështet hyrjen e skedarit dhe daljen e grafikut. Duke përdorur këto aftësi hyrëse dhe dalëse, mund të ngarkoni skedarë CSV dhe tekst, të bëni pyetje rreth skedarëve dhe të krijoni grafikët Matplotlib si pjesë e përgjigjes. Skedarët e daljes kthehen si imazhe inline në përgjigje.
Çmimi I/O
Kur përdorni I/O të ekzekutimit të kodit, ju tarifoheni për shenjat hyrëse dhe ato dalëse:
Shenjat hyrëse:
- Kërkesa e përdoruesit
Shenjat e daljes:
- Kodi i krijuar nga modeli
- Prodhimi i ekzekutimit të kodit në mjedisin e kodit
- Përmbledhja e krijuar nga modeli
Detajet I/O
Kur jeni duke punuar me ekzekutimin e kodit I/O, kini parasysh detajet teknike të mëposhtme:
- Koha maksimale e funksionimit të mjedisit të kodit është 30 sekonda.
- Nëse mjedisi i kodit gjeneron një gabim, modeli mund të vendosë të rigjenerojë daljen e kodit. Kjo mund të ndodhë deri në 5 herë.
- Madhësia maksimale e hyrjes së skedarit është e kufizuar nga dritarja e modelit të shenjës. Në AI Studio, duke përdorur Gemini Flash 2.0, madhësia maksimale e skedarit hyrës është 1 milion argumente (afërsisht 2 MB për skedarët e tekstit të llojeve të dhëna të mbështetura). 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ë së miri me tekst dhe skedarë CSV.
- Skedari hyrës mund të kalohet në
part.inlineData
osepart.fileData
(i ngarkuar nëpërmjet Files API ) dhe skedari i daljes kthehet gjithmonë sipart.inlineData
.
Kthesë e vetme | Dydrejtimëshe (Multimodal Live API) | |
---|---|---|
Modelet e mbështetura | Të gjitha modelet Gemini 2.0 | Vetëm modelet eksperimentale Flash |
Llojet e hyrjes së skedarëve të mbështetur | .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts | .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts |
Komplotimi i bibliotekave mbështetet | Matplotlib | Matplotlib |
Përdorimi me shumë mjete | Nr | po |
Faturimi
Nuk ka asnjë tarifë shtesë për aktivizimin e ekzekutimit të kodit nga Gemini API. Do të faturoheni me normën aktuale të kodeve hyrëse dhe dalëse bazuar në modelin Gemini që po përdorni.
Këtu janë disa gjëra të tjera për të ditur rreth faturimit për ekzekutimin e kodit:
- Ju faturoheni vetëm një herë për shenjat hyrëse që i kaloni modelit dhe faturoheni për shenjat përfundimtare të daljes që ju janë kthyer nga modeli.
- Shenjat që përfaqësojnë kodin e gjeneruar numërohen si shenja dalëse. Kodi i gjeneruar mund të përfshijë tekst dhe dalje multimodale si imazhe.
- Rezultatet e ekzekutimit të kodit llogariten gjithashtu si shenja dalëse.
Modeli i faturimit është paraqitur në diagramin e mëposhtëm:
- Faturoheni me normën aktuale të kodeve hyrëse dhe dalëse bazuar në modelin Gemini që po përdorni.
- Nëse Binjakët përdor ekzekutimin e kodit kur gjeneron përgjigjen tuaj, kërkesa origjinale, kodi i gjeneruar dhe rezultati i kodit të ekzekutuar etiketohen si shenja të ndërmjetme dhe faturohen si shenja hyrëse .
- Binjakët më pas gjenerojnë një përmbledhje dhe kthen kodin e gjeneruar, rezultatin e kodit të ekzekutuar dhe përmbledhjen përfundimtare. Këto faturohen si shenja dalëse .
- API Gemini përfshin një numërim të ndërmjetëm të shenjave në përgjigjen e API-së, kështu që ju e dini pse po merrni argumente shtesë hyrëse përtej kërkesës suaj fillestare.
Kufizimet
- Modeli mund të gjenerojë dhe ekzekutojë vetëm kod. Nuk mund të kthejë objekte të tjera si skedarët e medias.
- Në disa raste, aktivizimi i ekzekutimit të kodit mund të çojë në regresione në fusha të tjera të prodhimit të modelit (për shembull, shkrimi i një historie).
- Ka disa ndryshime në aftësinë e modeleve të ndryshme për të përdorur me sukses ekzekutimin e kodit.
Bibliotekat e mbështetura
Mjedisi i ekzekutimit të kodit përfshin bibliotekat e mëposhtme:
- attrs
- shahu
- konturpi
- fpdf
- gjeopandat
- imageio
- xhinja2
- joblib
- jsonschema
- jsonschema-specifikimet
- lxml
- matplotlib
- mpmath
- i mpirë
- opencv-python
- openpyxl
- ambalazhimi
- pandat
- jastëk
- protobuf
- pylatex
- pyparsing
- PyPDF2
- python-dateutil
- python-docx
- python-pptx
- laboratori i raporteve
- scikit-mësoj
- scipy
- të lindur në det
- gjashtë
- striprtf
- simpatike
- tabela
- tensorflow
- mjetz
- xlrd
Ju nuk mund të instaloni bibliotekat tuaja.
Çfarë është më pas
- Provoni ekzekutimin e kodit Colab .
- Mësoni rreth mjeteve të tjera të Gemini API: