Menu iconMenu icon
OpenAI API Biblia Volumen 2

Capítulo 6: Conjuntos de IA de Modelo Cruzado

Ejercicios Prácticos — Capítulo 6

Ejercicio 1: Modulariza Tu Lógica Multimodal

Tarea:

Refactoriza tu pipeline multimodal existente (Whisper → GPT → DALL·E) en tres módulos de Python claramente separados: transcribe.pysummarize.py, y generate_image.py.

Solución:

# transcribe.py
import openai

def transcribe_audio(file_path):
    with open(file_path, "rb") as audio_file:
        result = openai.Audio.transcribe("whisper-1", file=audio_file)
    return result["text"]
# summarize.py
import openai

def summarize_text(text):
    response = openai.ChatCompletion.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": "Summarize this text for clarity and brevity."},
            {"role": "user", "content": text}
        ]
    )
    return response["choices"][0]["message"]["content"]
# generate_image.py
import openai

def generate_image_from_prompt(prompt):
    response = openai.Image.create(
        prompt=prompt,
        model="dall-e-3",
        size="1024x1024",
        response_format="url"
    )
    return response["data"][0]["url"]

Ejercicio 2: Construir un Procesador de Archivos Local

Tarea:

Crear un script que lea un archivo de audio del sistema local y genere automáticamente una transcripción, resumen, prompt de imagen y la imagen.

Solución:

from transcribe import transcribe_audio
from summarize import summarize_text
from generate_image import generate_image_from_prompt
import requests

audio_file = "example.m4a"
transcript = transcribe_audio(audio_file)
summary = summarize_text(transcript)
image_prompt = summarize_text(transcript)  # You could also use a dedicated prompt function
image_url = generate_image_from_prompt(image_prompt)

# Download and save image
img_data = requests.get(image_url).content
with open("output_image.png", "wb") as f:
    f.write(img_data)

print("Transcript:", transcript)
print("Summary:", summary)
print("Image Prompt:", image_prompt)
print("Image URL:", image_url)

Ejercicio 3: Añadir Registro al Pipeline

Tarea:

Añade un sistema de registro que rastree cuándo se procesó un archivo y registre cada etapa del pipeline.

Solución:

import logging

logging.basicConfig(
    filename="pipeline.log",
    level=logging.INFO,
    format="%(asctime)s - %(levelname)s - %(message)s"
)

logging.info("Started processing example.m4a")
# After each step:
logging.info("Transcription complete")
logging.info("Summary complete")
logging.info("Image generated successfully")

Ejercicio 4: Desplegar el Panel de Control Flask en Render

Tarea:

Toma tus archivos app.py y HTML y despliégalos usando Render. Asegúrate de:

  • Crear un requirements.txt
  • Usar gunicorn como tu servidor
  • Agregar OPENAI_API_KEY como variable de entorno
  • Probar la URL tanto en escritorio como en móvil

Notas de Despliegue:

# requirements.txt should include:
Flask
openai
python-dotenv
gunicorn
requests

Comando de inicio en Render:

gunicorn app:app

Ejercicio 5: Procesar Automáticamente Cargas de Audio en Segundo Plano

Tarea:

Crear un script local que monitoree un directorio en busca de archivos .mp3 o .m4a y los procese automáticamente.

Solución (Script de Monitoreo):

import os
import time
from transcribe import transcribe_audio
from summarize import summarize_text
from generate_image import generate_image_from_prompt

UPLOAD_DIR = "uploads"
PROCESSED = set()

def watch_folder():
    while True:
        files = [f for f in os.listdir(UPLOAD_DIR) if f.endswith((".m4a", ".mp3"))]
        for f in files:
            if f not in PROCESSED:
                path = os.path.join(UPLOAD_DIR, f)
                transcript = transcribe_audio(path)
                summary = summarize_text(transcript)
                prompt = summarize_text(transcript)
                image_url = generate_image_from_prompt(prompt)
                print("✅ Processed:", f)
                PROCESSED.add(f)
        time.sleep(5)

watch_folder()

Ejercicio 6: Protege Tus Claves de API

Tarea:

Usa python-dotenv para cargar tu clave de API de manera segura desde un archivo .env.

Solución:

# .env
OPENAI_API_KEY=your-openai-key
# In your Python code
from dotenv import load_dotenv
import os

load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")

Al completar estos ejercicios, ahora tienes una comprensión práctica de cómo:

  • Estructurar pipelines de IA limpios y modulares
  • Automatizar flujos de trabajo de procesamiento de archivos
  • Asegurar tu despliegue y prepararte para escalar
  • Construir aplicaciones que combinen voz, texto y elementos visuales

