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.