Ejecutar código con la API de Gemini

La función de ejecución de código de la API de Gemini permite que el modelo genere y ejecute código Python, así como que aprenda de forma iterativa de los resultados hasta obtener un resultado final. Puedes usar esta función de ejecución de código para crear aplicaciones que se beneficien del razonamiento basado en código y que generen texto. Por ejemplo, puedes usar la ejecución de código en una aplicación que resuelva ecuaciones o procese texto.

La API de Gemini proporciona la ejecución de código como herramienta, de forma similar a las llamadas a funciones. Después de añadir la ejecución de código como herramienta, el modelo decide cuándo usarla.

Modelos admitidos

Limitaciones

  • La función no admite operaciones de entrada/salida de archivos.
  • La ejecución del código puede durar un máximo de 30 segundos antes de agotarse el tiempo.

Sintaxis de ejemplo

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":  {}
    }]
  }'

Lista de parámetros

Consulta los ejemplos para obtener más información sobre la implementación.

Python

Para habilitar la ejecución de código, especifica un tool en tu solicitud.

CodeExecution

Herramienta que ejecuta el código generado por el modelo y devuelve automáticamente el resultado al modelo. Consulta también ExecutableCode y CodeExecutionResult, que son la entrada y la salida de esta herramienta.

Part

executable_code

Opcional: ExecutableCode

Código generado por el modelo que se debe ejecutar.
Consulta Ejecución de código [API].

code_execution_result

Opcional: CodeExecutionResult

Resultado de la ejecución de [ExecutableCode].
Consulta Ejecución de código [API].

ExecutableCode

language

Obligatorio: string (enum)

Lenguajes de programación admitidos para el code generado.


Compatible:
  • PYTHON

code

Obligatorio: string

El código que se va a ejecutar.
Consulta Ejecución de código [API].

CodeExecutionResult

outcome

Obligatorio: string (enum)

Resultado de la ejecución del código.


Resultados posibles:
  • La ejecución del código se ha completado correctamente. (OUTCOME_OK)
  • La ejecución del código ha finalizado, pero se ha producido un error. stderr debe contener el motivo. (OUTCOME_FAILED)
  • La ejecución del código ha tardado demasiado y se ha cancelado. Puede que haya o no una salida parcial. (OUTCOME_DEADLINE_EXCEEDED)

output

Obligatorio: string

Contiene stdout cuando la ejecución del código se realiza correctamente; de lo contrario, contiene stderr u otra descripción.
Consulta Ejecución de código [API].

Ejemplos

A continuación, se muestran ilustraciones de cómo puedes enviar una consulta y declaraciones de funciones al modelo.

Caso práctico básico

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'

Habilitar la ejecución de código en el modelo

Para habilitar la ejecución de código básica, consulta Ejecución de código.

Siguientes pasos