Este capítulo constituye el núcleo práctico de los productos de IA del mundo real. En el próximo y último capítulo, combinarás todo en una suite de IA completamente pulida, con documentación, interfaz de usuario y caso de uso real.

Ejercicios Prácticos — Capítulo 6

Ejercicio 1: Modulariza Tu Lógica Multimodal

Tarea:

Refactoriza tu pipeline multimodal existente (Whisper → GPT → DALL·E) en tres módulos de Python claramente separados: transcribe.pysummarize.py, y generate_image.py.

Solución:

# transcribe.py
import openai

def transcribe_audio(file_path):
    with open(file_path, "rb") as audio_file:
        result = openai.Audio.transcribe("whisper-1", file=audio_file)
    return result["text"]
# summarize.py
import openai

def summarize_text(text):
    response = openai.ChatCompletion.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": "Summarize this text for clarity and brevity."},
            {"role": "user", "content": text}
        ]
    )
    return response["choices"][0]["message"]["content"]
# generate_image.py
import openai

def generate_image_from_prompt(prompt):
    response = openai.Image.create(
        prompt=prompt,
        model="dall-e-3",
        size="1024x1024",
        response_format="url"
    )
    return response["data"][0]["url"]

Ejercicio 2: Construir un Procesador de Archivos Local

Tarea:

Crear un script que lea un archivo de audio del sistema local y genere automáticamente una transcripción, resumen, prompt de imagen y la imagen.

Solución:

from transcribe import transcribe_audio
from summarize import summarize_text
from generate_image import generate_image_from_prompt
import requests

audio_file = "example.m4a"
transcript = transcribe_audio(audio_file)
summary = summarize_text(transcript)
image_prompt = summarize_text(transcript)  # You could also use a dedicated prompt function
image_url = generate_image_from_prompt(image_prompt)

# Download and save image
img_data = requests.get(image_url).content
with open("output_image.png", "wb") as f:
    f.write(img_data)

print("Transcript:", transcript)
print("Summary:", summary)
print("Image Prompt:", image_prompt)
print("Image URL:", image_url)

Ejercicio 3: Añadir Registro al Pipeline

Tarea:

Añade un sistema de registro que rastree cuándo se procesó un archivo y registre cada etapa del pipeline.

Solución:

import logging

logging.basicConfig(
    filename="pipeline.log",
    level=logging.INFO,
    format="%(asctime)s - %(levelname)s - %(message)s"
)

logging.info("Started processing example.m4a")
# After each step:
logging.info("Transcription complete")
logging.info("Summary complete")
logging.info("Image generated successfully")

Ejercicio 4: Desplegar el Panel de Control Flask en Render

Tarea:

Toma tus archivos app.py y HTML y despliégalos usando Render. Asegúrate de:

  • Crear un requirements.txt
  • Usar gunicorn como tu servidor
  • Agregar OPENAI_API_KEY como variable de entorno
  • Probar la URL tanto en escritorio como en móvil

Notas de Despliegue:

# requirements.txt should include:
Flask
openai
python-dotenv
gunicorn
requests

Comando de inicio en Render:

gunicorn app:app

Ejercicio 5: Procesar Automáticamente Cargas de Audio en Segundo Plano

Tarea:

Crear un script local que monitoree un directorio en busca de archivos .mp3 o .m4a y los procese automáticamente.

Solución (Script de Monitoreo):

import os
import time
from transcribe import transcribe_audio
from summarize import summarize_text
from generate_image import generate_image_from_prompt

UPLOAD_DIR = "uploads"
PROCESSED = set()

def watch_folder():
    while True:
        files = [f for f in os.listdir(UPLOAD_DIR) if f.endswith((".m4a", ".mp3"))]
        for f in files:
            if f not in PROCESSED:
                path = os.path.join(UPLOAD_DIR, f)
                transcript = transcribe_audio(path)
                summary = summarize_text(transcript)
                prompt = summarize_text(transcript)
                image_url = generate_image_from_prompt(prompt)
                print("✅ Processed:", f)
                PROCESSED.add(f)
        time.sleep(5)

watch_folder()

Ejercicio 6: Protege Tus Claves de API

Tarea:

Usa python-dotenv para cargar tu clave de API de manera segura desde un archivo .env.

Solución:

# .env
OPENAI_API_KEY=your-openai-key
# In your Python code
from dotenv import load_dotenv
import os

load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")

Al completar estos ejercicios, ahora tienes una comprensión práctica de cómo:

  • Estructurar pipelines de IA limpios y modulares
  • Automatizar flujos de trabajo de procesamiento de archivos
  • Asegurar tu despliegue y prepararte para escalar
  • Construir aplicaciones que combinen voz, texto y elementos visuales

Este capítulo constituye el núcleo práctico de los productos de IA del mundo real. En el próximo y último capítulo, combinarás todo en una suite de IA completamente pulida, con documentación, interfaz de usuario y caso de uso real.

