Gemini API ابزار اجرای کدی ارائه میدهد که مدل را قادر میسازد کد Python تولید و اجرا کند. سپس مدل میتواند بهصورت تکراری از نتایج اجرای کد یاد بگیرد تا به برونداد نهایی برسد. میتوانید از اجرای کد برای ساختن برنامههایی که از استدلال مبتنی بر کد بهره میبرند استفاده کنید. برای مثال، میتوانید از اجرای کد برای حل معادلات یا پردازش نوشتار استفاده کنید. همچنین میتوانید از کتابخانههای موجود در محیط اجرای کد برای انجام کارهای تخصصیتر استفاده کنید.
Gemini فقط میتواند کد را در Python اجرا کند. همچنان میتوانید از Gemini بخواهید به زبان دیگری کد تولید کند، اما مدل نمیتواند از ابزار اجرای کد برای اجرای آن استفاده کند.
فعال کردن اجرای کد
برای فعال کردن اجرای کد، ابزار اجرای کد را در مدل پیکربندی کنید. این کار به مدل اجازه میدهد کد تولید و اجرا کند.
Python
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3.8-flash",
input="What is the sum of the first 50 prime numbers? "
"Generate and run code for the calculation, and make sure you get all 50.",
tools=[{"type": "code_execution"}]
)
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 step.type == "code_execution_call":
print(step.arguments.code)
elif step.type == "code_execution_result":
print(step.result)
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
model: "gemini-3.8-flash",
input: "What is the sum of the first 50 prime numbers? " +
"Generate and run code for the calculation, and make sure you get all 50.",
tools: [{ type: "code_execution" }]
});
for (const step of interaction.steps) {
if (step.type === "model_output") {
for (const contentBlock of step.content) {
if (contentBlock.type === "text") {
console.log(contentBlock.text);
}
}
} else if (step.type === "code_execution_call") {
console.log(step.arguments.code);
} else if (step.type === "code_execution_result") {
console.log(step.result);
}
}
جاوا
import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CodeExecution;
import com.google.genai.gaos.models.interactions.CodeExecutionCallStep;
import com.google.genai.gaos.models.interactions.CodeExecutionResultStep;
import com.google.genai.gaos.models.interactions.Content;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.ModelOutputStep;
import com.google.genai.gaos.models.interactions.Step;
import com.google.genai.gaos.models.interactions.TextContent;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import java.util.Arrays;
import java.util.Collections;
Client client = new Client();
CreateModelInteraction params =
CreateModelInteraction.builder()
.model("gemini-3.8-flash")
.input(
InteractionsInput.of(
"What is the sum of the first 50 prime numbers? "
+ "Generate and run code for the calculation, and make sure you get all 50."))
.tools(Arrays.asList(CodeExecution.builder().build()))
.build();
Interaction interaction =
client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();
for (Step step : interaction.steps().orElse(Collections.emptyList())) {
if (step instanceof ModelOutputStep) {
ModelOutputStep outputStep = (ModelOutputStep) step;
for (Content contentBlock : outputStep.content().orElse(Collections.emptyList())) {
if (contentBlock instanceof TextContent) {
System.out.println(((TextContent) contentBlock).text().orElse(""));
}
}
} else if (step instanceof CodeExecutionCallStep) {
CodeExecutionCallStep callStep = (CodeExecutionCallStep) step;
callStep.arguments().ifPresent(args -> System.out.println(args.code().orElse("")));
} else if (step instanceof CodeExecutionResultStep) {
CodeExecutionResultStep resultStep = (CodeExecutionResultStep) step;
System.out.println(resultStep.result().orElse(""));
}
}
رفتن
package main
import (
"context"
"fmt"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.8-flash"),
Input: interactions.NewInteractionsInput(
"What is the sum of the first 50 prime numbers? " +
"Generate and run code for the calculation, and make sure you get all 50.",
),
Tools: []interactions.Tool{
interactions.NewTool(interactions.CodeExecution{}),
},
}),
})
if err != nil {
log.Fatal(err)
}
for _, step := range res.Interaction.Steps {
if outStep := step.ModelOutputStep; outStep != nil {
for _, contentBlock := range outStep.Content {
if textContent := contentBlock.TextContent; textContent != nil {
fmt.Println(textContent.GetText())
}
}
} else if callStep := step.CodeExecutionCallStep; callStep != nil {
if code := callStep.Arguments.GetCode(); code != nil {
fmt.Println(*code)
}
} else if resultStep := step.CodeExecutionResultStep; resultStep != nil {
fmt.Println(resultStep.GetResult())
}
}
}
استراحت
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.8-flash",
"input": "What is the sum of the first 50 prime numbers? Generate and run code for the calculation, and make sure you get all 50.",
"tools": [{"type": "code_execution"}]
}'
خروجی ممکن است چیزی شبیه به موارد زیر باشد که برای خوانایی قالببندی شده است:
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.
این خروجی چندین بخش محتوا را که مدل هنگام استفاده از اجرای کد برمیگرداند ترکیب میکند:
-
text: نوشتار درونخطی تولیدشده توسط مدل -
code_execution_call: کد تولیدشده توسط مدل که برای اجرا درنظر گرفته شده است -
code_execution_result: نتیجه کد اجرایی
Code Execution with images (Gemini 3)
مدل Gemini 3 Flash اکنون میتواند کد Python بنویسد و اجرا کند تا بهطور فعال تصاویر را دستکاری و بازرسی کند.
موارد استفاده
- بزرگنمایی و بازرسی: مدل بهطور ضمنی تشخیص میدهد که جزئیات خیلی کوچک هستند (مثلاً خواندن یک سنجش از دور) و کد را برای برش و بررسی مجدد ناحیه با وضوح بالاتر مینویسد.
- ریاضیات تصویری: این مدل میتواند محاسبات چندمرحلهای را بااستفاده از کد اجرا کند (برای نمونه، جمع کردن ردیفهای رسید).
- برچسبگذاری تصویر: مدل میتواند تصاویر را برچسبگذاری کند تا به سؤالات پاسخ دهد، مثلاً با کشیدن پیکان روابط را نشان دهد.
فعال کردن «اجرای کد» با تصاویر
«اجرای کد» با تصاویر بهطور رسمی در Gemini 3 Flash پشتیبانی میشود. میتوانید این رفتار را با فعال کردن «اجرای کد» بهعنوان ابزار و «استدلال» فعال کنید.
Python
from google import genai
import requests
import base64
from PIL import Image
import io
image_path = "https://goo.gle/instrument-img"
image_bytes = requests.get(image_path).content
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3.8-flash",
input=[
{"type": "image", "data": base64.b64encode(image_bytes).decode('utf-8'), "mime_type": "image/jpeg"},
{"type": "text", "text": "Zoom into the expression pedals and tell me how many pedals are there?"}
],
tools=[{"type": "code_execution"}]
)
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":
img = Image.open(io.BytesIO(base64.b64decode(content_block.data)))
img.show() # or: img.save("output_image.jpg")
elif step.type == "code_execution_call":
print(step.arguments.code)
elif step.type == "code_execution_result":
print(step.result)
JavaScript
import { GoogleGenAI } from "@google/genai";
async function main() {
const client = new GoogleGenAI({});
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.8-flash",
input: [
{
type: "image",
data: base64ImageData,
mime_type: "image/jpeg"
},
{ type: "text", text: "Zoom into the expression pedals and tell me how many pedals are there?" }
],
tools: [{ type: "code_execution" }]
});
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(`\nGenerated Code:\n`, step.arguments.code);
} else if (step.type === "code_execution_result") {
console.log(`\nExecution Output:\n`, step.result);
}
}
}
main();
جاوا
import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CodeExecution;
import com.google.genai.gaos.models.interactions.CodeExecutionCallStep;
import com.google.genai.gaos.models.interactions.CodeExecutionResultStep;
import com.google.genai.gaos.models.interactions.Content;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.ImageContent;
import com.google.genai.gaos.models.interactions.ImageContentMimeType;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.ModelOutputStep;
import com.google.genai.gaos.models.interactions.Step;
import com.google.genai.gaos.models.interactions.TextContent;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import java.io.InputStream;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Base64;
import java.util.Collections;
String imageUrl = "https://goo.gle/instrument-img";
byte[] imageBytes;
try (InputStream in = URI.create(imageUrl).toURL().openStream()) {
imageBytes = in.readAllBytes();
}
String base64Image = Base64.getEncoder().encodeToString(imageBytes);
Client client = new Client();
CreateModelInteraction params =
CreateModelInteraction.builder()
.model("gemini-3.8-flash")
.input(
InteractionsInput.ofContent(
Arrays.asList(
ImageContent.builder()
.data(base64Image)
.mimeType(ImageContentMimeType.IMAGE_JPEG)
.build(),
TextContent.builder()
.text(
"Zoom into the expression pedals and tell me how many pedals are there?")
.build())))
.tools(Arrays.asList(CodeExecution.builder().build()))
.build();
Interaction interaction =
client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();
for (Step step : interaction.steps().orElse(Collections.emptyList())) {
if (step instanceof ModelOutputStep) {
ModelOutputStep outputStep = (ModelOutputStep) step;
for (Content contentBlock : outputStep.content().orElse(Collections.emptyList())) {
if (contentBlock instanceof TextContent) {
System.out.println(((TextContent) contentBlock).text().orElse(""));
} else if (contentBlock instanceof ImageContent) {
ImageContent imgContent = (ImageContent) contentBlock;
if (imgContent.data().isPresent()) {
byte[] decoded = Base64.getDecoder().decode(imgContent.data().get());
Files.write(Paths.get("output_image.jpg"), decoded);
}
}
}
} else if (step instanceof CodeExecutionCallStep) {
CodeExecutionCallStep callStep = (CodeExecutionCallStep) step;
callStep.arguments().ifPresent(args -> System.out.println(args.code().orElse("")));
} else if (step instanceof CodeExecutionResultStep) {
CodeExecutionResultStep resultStep = (CodeExecutionResultStep) step;
System.out.println(resultStep.result().orElse(""));
}
}
رفتن
package main
import (
"context"
"encoding/base64"
"fmt"
"io"
"log"
"net/http"
"os"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
imageURL := "https://goo.gle/instrument-img"
httpResp, err := http.Get(imageURL)
if err != nil {
log.Fatal(err)
}
defer httpResp.Body.Close()
imageBytes, err := io.ReadAll(httpResp.Body)
if err != nil {
log.Fatal(err)
}
base64Image := base64.StdEncoding.EncodeToString(imageBytes)
res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.8-flash"),
Input: interactions.NewInteractionsInput([]interactions.Content{
interactions.NewContent(interactions.ImageContent{
Data: genai.Ptr(base64Image),
MimeType: interactions.ImageContentMimeType("image/jpeg").ToPointer(),
}),
interactions.NewContent(interactions.TextContent{
Text: "Zoom into the expression pedals and tell me how many pedals are there?",
}),
}),
Tools: []interactions.Tool{
interactions.NewTool(interactions.CodeExecution{}),
},
}),
})
if err != nil {
log.Fatal(err)
}
for _, step := range res.Interaction.Steps {
if outStep := step.ModelOutputStep; outStep != nil {
for _, contentBlock := range outStep.Content {
if textContent := contentBlock.TextContent; textContent != nil {
fmt.Println(textContent.GetText())
} else if imgContent := contentBlock.ImageContent; imgContent != nil && imgContent.Data != nil {
decoded, err := base64.StdEncoding.DecodeString(*imgContent.Data)
if err == nil {
_ = os.WriteFile("output_image.jpg", decoded, 0644)
}
}
}
} else if callStep := step.CodeExecutionCallStep; callStep != nil {
if code := callStep.Arguments.GetCode(); code != nil {
fmt.Println(*code)
}
} else if resultStep := step.CodeExecutionResultStep; resultStep != nil {
fmt.Println(resultStep.GetResult())
}
}
}
استراحت
IMG_URL="https://goo.gle/instrument-img"
MODEL="gemini-3.8-flash"
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
# Use jq to create the JSON payload to avoid "Argument list too long" error with large base64 strings
echo -n "$IMAGE_B64" > image_b64.txt
jq -n \
--rawfile b64 image_b64.txt \
--arg mime "$MIME_TYPE" \
'{
model: "gemini-3.8-flash",
input: [
{type: "image", data: $b64, mime_type: $mime},
{type: "text", text: "Zoom into the expression pedals and tell me how many pedals are there?"}
],
tools: [{type: "code_execution"}]
}' > payload.json
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d @payload.json
استفاده از اجرای کد در تعاملهای چندنوبتی
همچنین میتوانید از اجرای کد بهعنوان بخشی از مکالمه چند نوبتی بااستفاده از
previous_interaction_id استفاده کنید.
Python
from google import genai
client = genai.Client()
interaction1 = client.interactions.create(
model="gemini-3.8-flash",
input="I have a math question for you.",
tools=[{"type": "code_execution"}]
)
print(interaction1.output_text)
interaction2 = client.interactions.create(
model="gemini-3.8-flash",
previous_interaction_id=interaction1.id,
input="What is the sum of the first 50 prime numbers? "
"Generate and run code for the calculation, and make sure you get all 50.",
tools=[{"type": "code_execution"}]
)
for step in interaction2.steps:
if step.type == "model_output":
for content_block in step.content:
if content_block.type == "text":
print(content_block.text)
elif step.type == "code_execution_call":
print(step.arguments.code)
elif step.type == "code_execution_result":
print(step.result)
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction1 = await client.interactions.create({
model: "gemini-3.8-flash",
input: "I have a math question for you.",
tools: [{ type: "code_execution" }]
});
console.log(interaction1.output_text);
const interaction2 = await client.interactions.create({
model: "gemini-3.8-flash",
previous_interaction_id: interaction1.id,
input: "What is the sum of the first 50 prime numbers? " +
"Generate and run code for the calculation, and make sure you get all 50.",
tools: [{ type: "code_execution" }]
});
for (const step of interaction2.steps) {
if (step.type === "model_output") {
for (const contentBlock of step.content) {
if (contentBlock.type === "text") {
console.log(contentBlock.text);
}
}
} else if (step.type === "code_execution_call") {
console.log(step.arguments.code);
} else if (step.type === "code_execution_result") {
console.log(step.result);
}
}
جاوا
import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CodeExecution;
import com.google.genai.gaos.models.interactions.CodeExecutionCallStep;
import com.google.genai.gaos.models.interactions.CodeExecutionResultStep;
import com.google.genai.gaos.models.interactions.Content;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.ModelOutputStep;
import com.google.genai.gaos.models.interactions.Step;
import com.google.genai.gaos.models.interactions.TextContent;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import java.util.Arrays;
import java.util.Collections;
Client client = new Client();
CreateModelInteraction params1 =
CreateModelInteraction.builder()
.model("gemini-3.8-flash")
.input(InteractionsInput.of("I have a math question for you."))
.tools(Arrays.asList(CodeExecution.builder().build()))
.build();
Interaction interaction1 =
client.interactions.create(CreateInteractionRequestBody.of(params1)).interaction().get();
System.out.println(interaction1.outputText().orElse(""));
CreateModelInteraction params2 =
CreateModelInteraction.builder()
.model("gemini-3.8-flash")
.previousInteractionId(interaction1.id().get())
.input(
InteractionsInput.of(
"What is the sum of the first 50 prime numbers? "
+ "Generate and run code for the calculation, and make sure you get all 50."))
.tools(Arrays.asList(CodeExecution.builder().build()))
.build();
Interaction interaction2 =
client.interactions.create(CreateInteractionRequestBody.of(params2)).interaction().get();
for (Step step : interaction2.steps().orElse(Collections.emptyList())) {
if (step instanceof ModelOutputStep) {
ModelOutputStep outputStep = (ModelOutputStep) step;
for (Content contentBlock : outputStep.content().orElse(Collections.emptyList())) {
if (contentBlock instanceof TextContent) {
System.out.println(((TextContent) contentBlock).text().orElse(""));
}
}
} else if (step instanceof CodeExecutionCallStep) {
CodeExecutionCallStep callStep = (CodeExecutionCallStep) step;
callStep.arguments().ifPresent(args -> System.out.println(args.code().orElse("")));
} else if (step instanceof CodeExecutionResultStep) {
CodeExecutionResultStep resultStep = (CodeExecutionResultStep) step;
System.out.println(resultStep.result().orElse(""));
}
}
رفتن
package main
import (
"context"
"fmt"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
res1, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.8-flash"),
Input: interactions.NewInteractionsInput("I have a math question for you."),
Tools: []interactions.Tool{
interactions.NewTool(interactions.CodeExecution{}),
},
}),
})
if err != nil {
log.Fatal(err)
}
if res1.Interaction.OutputText != nil {
fmt.Println(*res1.Interaction.OutputText)
}
res2, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.8-flash"),
PreviousInteractionID: res1.Interaction.ID,
Input: interactions.NewInteractionsInput(
"What is the sum of the first 50 prime numbers? " +
"Generate and run code for the calculation, and make sure you get all 50.",
),
Tools: []interactions.Tool{
interactions.NewTool(interactions.CodeExecution{}),
},
}),
})
if err != nil {
log.Fatal(err)
}
for _, step := range res2.Interaction.Steps {
if outStep := step.ModelOutputStep; outStep != nil {
for _, contentBlock := range outStep.Content {
if textContent := contentBlock.TextContent; textContent != nil {
fmt.Println(textContent.GetText())
}
}
} else if callStep := step.CodeExecutionCallStep; callStep != nil {
if code := callStep.Arguments.GetCode(); code != nil {
fmt.Println(*code)
}
} else if resultStep := step.CodeExecutionResultStep; resultStep != nil {
fmt.Println(resultStep.GetResult())
}
}
}
REST
# First turn
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.8-flash",
"input": "I have a math question for you.",
"tools": [{"type": "code_execution"}]
}')
INTERACTION_ID=$(echo $RESPONSE1 | jq -r '.id')
# Second turn with previous_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.8-flash",
"previous_interaction_id": "'"$INTERACTION_ID"'",
"input": "What is the sum of the first 50 prime numbers? Generate and run code for the calculation, and make sure you get all 50.",
"tools": [{"type": "code_execution"}]
}'
ورودی/خروجی (I/O)
در مدلهای فعلی Gemini مانند Gemini 3.8 Flash، اجرای کد از ورودی فایل و خروجی نمودار پشتیبانی میکند. بااستفاده از این قابلیتهای ورودی و خروجی، میتوانید فایلهای CSV و نوشتاری بارگذاری کنید، درباره فایلها سؤال بپرسید، و نمودارهای Matplotlib را بهعنوان بخشی از پاسخ تولید کنید. فایلهای خروجی بهعنوان تصاویر درونخطی در پاسخ برگردانده میشوند.
قیمتگذاری ورودی/خروجی
هنگام استفاده از ورودی/خروجی اجرای کد، هزینه توکنهای ورودی و توکنهای خروجی از شما کسر میشود:
دادهواحدهای ورودی:
- پیامواره کاربر
دادهواحدهای برونداد:
- کد تولیدشده توسط مدل
- برونداد اجرای کد در محیط کد
- دادهواحدهای فکر کردن
- خلاصه تولیدشده توسط مدل
جزئیات ورودی/خروجی
هنگام کار با ورودی/خروجی اجرای کد، به جزئیات فنی زیر توجه داشته باشید:
- حداکثر زمان اجرای محیط کد ۳۰ ثانیه است.
- اگر محیط کد خطایی ایجاد کند، مدل ممکن است تصمیم بگیرد خروجی کد را بازتولید کند. این کار را میتوانید حداکثر ۵ بار انجام دهید.
- حداکثر اندازه فایل ورودی با پنجره توکن مدل محدود میشود. اگر فایلی بارگذاری کنید که از حداکثر پنجره بافت مدل فراتر رود، میانای برنامهسازی کاربردی خطا برمیگرداند.
- اجرای کد با فایلهای نوشتاری و CSV بهترین عملکرد را دارد.
- فایل ورودی را میتوان بهعنوان داده درونخطی ارسال کرد یا بااستفاده از Files API بارگذاری کرد، و فایل خروجی همیشه بهعنوان داده درونخطی برگردانده میشود.
صورتحساب
برای فعال کردن اجرای کد از Gemini API، هزینه اضافی دریافت نمیشود. صورتحساب شما براساس نرخ فعلی برای هر توکن ورودی و خروجی و براساس مدل Gemini که استفاده میکنید صادر خواهد شد.
در اینجا چند نکته دیگر درباره صدور صورتحساب برای اجرای کد آورده شده است:
- فقط یکبار برای نشانههای ورودی که به مدل میدهید از شما هزینه کسر میشود و برای نشانههای برونداد نهایی که مدل به شما برمیگرداند از شما هزینه کسر میشود.
- دادهواحدهایی که نشاندهنده کد تولیدشده هستند بهعنوان دادهواحد برونداد محاسبه میشوند. کد تولیدشده میتواند شامل نوشتار و برونداد چندحالتی مثل تصویر باشد.
- نتایج اجرای کد نیز بهعنوان دادهواحدهای برونداد محسوب میشوند.
مدل صدور صورتحساب در نمودار زیر نشان داده شده است:

