Recommended resources
The freely available resources this lesson will direct you to.
¡Hola! En la lección anterior aprendiste a distinguir lo que se envía a una API de lo que esta devuelve. Ahora pasarás de leer una petición a enviarla desde un pequeño script de Python.
Trabajaremos con un caso ficticio de atención al cliente: pedir a un modelo de IA un borrador de respuesta sin facilitarle una política de devoluciones que no conocemos. El objetivo es que puedas ejecutar la llamada, cambiar el caso y la instrucción, y reconocer qué parte del proceso requiere todavía revisión humana. Reserva unos 40 minutos. Para realizar una llamada real necesitarás acceso a una API de IA, una clave válida y comprobar antes sus condiciones de uso y posibles costes; una suscripción a una aplicación de chat no implica necesariamente acceso a su API.
Del intercambio HTTP al script
Un programa podría construir por sí mismo el método, las cabeceras y el cuerpo JSON que estudiaste. Para una primera llamada, utilizaremos el SDK oficial de Python: una biblioteca que prepara la comunicación con la API y nos devuelve un objeto de respuesta. La petición sigue existiendo, aunque el código no muestre cada detalle HTTP.
Mira esta breve demostración antes de escribir el script:
OpenAI Responses API: EASY Beginners Tutorial in 14 Mins!
«OpenAI Responses API: EASY Beginners Tutorial in 14 Mins!», de Mervin Praison, muestra visualmente la instalación, el envío de una entrada y la aparición del texto generado en la terminal.
En el tramo primera llamada, fíjate en tres momentos: se prepara la biblioteca, el programa llama a responses.create y después imprime output_text. No copies la configuración completa del vídeo: incluye bibliotecas que no necesitamos y muestra un procedimiento para introducir la clave distinto del que seguiremos aquí.
La referencia para nuestro código será el ejemplo de Python de la guía oficial. Léelo hasta el comando que ejecuta el archivo; no necesitas estudiar los ejemplos de otros lenguajes.
Developer quickstart | OpenAI API
Lee el inicio rápido para Python de OpenAI: contiene la llamada mínima sobre la que construiremos el script.
Dentro de «Install the OpenAI SDK and Run an API Call», salta los ejemplos de JavaScript y localiza el párrafo que empieza «To use the OpenAI API in Python». Lee el ejemplo Python, incluido el archivo example.py y la indicación para ejecutarlo. Identifica dónde se eligen el modelo y la entrada, y qué línea muestra el resultado.
El patrón es pequeño: OpenAI() crea el cliente; client.responses.create(...) envía la solicitud; response.output_text obtiene el texto generado. Obtener texto no demuestra que sea correcto: solo confirma que hay una salida que podemos examinar.
Prepara un entorno y protege la clave
Necesitas Python disponible en una terminal y la biblioteca openai. Comprueba primero la instalación:
python --version
python -m pip install openai
Si tu equipo utiliza python3 en lugar de python, usa python3 en ambos comandos y al ejecutar el archivo más adelante. Si la instalación falla, no continúes suponiendo que la biblioteca está lista: anota el mensaje exacto para resolver el problema de entorno.
La API requiere una clave, que funciona como credencial. La guía oficial explica cómo crearla y ofrece la opción de guardarla como variable de entorno, que el SDK puede leer automáticamente:
Developer quickstart | OpenAI API
Consulta «Create and export an API key» en el inicio rápido de OpenAI para entender de dónde procede la credencial y cómo la encuentra el SDK.
En «Create and export an API key», lee las instrucciones sobre la clave. Céntrate en la diferencia entre crear y custodiar la clave y escribirla en el código. Para esta práctica no necesitas copiar literalmente los comandos de exportación: el script ofrecerá una entrada oculta si no encuentra la variable de entorno.
Antes de crear una clave o hacer llamadas, comprueba que tienes permiso para usar la cuenta y que entiendes la facturación aplicable. No pegues la clave en el archivo .py, un repositorio, una captura de pantalla ni un mensaje de ayuda. En una solución para clientes, la gestión de secretos necesita controles más sólidos; aquí usaremos una entrada oculta adecuada para una prueba local y supervisada.
Ejecuta una petición guiada
Crea en una carpeta de trabajo un archivo llamado primer_borrador.py y copia este código. El caso es inventado: no incluyas pedidos reales, mensajes de clientes ni datos personales en esta prueba.
import os
from getpass import getpass
from openai import OpenAI
if not os.getenv("OPENAI_API_KEY"):
clave = getpass("Clave de la API (no se mostrará): ").strip()
if not clave:
raise SystemExit("Sin clave: no se envió la petición.")
os.environ["OPENAI_API_KEY"] = clave
cliente = OpenAI()
modelo = "gpt-4o-mini"
caso = (
"Una persona pregunta si puede devolver un pedido recibido hace "
"10 días. No se ha facilitado la política de devoluciones."
)
instruccion = (
"Redacta un borrador de dos frases para el equipo de soporte. "
"No inventes plazos ni condiciones de devolución. "
f"Si falta una regla necesaria, indícalo. Caso: {caso}"
)
respuesta = cliente.responses.create(
model=modelo,
input=instruccion,
)
print(respuesta.output_text or "La respuesta no contiene texto visible.")
Desde la terminal, sitúate en la carpeta que contiene el archivo y ejecútalo:
python primer_borrador.py
Si ya existe OPENAI_API_KEY en el entorno desde el que lanzas Python, el SDK la utilizará y no aparecerá la pregunta. Si no existe, getpass te pedirá pegarla sin mostrar los caracteres en pantalla; quedará disponible solo dentro de ese proceso. Una entrada vacía detiene el programa antes de llamar a la API.
Conviene saber exactamente qué hace cada parte:
| En el script | Función |
|---|---|
modelo |
Selecciona un modelo para la llamada. Si no está disponible para tu proyecto, necesitarás elegir uno compatible siguiendo la documentación y el acceso de tu cuenta. |
caso e instruccion |
Construyen el contenido que se envía. La cadena f"..." inserta el texto de caso donde aparece {caso}. |
cliente.responses.create(...) |
Solicita una respuesta al servicio. El SDK se ocupa de preparar la comunicación; ejecutar esta línea puede generar consumo facturable. |
respuesta.output_text |
Extrae el texto visible de la respuesta, si lo hay. No es una comprobación de exactitud ni de adecuación al cliente. |
El programa no consulta el sistema de pedidos ni conoce la política de devoluciones. Una buena salida reconocerá esa limitación y evitará prometer un plazo. Si el modelo inventa una regla pese a la instrucción, habrás observado un fallo relevante para el diseño del piloto, no un dato que debas trasladar a un cliente.
Adapta la llamada sin cambiar su estructura
Haz una segunda ejecución modificando solo caso e instruccion. Por ejemplo, sustituye el caso por una pregunta sobre el estado de un pedido ficticio y pide expresamente que el borrador no afirme haberlo consultado:
caso = (
"Una persona pregunta por el estado de un pedido ficticio. "
"No se dispone de acceso al sistema de pedidos ni de un estado confirmado."
)
instruccion = (
"Redacta un borrador breve para el equipo de soporte. "
"No afirmes que has consultado el pedido ni inventes su estado. "
f"Explica qué información debe verificarse antes de responder. Caso: {caso}"
)
Guarda el archivo y vuelve a ejecutarlo con el mismo comando. Esa es una adaptación significativa: mantienes la conexión técnica, pero cambias la tarea y el límite de lo que el modelo puede afirmar. Compara las dos salidas por su utilidad y por sus afirmaciones no justificadas, no por si tienen exactamente las palabras que esperabas. Cada ejecución que llega a responses.create es una nueva llamada.
Cuando más adelante participes en un despliegue, esta distinción será útil: poder cambiar una instrucción rápidamente facilita probar un caso de uso, pero no sustituye el acceso autorizado a fuentes fiables ni la validación de la respuesta.
Si no funciona, localiza el punto de fallo
Un error visible en la terminal no significa siempre «la IA no responde». Mira en qué momento aparece:
- Antes de pedir la clave o de enviar la llamada: si aparece
ModuleNotFoundError, comprueba que instalasteopenaicon el mismo intérprete de Python que ejecuta el archivo. Si aparece un error de sintaxis, revisa comillas, paréntesis y sangría al copiar. - Al intentar la llamada: un error de autenticación invita a revisar la clave y el acceso, sin mostrar la credencial a otras personas. Un error de modelo o de permisos requiere comprobar qué modelos admite tu proyecto. Un problema de cuota o facturación no se resuelve cambiando el texto de la instrucción.
- Después de recibir texto: ya no estás diagnosticando la conexión, sino la calidad de la salida. Comprueba si el borrador respeta las restricciones y si haría falta información verificada para completar la tarea.
Si necesitas pedir ayuda, comunica el comando utilizado, el tipo de error y el punto en que aparece; elimina antes cualquier clave, dato sensible o contenido privado. Tampoco compartas el archivo si has añadido información real durante tus pruebas.
Cierre
Ya tienes un script que puede enviar una petición real a una API de IA, mostrar el texto devuelto y adaptarse cambiando el caso y la instrucción. Has separado tres comprobaciones: que Python pueda ejecutar el programa, que la API acepte la llamada y que el resultado sea suficientemente fiable para la tarea. La tercera nunca queda garantizada por las dos primeras.
En la próxima lección conectarás una entrada, un servicio de IA y una acción posterior mediante un flujo no-code o low-code. La idea que conservarás de esta práctica es la misma: definir qué se envía, qué se recibe y qué debe verificarse antes de actuar.