הרצת קוד באמצעות Gemini API

התכונה 'הרצת קוד' ב-Gemini API מאפשרת למודל ליצור ולהריץ קוד Python וללמוד באופן איטרטיבי מהתוצאות עד שהוא מגיע לפלט סופי. אתם יכולים להשתמש ביכולת הזו להרצת קוד כדי ליצור אפליקציות שמפיקות תועלת מחשיבה רציונלית שמבוססת על קוד ומייצרות פלט טקסטואלי. לדוגמה, אפשר להשתמש בהרצת קוד באפליקציה שפותרת משוואות או מעבדת טקסט.

‫Gemini API מספק כלי להרצת קוד, בדומה לקריאה לפונקציה. אחרי שמוסיפים את הפעלת הקוד ככלי, המודל מחליט מתי להשתמש בו.

מודלים נתמכים

מגבלות

  • התכונה לא תומכת בקלט/פלט של קבצים.
  • הביצוע של הקוד יכול להימשך עד 30 שניות לפני שחלף הזמן הקצוב לתפוגה.

תחביר לדוגמה

curl

PROJECT_ID = myproject
REGION = us-central1
MODEL_ID = gemini-2.0-flash-001

https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:generateContent \
  -d '{
    "contents": [{
      ...
    }],
    "tools": [{
      "code_execution":  {}
    }]
  }'

רשימת פרמטרים

פרטים על ההטמעה מופיעים בדוגמאות.

Python

כדי להפעיל את הרצת הקוד, מציינים את tool הרצת הקוד בבקשה.

CodeExecution

כלי שמריץ קוד שנוצר על ידי המודל ומחזיר את התוצאה למודל באופן אוטומטי. אפשר לעיין גם בExecutableCode ובCodeExecutionResult, שהם קלט ופלט של הכלי הזה.

Part

executable_code

אופציונלי: ExecutableCode

קוד שנוצר על ידי המודל ומיועד להרצה.
מידע נוסף על הרצת קוד [API]

code_execution_result

אופציונלי: CodeExecutionResult

התוצאה של הפעלת [ExecutableCode].
מידע נוסף על הרצת קוד [API]

ExecutableCode

language

חובה: string (enum)

שפות התכנות הנתמכות עבור הקובץ code שנוצר.


נתמך:
  • PYTHON

code

חובה: string

הקוד שיופעל.
מידע נוסף על הרצת קוד [API]

CodeExecutionResult

outcome

חובה: string (enum)

התוצאה של הרצת הקוד.


תוצאות אפשריות:
  • ביצוע הקוד הושלם בהצלחה. (OUTCOME_OK)
  • ביצוע הקוד הסתיים, אבל עם כשל. הפרמטר stderr צריך להכיל את הסיבה. (OUTCOME_FAILED)
  • ההרצה של הקוד נמשכה יותר מדי זמן והיא בוטלה. יכול להיות שיוצג פלט חלקי, ויכול להיות שלא. (OUTCOME_DEADLINE_EXCEEDED)

output

חובה: string

הערך stdout מופיע אם הפעלת הקוד הצליחה, stderr או תיאור אחר אם לא.
מידע נוסף על הרצת קוד [API]

דוגמאות

בדוגמאות הבאות אפשר לראות איך שולחים שאילתה והצהרות על פונקציות למודל.

תרחיש שימוש בסיסי

curl

PROJECT_ID = myproject
REGION = us-central1
MODEL_ID = gemini-2.0-flash-001

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:generateContent \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Calculate 20th fibonacci number. Then find the nearest palindrome to it."
      }]
    }],
    "tools": [{'codeExecution': {}}],
  }'

Python

from google import genai
from google.genai.types import Tool, ToolCodeExecution, GenerateContentConfig

client = genai.Client()
model_id = "gemini-2.0-flash-001"

code_execution_tool = Tool(
    code_execution=ToolCodeExecution()
)
response = client.models.generate_content(
    model=model_id,
    contents="Calculate 20th fibonacci number. Then find the nearest palindrome to it.",
    config=GenerateContentConfig(
        tools=[code_execution_tool],
        temperature=0,
    ),
)
for part in response.candidates[0].content.parts:
    if part.executable_code:
        print(part.executable_code)
    if part.code_execution_result:
        print(part.code_execution_result)
# Example response:
# code='...' language='PYTHON'
# outcome='OUTCOME_OK' output='The 20th Fibonacci number is: 6765\n'
# code='...' language='PYTHON'
# outcome='OUTCOME_OK' output='Lower Palindrome: 6666\nHigher Palindrome: 6776\nNearest Palindrome to 6765: 6776\n'

הפעלת הרצת קוד במודל

כדי להפעיל הרצת קוד בסיסית, אפשר לעיין במאמר בנושא הרצת קוד.

המאמרים הבאים