For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegación principal
Theme

Intérprete de código

Permite que los modelos escriban y ejecuten código Python para resolver problemas.

El intérprete de código permite que los modelos escriban y ejecuten código Python en un sandbox para resolver problemas complejos en áreas como el análisis de datos, la programación y las matemáticas. Úsalo para:

  • Procesar archivos con distintos tipos de datos y formatos.
  • Generar archivos con datos e imágenes de gráficos.
  • Escribir y ejecutar código de forma iterativa para resolver problemas. Por ejemplo, si el modelo escribe código que falla al ejecutarse, puede reescribirlo y volver a ejecutarlo hasta que funcione.
  • Examinar imágenes con gpt-6-astra. El intérprete de código puede usar Python para recortar, ampliar o rotar imágenes, o para leer píxeles individuales.

Este ejemplo muestra cómo llamar a la API de Responses para que el modelo use el intérprete de código:

Usa la API de Responses con el intérprete de código
curl https://api.openai.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-6-astra",
    "tools": [{
      "type": "code_interpreter",
      "container": { "type": "auto", "memory_limit": "4g" }
    }],
    "instructions": "You are a personal math tutor. When asked a math question, write and run code using the python tool to answer the question.",
    "input": "I need to solve the equation 3x + 11 = 14. Can you help me?"
  }'

Llamamos a esta herramienta intérprete de código, pero el modelo la conoce como la “herramienta de Python”. Los modelos suelen entender los prompts que mencionan el intérprete de código, aunque la forma más explícita de invocarlo es pedir en el prompt que el modelo use “la herramienta de Python”.

Contenedores

El intérprete de código requiere un objeto de contenedor. Un contenedor es una máquina virtual completamente aislada en un sandbox donde el modelo puede ejecutar código Python. Puede contener tanto archivos que subas como archivos que genere el modelo.

Puedes crear contenedores de forma automática o explícita.

  1. Modo automático: como en el ejemplo anterior, al crear un objeto Response, pasa la propiedad "container": { "type": "auto", "memory_limit": "4g", "file_ids": ["file-1", "file-2"] } en la configuración de la herramienta. Así se crea automáticamente un contenedor o se reutiliza uno activo que ya se usó en una llamada anterior, registrada en el contexto del modelo como un elemento code_interpreter_call. Si omites memory_limit, el contenedor conserva el nivel predeterminado de 1 GB. Busca el elemento code_interpreter_call en la respuesta a esta solicitud de la API para encontrar el container_id del contenedor que se creó o se reutilizó.
  2. Modo explícito: crea un contenedor mediante el punto de acceso v1/containers e indica el memory_limit que necesitas (por ejemplo, "memory_limit": "4g"). Luego asigna su id como valor de container en la configuración de la herramienta del objeto Response. Por ejemplo:
Crea un contenedor de forma explícita
curl https://api.openai.com/v1/containers \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "name": "My Container",
        "memory_limit": "4g"
      }'

# Use the returned container id in the next call:
curl https://api.openai.com/v1/responses \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-astra",
    "tools": [{
      "type": "code_interpreter",
      "container": "cntr_abc123"
    }],
    "tool_choice": "required",
    "input": "use the python tool to calculate what is 4 * 3.82. and then find its square root and then find the square root of that result"
  }'

Puedes elegir entre 1g (predeterminado), 4g, 16g y 64g. Los niveles superiores ofrecen más RAM para la sesión y se facturan según las tarifas de las herramientas integradas correspondientes al intérprete de código. El valor de memory_limit que elijas se aplica durante toda la vida del contenedor, tanto si lo creas automáticamente como si usas la API de contenedores.

También puedes acceder a los contenedores creados en modo automático mediante el punto de acceso /v1/containers.

Vencimiento

Te recomendamos especialmente que trates los contenedores como temporales y guardes en tus propios sistemas todos los datos relacionados con el uso de esta herramienta. Ten en cuenta lo siguiente:

  • Un contenedor vence después de 20 minutos de inactividad. A partir de ese momento, cualquier intento de usarlo en v1/responses fallará. Aún podrás consultar una copia de los metadatos del contenedor tal como estaban al vencer, pero eliminaremos de nuestros sistemas todos los datos asociados al contenedor y no podrás recuperarlos. Descarga los archivos que puedas necesitar mientras el contenedor siga activo.
  • No puedes reactivar un contenedor vencido. Crea uno nuevo y vuelve a subir los archivos. Se perderá todo lo que estuviera en la memoria del contenedor anterior, incluidos los objetos de Python.
  • Cualquier operación en el contenedor, como consultarlo, agregarle archivos o eliminarlos, actualiza automáticamente la hora de su última actividad en last_active_at.

Trabajar con archivos

Cuando usa el intérprete de código, el modelo puede crear sus propios archivos. Por ejemplo, si le pides que genere un gráfico o cree un archivo CSV, lo crea directamente en tu contenedor. Luego cita los archivos generados en el campo annotations de su siguiente mensaje. Por ejemplo:

{
  "id": "msg_682d514e268c8191a89c38ea318446200f2610a7ec781a4f",
  "content": [
    {
      "annotations": [
        {
          "file_id": "cfile_682d514b2e00819184b9b07e13557f82",
          "index": null,
          "type": "container_file_citation",
          "container_id": "cntr_682d513bb0c48191b10bd4f8b0b3312200e64562acc2e0af",
          "end_index": 0,
          "filename": "cfile_682d514b2e00819184b9b07e13557f82.png",
          "start_index": 0
        }
      ],
      "text": "Here is the histogram of the RGB channels for the uploaded image. Each curve represents the distribution of pixel intensities for the red, green, and blue channels. Peaks toward the high end of the intensity scale (right-hand side) suggest a lot of brightness and strong warm tones, matching the orange and light background in the image. If you want a different style of histogram (e.g., overall intensity, or quantized color groups), let me know!",
      "type": "output_text",
      "logprobs": []
    }
  ],
  "role": "assistant",
  "status": "completed",
  "type": "message"
}

Para descargar los archivos generados, llama al método Obtener el contenido de un archivo del contenedor.

Todos los archivos que incluyas en la entrada del modelo se suben automáticamente al contenedor. No necesitas subirlos por separado.

Subir y descargar archivos

Agrega archivos a tu contenedor con Crear un archivo en el contenedor. Este punto de acceso acepta una carga multiparte o un cuerpo JSON con un file_id. Usa Listar los archivos del contenedor para consultar los archivos existentes y Obtener el contenido de un archivo del contenedor para descargar su contenido en bytes.

Trabajar con citas

Los archivos y las imágenes que genera el modelo se devuelven como anotaciones en el mensaje del asistente. Las anotaciones de tipo container_file_citation hacen referencia a archivos creados en el contenedor. Incluyen los campos container_id, file_id y filename. Puedes analizar estas anotaciones para mostrar enlaces de descarga o procesar los archivos de otra manera.

Archivos compatibles

Formato de archivo Tipo MIME
.c text/x-c
.cs text/x-csharp
.cpp text/x-c++
.csv text/csv
.doc application/msword
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.html text/html
.java text/x-java
.json application/json
.md text/markdown
.pdf application/pdf
.php text/x-php
.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation
.py text/x-python
.py text/x-script.python
.rb text/x-ruby
.tex text/x-tex
.txt text/plain
.css text/css
.js text/javascript
.sh application/x-sh
.ts application/typescript
.csv application/csv
.jpeg image/jpeg
.jpg image/jpeg
.gif image/gif
.pkl application/octet-stream
.png image/png
.tar application/x-tar
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xml application/xml or "text/xml"
.zip application/zip

Notas de uso

Disponibilidad por APILímites de solicitudesNotas
100 solicitudes por minuto por organización

Precios
ZDR y residencia de datos