- براساس مدل Gemini که استفاده میکنید، هزینه براساس نرخ فعلی واحد ورودی و خروجی از شما کسر میشود.
- اگر Gemini هنگام تولید پاسخ شما از اجرای کد استفاده کند، پیامواره اصلی، کد تولیدشده، و نتیجه کد اجراشده بهعنوان دادهواحد میانی برچسبگذاری میشوند و بهعنوان دادهواحد ورودی صورتحساب میشوند.
- سپس Gemini خلاصهای تولید میکند و کد تولیدشده، نتیجه کد اجراشده، و خلاصه نهایی را برمیگرداند. این موارد بهعنوان دادهواحدهای برونداد صورتحساب میشوند.
- «میانای برنامهسازی کاربردی Gemini» تعداد نشانهای واسطه را در پاسخ API اضافه میکند، بنابراین میدانید چرا نشانهای ورودی اضافی فراتر از پیامواره اولیه خود دریافت میکنید.
محدودیتها
- مدل فقط میتواند کد تولید و اجرا کند. نمیتواند مصنوعات دیگر مثل فایلهای رسانهای را برگرداند.
- در برخی موارد، فعال کردن اجرای کد میتواند منجر به پسرفت در سایر حوزههای برونداد مدل (برای مثال، نوشتن داستان) شود.
- توانایی مدلهای مختلف در استفاده موفقیتآمیز از اجرای کد متفاوت است.
ترکیبهای ابزار پشتیبانیشده
ابزار اجرای کد را میتوان با پایهمندسازی با «جستجوی Google» ترکیب کرد تا موارد استفاده پیچیدهتری را پشتیبانی کند.
مدلهای Gemini 4 و Gemini 3 از ترکیب ابزارهای داخلی (مثل «اجرای کد») با ابزارهای سفارشی (فراخوانی تابع) پشتیبانی میکنند.
کتابخانههای پشتیبانیشده
محیط اجرای کد شامل کتابخانههای زیر است:
- attrs
- شطرنج
- contourpy
- fpdf
- geopandas
- imageio
- jinja2
- joblib
- jsonschema
- jsonschema-specifications
- lxml
- matplotlib
- mpmath
- numpy
- opencv-python
- openpyxl
- بستهبندی
- پانداها
- بالش
- protobuf
- pylatex
- pyparsing
- PyPDF2
- python-dateutil
- python-docx
- python-pptx
- reportlab
- scikit-learn
- scipy
- seaborn
- شش
- striprtf
- sympy
- جدولبندی کردن
- tensorflow
- toolz
- xlrd
نمیتوانید کتابخانههای خودتان را نصب کنید.
قدم بعدی چیست
- شروع سریع «میانای برنامهسازی کاربردی تعاملها» را امتحان کنید.
- با ابزارهای دیگر «میانای برنامهسازی کاربردی Gemini» آشنا شوید: