En 2025, LLaMA (Large Language Model Meta AI) se ha consolidado como una de las opciones más versátiles para chatbots locales o en la nube, capaces de procesar texto, imágenes y audio. En este tutorial aprenderás a crear un chatbot multimodal usando solo LLaMA.

Por qué usar LLaMA
- Ligero y eficiente: Funciona incluso en PCs de gama media con GPUs modernas.
- Local: No dependes de la nube, ideal para privacidad.
- Multimodal: LLaMA 3 soporta input de texto y imágenes, y se puede integrar con TTS (text-to-speech) para audio.
- Customizable: Puedes hacer fine-tuning con tus datos para respuestas más precisas.
LLaMA 3 tiene versiones de 7B, 13B y 70B parámetros; para pruebas locales, 7B-13B suelen ser suficientes.
Preparar el entorno
- Instala Python 3.11+ y crea un entorno virtual:
python -m venv llama-env source llama-env/bin/activate # Linux / Mac .\llama-env\Scripts\activate # Windows
Instala librerías necesarias:
pip install torch torchvision torchaudio pip install transformers sentencepiece pillow pip install pyttsx3 # Para TTS local
Descarga LLaMA 3 desde tu fuente oficial (por ejemplo Ollama o Hugging Face).
Código base del chatbot LLaMA
from transformers import LlamaForCausalLM, LlamaTokenizer
import torch
import pyttsx3
from PIL import Image
# Cargar modelo y tokenizer
model_name = "llama-3-7b"
tokenizer = LlamaTokenizer.from_pretrained(model_name)
model = LlamaForCausalLM.from_pretrained(model_name, device_map="auto")
# Función para generar respuesta
def generar_respuesta(prompt):
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=200)
respuesta = tokenizer.decode(output[0], skip_special_tokens=True)
return respuesta
# Función TTS
def hablar(texto):
engine = pyttsx3.init()
engine.say(texto)
engine.runAndWait()
# Ejemplo de uso
prompt = "Hola, muéstrame un ejemplo divertido de chatbot multimodal."
respuesta = generar_respuesta(prompt)
print(respuesta)
hablar(respuesta)
Tip: Para input multimodal, puedes integrar LLaMA con CLIP o BLIP para procesar imágenes, y luego pasar el texto generado al modelo principal.
Integrando imágenes
from transformers import BlipProcessor, BlipForConditionalGeneration
processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
model_blip = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base")
def describir_imagen(ruta_imagen):
image = Image.open(ruta_imagen)
inputs = processor(image, return_tensors="pt")
out = model_blip.generate(**inputs)
return processor.decode(out[0], skip_special_tokens=True)
# Uso
descripcion = describir_imagen("mi_foto.jpg")
respuesta = generar_respuesta(f"Basado en esto: {descripcion}, cuéntame algo divertido.")
print(respuesta)

Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.