La función de ejecución de código de la API de Gemini permite que el modelo genere y ejecute código de Python, y aprenda de forma iterativa a partir de los resultados hasta llegar a un resultado final. Puedes usar esta función de ejecución de código para compilar aplicaciones que se beneficien del razonamiento basado en código y que produzcan resultados de texto. Por ejemplo, puedes usar la ejecución de código en una aplicación que resuelva ecuaciones o procese texto.
La ejecución de código está disponible en AI Studio y en la API de Gemini. En AI Studio, puedes habilitar la ejecución de código en el panel derecho, en Herramientas. La API de Gemini proporciona la ejecución de código como una herramienta, similar a las llamadas a función. Después de agregar la ejecución de código como herramienta, el modelo decide cuándo usarla.
El entorno de ejecución de código incluye las siguientes bibliotecas: altair
, chess
, cv2
, matplotlib
, mpmath
, numpy
, pandas
, pdfminer
, reportlab
, seaborn
, sklearn
, statsmodels
, striprtf
, sympy
y tabulate
. No puedes instalar tus propias bibliotecas.
Comienza a usar la ejecución de código
También hay un notebook de ejecución de código disponible:
En esta sección, se supone que completaste los pasos de configuración que se muestran en la guía de inicio rápido.
Habilita la ejecución de código en el modelo
Puedes habilitar la ejecución de código en el modelo, como se muestra a continuación:
from google import genai
from google.genai import types
client = genai.Client(api_key="GEMINI_API_KEY ")
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
)]
)
)
En un notebook, puedes mostrar todo en formato Markdown con esta función auxiliar:
def display_code_execution_result(response):
for part in response.candidates[0].content.parts:
if part.text is not None:
display(Markdown(part.text))
if part.executable_code is not None:
code_html = f'<pre style="background-color: #BBBBEE;">{part.executable_code.code}</pre>' # Change code color
display(HTML(code_html))
if part.code_execution_result is not None:
display(Markdown(part.code_execution_result.output))
if part.inline_data is not None:
display(Image(data=part.inline_data.data, format="png"))
display(Markdown("---"))
display_code_execution_result(response)
El resultado podría ser similar al siguiente:
Bien, debo calcular la suma de los primeros 50 números primos. Usaré una secuencia de comandos de Python para generar los primeros 50 números primos y, luego, sumarlos.
```python def is_prime(n): """Checks if a number is prime.""" if n <= 1: return False for i in range(2, int(n**0.5) + 1): if n % i == 0: return False return True def sum_of_primes(n): """Calculates the sum of the first n prime numbers.""" primes = [] i = 2 while len(primes) < n: if is_prime(i): primes.append(i) i += 1 return sum(primes) # Calculate the sum of the first 50 prime numbers sum_of_first_50_primes = sum_of_primes(50) print(f"The sum of the first 50 prime numbers is: {sum_of_first_50_primes}") ``` **Output:** ``` The sum of the first 50 prime numbers is: 5117 ```
Usa la ejecución de código en el chat
También puedes usar la ejecución de código como parte de un chat.
from google import genai
from google.genai import types
client = genai.Client(api_key="GEMINI_API_KEY ")
chat = client.chats.create(
model='gemini-2.0-flash',
config=types.GenerateContentConfig(
tools=[types.Tool(
code_execution=types.ToolCodeExecution
)]
)
)
response = chat.send_message("Can you run some code to bogo-sort this list of numbers?: [2,34,1,65,4]")
display_code_execution_result(response)
La conversación podría continuar de esta manera:
Entiendo que quieres que ordene la lista [2, 34, 1, 65, 4] por el método Bogosort. Bogosort es un algoritmo de ordenamiento notoriamente ineficiente. Para ello, se revuelve la lista de forma repetida hasta que se ordena. Debido a su rendimiento extremadamente bajo, no es práctico para listas de cualquier tamaño significativo.
Sin embargo, a modo de demostración, puedo ejecutar una versión simplificada para una cantidad muy limitada de iteraciones, solo para mostrar el proceso. ¿Debo continuar?
response = chat.send_message("Yes, please create the code.")
display_code_execution_result(response)
De acuerdo,procederé con una función que mezcle la lista y verifique si está ordenada. Lo ejecutaré por un máximo de 10 iteraciones. …
Entrada/salida (E/S)
A partir de Gemini 2.0 Flash, la ejecución de código admite la entrada de archivos y la salida de gráficos. Con estas nuevas capacidades de entrada y salida, puedes subir archivos CSV y de texto, hacer preguntas sobre los archivos y generar gráficos de Matplotlib como parte de la respuesta.
Precios de E/S
Cuando usas E/S de ejecución de código, se te cobra por los tokens de entrada y salida:
Tokens de entrada:
- Instrucción del usuario
Tokens de salida:
- Código generado por el modelo
- Resultado de la ejecución de código en el entorno de código
- Resumen generado por el modelo
Detalles de E/S
Cuando trabajes con E/S de ejecución de código, ten en cuenta los siguientes detalles técnicos:
- El tiempo de ejecución máximo del entorno de código es de 30 segundos.
- Si el entorno de código genera un error, el modelo puede decidir volver a generar el resultado del código. Esto puede suceder hasta 5 veces.
- El tamaño máximo de entrada de archivo está limitado por la ventana de tokens del modelo. En AI Studio, con Gemini Flash 2.0, el tamaño máximo del archivo de entrada es de 1 millón de tokens (alrededor de 2 MB para los archivos de texto de los tipos de entrada admitidos). Si subes un archivo demasiado grande, AI Studio no te permitirá enviarlo.
Un solo turno | Bidireccional (API de Multimodal Live) | |
---|---|---|
Modelos compatibles | Todos los modelos de Gemini 2.0 | Solo modelos experimentales de Flash |
Tipos de entrada de archivos admitidos | .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts | .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts |
Bibliotecas de trazado compatibles | Matplotlib | Matplotlib |
Uso de varias herramientas | No | Sí |
Facturación
No se cobran cargos adicionales por habilitar la ejecución de código desde la API de Gemini. Se te facturará a la tarifa actual de tokens de entrada y salida según el modelo de Gemini que uses.
A continuación, se incluyen otros aspectos que debes tener en cuenta sobre la facturación de la ejecución de código:
- Solo se te factura una vez por los tokens de entrada que pasas al modelo y por los tokens de salida finales que te muestra el modelo.
- Los tokens que representan el código generado se cuentan como tokens de salida. El código generado puede incluir texto y salidas multimodales, como imágenes.
- Los resultados de la ejecución de código también se cuentan como tokens de salida.
El modelo de facturación se muestra en el siguiente diagrama:
- Se te factura a la tarifa actual de tokens de entrada y salida según el modelo de Gemini que uses.
- Si Gemini usa la ejecución de código cuando genera tu respuesta, la instrucción original, el código generado y el resultado del código ejecutado se etiquetan como tokens intermedios y se facturan como tokens de entrada.
- Luego, Gemini genera un resumen y muestra el código generado, el resultado del código ejecutado y el resumen final. Estos se facturan como tokens de salida.
- La API de Gemini incluye un recuento de tokens intermedios en la respuesta de la API, por lo que debes saber por qué recibes tokens de entrada adicionales más allá de tu instrucción inicial.
Limitaciones
- El modelo solo puede generar y ejecutar código. No puede mostrar otros artefactos, como archivos multimedia.
- En algunos casos, habilitar la ejecución de código puede generar regresiones en otras áreas del resultado del modelo (por ejemplo, escribir una historia).
- Hay cierta variación en la capacidad de los diferentes modelos para usar la ejecución de código con éxito.