En este tutorial, exploraremos las nuevas capacidades presentadas en el último modelo de OpenAI, GPT-5. La actualización trae varias características potentes, que incluyen el parámetro de verbosidad, las llamadas de función de forma libre, la gramática sin contexto (CFG) y el razonamiento mínimo. Veremos lo que hacen y cómo usarlos en la práctica. Mira el Códigos completos aquí.
Instalación de las bibliotecas
!pip install pandas openai
Para obtener una llave de API de OpenAI, visite https://platform.openai.com/settings/organization/api-keys y generar una nueva clave. Si es un nuevo usuario, es posible que deba agregar detalles de facturación y realizar un pago mínimo de $ 5 para activar el acceso a la API. Mira el Códigos completos aquí.
import os
from getpass import getpass
os.environ['OPENAI_API_KEY'] = getpass('Enter OpenAI API Key: ')
Parámetro de verbosidad
El parámetro de verbosidad le permite controlar cuán detalladas son las respuestas del modelo sin cambiar su aviso.
- Bajo → Breve y conciso, mínimo texto adicional.
- Medio (predeterminado) → detalle y claridad equilibrados.
- Alto → Muy detallado, ideal para explicaciones, auditorías o enseñanza. Mira el Códigos completos aquí.
from openai import OpenAI
import pandas as pd
from IPython.display import display
client = OpenAI()
question = "Write a poem about a detective and his first solve"
data = []
for verbosity in ["low", "medium", "high"]:
response = client.responses.create(
model="gpt-5-mini",
input=question,
text={"verbosity": verbosity}
)
# Extract text
output_text = ""
for item in response.output:
if hasattr(item, "content"):
for content in item.content:
if hasattr(content, "text"):
output_text += content.text
usage = response.usage
data.append({
"Verbosity": verbosity,
"Sample Output": output_text,
"Output Tokens": usage.output_tokens
})
# Create DataFrame
df = pd.DataFrame(data)
# Display nicely with centered headers
pd.set_option('display.max_colwidth', None)
styled_df = df.style.set_table_styles(
[
{'selector': 'th', 'props': [('text-align', 'center')]}, # Center column headers
{'selector': 'td', 'props': [('text-align', 'left')]} # Left-align table cells
]
)
display(styled_df)
Los tokens de salida se escala aproximadamente linealmente con verbosidad: bajo (731) → medio (1017) → alto (1263).
Llamadas de funciones de forma libre
La función de la función de forma libre permite que GPT-5 envíe cargas útiles de texto sin procesar, como los scripts de Python, las consultas SQL o los comandos de shell, directamente a su herramienta, sin el formato JSON utilizado en GPT-4. Mira el Códigos completos aquí.
Esto hace que sea más fácil conectar GPT-5 a tiempos de ejecución externos como:
- Code Sandboxes (Python, C ++, Java, etc.)
- Bases de datos SQL (emite SQL sin procesar directamente)
- Entornos de shell (salidas listas para ejecutar)
- Generadores de configuración
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-5-mini",
input="Please use the code_exec tool to calculate the cube of the number of vowels in the word 'pineapple'",
text={"format": {"type": "text"}},
tools=[
{
"type": "custom",
"name": "code_exec",
"description": "Executes arbitrary python code",
}
]
)
print(response.output[1].input)
Esta salida muestra GPT-5 que genera código de pitón sin procesar que cuenta las vocales en la palabra piña, calcula el cubo de ese recuento e imprime ambos valores. En lugar de devolver un objeto JSON estructurado (como GPT-4 generalmente para las llamadas de herramientas), GPT-5 ofrece un código ejecutable simple. Esto permite alimentar el resultado directamente en un tiempo de ejecución de Python sin un análisis adicional.
Gramática sin contexto (CFG)
Una gramática sin contexto (CFG) es un conjunto de reglas de producción que definen cadenas válidas en un idioma. Cada regla reescribe un símbolo no terminal en terminales y/u otros no terminales, sin depender del contexto circundante.
Los CFG son útiles cuando desea restringir estrictamente la salida del modelo para que siempre siga la sintaxis de un lenguaje de programación, formato de datos u otro texto estructurado, por ejemplo, garantizar que SQL, JSON o código generados siempre sea sintácticamente correcto.
A modo de comparación, ejecutaremos el mismo script usando GPT-4 y GPT-5 con un CFG idéntico para ver cómo ambos modelos se adhieren a las reglas de la gramática y cómo sus resultados difieren en precisión y velocidad. Mira el Códigos completos aquí.
from openai import OpenAI
import re
client = OpenAI()
email_regex = r"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$"
prompt = "Give me a valid email address for John Doe. It can be a dummy email"
# No grammar constraints -- model might give prose or invalid format
response = client.responses.create(
model="gpt-4o", # or earlier
input=prompt
)
output = response.output_text.strip()
print("GPT Output:", output)
print("Valid?", bool(re.match(email_regex, output)))
from openai import OpenAI
client = OpenAI()
email_regex = r"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$"
prompt = "Give me a valid email address for John Doe. It can be a dummy email"
response = client.responses.create(
model="gpt-5", # grammar-constrained model
input=prompt,
text={"format": {"type": "text"}},
tools=[
{
"type": "custom",
"name": "email_grammar",
"description": "Outputs a valid email address.",
"format": {
"type": "grammar",
"syntax": "regex",
"definition": email_regex
}
}
],
parallel_tool_calls=False
)
print("GPT-5 Output:", response.output[1].input)
Este ejemplo muestra cómo GPT-5 puede adherirse más a un formato específico al usar una gramática sin contexto.
Con las mismas reglas de gramática, GPT-4 produjo texto adicional en torno a la dirección de correo electrónico (“Claro, aquí hay un correo electrónico de prueba que puede usar para John Doe: [email protected]“), Que lo hace inválido de acuerdo con el requisito de formato estricto.
GPT-5, sin embargo, la salida exactamente [email protected]coincidir con la gramática y la validación de pase. Esto demuestra la capacidad mejorada de GPT-5 para seguir las limitaciones CFG con precisión. Mira el Códigos completos aquí.
Razonamiento mínimo
El modo de razonamiento mínimo ejecuta GPT-5 con muy pocos o ningún tokens de razonamiento, reduciendo la latencia y ofreciendo un tiempo a la vez más rápido.
Es ideal para tareas deterministas y livianas como:
- Extracción de datos
- Formato
- Reescrituras cortas
- Clasificación simple
Debido a que el modelo omite la mayoría de los pasos de razonamiento intermedio, las respuestas son rápidas y concisas. Si no se especifica, el esfuerzo de razonamiento predeterminado a Medium. Mira el Códigos completos aquí.
import time
from openai import OpenAI
client = OpenAI()
prompt = "Classify the given number as odd or even. Return one word only."
start_time = time.time() # Start timer
response = client.responses.create(
model="gpt-5",
input=[
{ "role": "developer", "content": prompt },
{ "role": "user", "content": "57" }
],
reasoning={
"effort": "minimal" # Faster time-to-first-token
},
)
latency = time.time() - start_time # End timer
# Extract model's text output
output_text = ""
for item in response.output:
if hasattr(item, "content"):
for content in item.content:
if hasattr(content, "text"):
output_text += content.text
print("--------------------------------")
print("Output:", output_text)
print(f"Latency: {latency:.3f} seconds")