Ejercicios Prácticos — Capítulo 6

Ejercicio 1: Modulariza Tu Lógica Multimodal

Tarea:

Refactoriza tu pipeline multimodal existente (Whisper → GPT → DALL·E) en tres módulos de Python claramente separados: transcribe.pysummarize.py, y generate_image.py.

Solución:

# transcribe.py
import openai

def transcribe_audio(file_path):
    with open(file_path, "rb") as audio_file:
        result = openai.Audio.transcribe("whisper-1", file=audio_file)
    return result["text"]
# summarize.py
import openai

def summarize_text(text):
    response = openai.ChatCompletion.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": "Summarize this text for clarity and brevity."},
            {"role": "user", "content": text}
        ]
    )
    return response["choices"][0]["message"]["content"]
# generate_image.py
import openai

def generate_image_from_prompt(prompt):
    response = openai.Image.create(
        prompt=prompt,
        model="dall-e-3",
        size="1024x1024",
        response_format="url"
    )
    return response["data"][0]["url"]

Ejercicio 2: Construir un Procesador de Archivos Local

Tarea:

Crear un script que lea un archivo de audio del sistema local y genere automáticamente una transcripción, resumen, prompt de imagen y la imagen.

Solución:

from transcribe import transcribe_audio
from summarize import summarize_text
from generate_image import generate_image_from_prompt
import requests

audio_file = "example.m4a"
transcript = transcribe_audio(audio_file)
summary = summarize_text(transcript)
image_prompt = summarize_text(transcript)  # You could also use a dedicated prompt function
image_url = generate_image_from_prompt(image_prompt)

# Download and save image
img_data = requests.get(image_url).content
with open("output_image.png", "wb") as f:
    f.write(img_data)

print("Transcript:", transcript)
print("Summary:", summary)
print("Image Prompt:", image_prompt)
print("Image URL:", image_url)

Ejercicio 3: Añadir Registro al Pipeline

Tarea:

Añade un sistema de registro que rastree cuándo se procesó un archivo y registre cada etapa del pipeline.

Solución:

import logging

logging.basicConfig(
    filename="pipeline.log",
    level=logging.INFO,
    format="%(asctime)s - %(levelname)s - %(message)s"
)

logging.info("Started processing example.m4a")
# After each step:
logging.info("Transcription complete")
logging.info("Summary complete")
logging.info("Image generated successfully")

Ejercicio 4: Desplegar el Panel de Control Flask en Render

Tarea:

Toma tus archivos app.py y HTML y despliégalos usando Render. Asegúrate de:

  • Crear un requirements.txt
  • Usar gunicorn como tu servidor
  • Agregar OPENAI_API_KEY como variable de entorno
  • Probar la URL tanto en escritorio como en móvil

Notas de Despliegue:

# requirements.txt should include:
Flask
openai
python-dotenv
gunicorn
requests

Comando de inicio en Render:

gunicorn app:app

Ejercicio 5: Procesar Automáticamente Cargas de Audio en Segundo Plano

Tarea:

Crear un script local que monitoree un directorio en busca de archivos .mp3 o .m4a y los procese automáticamente.

Solución (Script de Monitoreo):

import os
import time
from transcribe import transcribe_audio
from summarize import summarize_text
from generate_image import generate_image_from_prompt

UPLOAD_DIR = "uploads"
PROCESSED = set()

def watch_folder():
    while True:
        files = [f for f in os.listdir(UPLOAD_DIR) if f.endswith((".m4a", ".mp3"))]
        for f in files:
            if f not in PROCESSED:
                path = os.path.join(UPLOAD_DIR, f)
                transcript = transcribe_audio(path)
                summary = summarize_text(transcript)
                prompt = summarize_text(transcript)
                image_url = generate_image_from_prompt(prompt)
                print("✅ Processed:", f)
                PROCESSED.add(f)
        time.sleep(5)

watch_folder()

Ejercicio 6: Protege Tus Claves de API

Tarea:

Usa python-dotenv para cargar tu clave de API de manera segura desde un archivo .env.

Solución:

# .env
OPENAI_API_KEY=your-openai-key
# In your Python code
from dotenv import load_dotenv
import os

load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")

Al completar estos ejercicios, ahora tienes una comprensión práctica de cómo:

  • Estructurar pipelines de IA limpios y modulares
  • Automatizar flujos de trabajo de procesamiento de archivos
  • Asegurar tu despliegue y prepararte para escalar
  • Construir aplicaciones que combinen voz, texto y elementos visuales

Este capítulo constituye el núcleo práctico de los productos de IA del mundo real. En el próximo y último capítulo, combinarás todo en una suite de IA completamente pulida, con documentación, interfaz de usuario y caso de uso real.

