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.py
, summarize.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.py
, summarize.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.py
, summarize.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.py
, summarize.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.