Ejercicios Prácticos — Capítulo 6

Ejercicio 1: Modulariza Tu Lógica Multimodal

Tarea:

Refactoriza tu pipeline multimodal existente (Whisper → GPT → DALL·E) en tres módulos de Python claramente separados: transcribe.pysummarize.py, y generate_image.py.

Solución:

# transcribe.py
import openai

def transcribe_audio(file_path):
    with open(file_path, "rb") as audio_file:
        result = openai.Audio.transcribe("whisper-1", file=audio_file)
    return result["text"]
# summarize.py
import openai

def summarize_text(text):
    response = openai.ChatCompletion.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": "Summarize this text for clarity and brevity."},
            {"role": "user", "content": text}
        ]
    )
    return response["choices"][0]["message"]["content"]
# generate_image.py
import openai

def generate_image_from_prompt(prompt):
    response = openai.Image.create(
        prompt=prompt,
        model="dall-e-3",
        size="1024x1024",
        response_format="url"
    )
    return response["data"][0]["url"]

Ejercicio 2: Construir un Procesador de Archivos Local

Tarea:

Crear un script que lea un archivo de audio del sistema local y genere automáticamente una transcripción, resumen, prompt de imagen y la imagen.

Solución:

from transcribe import transcribe_audio
from summarize import summarize_text
from generate_image import generate_image_from_prompt
import requests

audio_file = "example.m4a"
transcript = transcribe_audio(audio_file)
summary = summarize_text(transcript)
image_prompt = summarize_text(transcript)  # You could also use a dedicated prompt function
image_url = generate_image_from_prompt(image_prompt)

# Download and save image
img_data = requests.get(image_url).content
with open("output_image.png", "wb") as f:
    f.write(img_data)

print("Transcript:", transcript)
print("Summary:", summary)
print("Image Prompt:", image_prompt)
print("Image URL:", image_url)

Ejercicio 3: Añadir Registro al Pipeline

Tarea:

Añade un sistema de registro que rastree cuándo se procesó un archivo y registre cada etapa del pipeline.

Solución:

import logging

logging.basicConfig(
    filename="pipeline.log",
    level=logging.INFO,
    format="%(asctime)s - %(levelname)s - %(message)s"
)

logging.info("Started processing example.m4a")
# After each step:
logging.info("Transcription complete")
logging.info("Summary complete")
logging.info("Image generated successfully")

Ejercicio 4: Desplegar el Panel de Control Flask en Render

Tarea:

Toma tus archivos app.py y HTML y despliégalos usando Render. Asegúrate de:

  • Crear un requirements.txt
  • Usar gunicorn como tu servidor
  • Agregar OPENAI_API_KEY como variable de entorno
  • Probar la URL tanto en escritorio como en móvil

Notas de Despliegue:

# requirements.txt should include:
Flask
openai
python-dotenv
gunicorn
requests

Comando de inicio en Render:

gunicorn app:app

Ejercicio 5: Procesar Automáticamente Cargas de Audio en Segundo Plano

Tarea:

Crear un script local que monitoree un directorio en busca de archivos .mp3 o .m4a y los procese automáticamente.

Solución (Script de Monitoreo):

import os
import time
from transcribe import transcribe_audio
from summarize import summarize_text
from generate_image import generate_image_from_prompt

UPLOAD_DIR = "uploads"
PROCESSED = set()

def watch_folder():
    while True:
        files = [f for f in os.listdir(UPLOAD_DIR) if f.endswith((".m4a", ".mp3"))]
        for f in files:
            if f not in PROCESSED:
                path = os.path.join(UPLOAD_DIR, f)
                transcript = transcribe_audio(path)
                summary = summarize_text(transcript)
                prompt = summarize_text(transcript)
                image_url = generate_image_from_prompt(prompt)
                print("✅ Processed:", f)
                PROCESSED.add(f)
        time.sleep(5)

watch_folder()

Ejercicio 6: Protege Tus Claves de API

Tarea:

Usa python-dotenv para cargar tu clave de API de manera segura desde un archivo .env.

Solución:

# .env
OPENAI_API_KEY=your-openai-key
# In your Python code
from dotenv import load_dotenv
import os

load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")

Al completar estos ejercicios, ahora tienes una comprensión práctica de cómo:

  • Estructurar pipelines de IA limpios y modulares
  • Automatizar flujos de trabajo de procesamiento de archivos
  • Asegurar tu despliegue y prepararte para escalar
  • Construir aplicaciones que combinen voz, texto y elementos visuales

Este capítulo constituye el núcleo práctico de los productos de IA del mundo real. En el próximo y último capítulo, combinarás todo en una suite de IA completamente pulida, con documentación, interfaz de usuario y caso de uso real.