API Vision de Ollama
Qué cubre este artículo sobre la API Vision de Ollama
- Cómo procesa Ollama las imágenes.
- Qué modelos Vision están disponibles.
- Cómo enviar imágenes como Base64 o URL.
- Ejemplo práctico en Python.
- Consejos para mejorar el análisis de imágenes.
Introducción: API Vision de Ollama
Ollama soporta modelos multimodales que entienden imágenes además de texto. Esto permite analizar, describir, clasificar o resumir imágenes. La API está inspirada en OpenAI y permite enviar imágenes como URL o datos codificados en Base64. Los modelos Vision suelen ser más grandes y lentos que los modelos de solo texto, pero resultan extremadamente útiles para muchas tareas.
Este artículo muestra cómo usar la API Vision de Ollama.
Conceptos clave
- Modelo Vision: Modelo que puede procesar imágenes.
- Llava: Modelo Vision de código abierto ampliamente conocido.
- Base64: Codificación de datos binarios como texto.
- Multimodal: Múltiples tipos de entrada como texto e imagen.
- Embedding: Representación vectorial de una imagen.
- Image token: Token especial para contenido de imagen.
- Clip: Modelo para vincular imagen y texto.
- OCR: Reconocimiento de texto en imágenes.
Modelos Vision disponibles
- llava
- llava-llama3
- bakllava
- moondream (muy pequeño)
- granite3.2-vision
Cada modelo tiene diferentes tamaño, velocidad y calidad.
Ejemplo en Python con Base64
import requests
import base64
url = "http://localhost:11434/api/chat"
with open("bild.jpg", "rb") as f:
image_base64 = base64.b64encode(f.read()).decode("utf-8")
payload = {
"model": "llava",
"messages": [
{
"role": "user",
"content": "Beschreibe das Bild.",
"images": [image_base64]
}
],
"stream": False
}
response = requests.post(url, json=payload)
print(response.json()["message"]["content"])
Con curl
curl http://localhost:11434/api/chat -d '{
"model": "llava",
"messages": [{
"role": "user",
"content": "Was ist auf dem Bild?",
"images": ["<base64-encoded-image>"]
}],
"stream": false
}'
Endpoint compatible con OpenAI
import requests
url = "http://localhost:11434/v1/chat/completions"
payload = {
"model": "llava",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Beschreibe das Bild."},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,<base64>"}}
]
}
]
}
response = requests.post(url, json=payload)
print(response.json()["choices"][0]["message"]["content"])
URLs de imágenes
Ollama no puede cargar imágenes directamente desde URLs públicas. La aplicación debe descargar la imagen y codificarla en Base64:
import requests, base64
image_url = "https://example.com/bild.jpg"
img = requests.get(image_url).content
b64 = base64.b64encode(img).decode("utf-8")
Elegir el modelo
| Modelo | Tamaño | Uso |
|---|---|---|
| moondream | muy pequeño | Descripciones rápidas |
| llava-llama3 | 7B/13B | Buena calidad |
| bakllava | 7B | Reconocimiento mejorado |
| granite3.2-vision | variable | Modelo de IBM |
Consejos para un buen análisis de imágenes
- No reducir demasiado el tamaño de las imágenes.
- Formular preguntas claras.
- Probar un modelo por caso de uso.
- Usar alta calidad de imagen para OCR.
- Normalmente no es posible enviar múltiples imágenes por solicitud.
- Tener en cuenta la longitud del contexto, ya que las imágenes consumen muchos tokens.
Notas sobre VRAM
Los modelos Vision necesitan más VRAM que los modelos de texto. Un modelo Vision de 7B con Q4 puede consumir 6-8 GB de VRAM. Las imágenes más grandes requieren procesamiento adicional.
Solución de problemas
- El modelo no responde: Asegúrate de que el modelo Vision esté cargado.
- Imagen demasiado grande: Redimensionar o comprimir.
- Formato no soportado: Preferir JPEG o PNG.
- OOM: Reducir el tamaño del modelo o la resolución de la imagen.
- Formato de endpoint incorrecto: El endpoint compatible con OpenAI usa
/v1/chat/completions.
Enlaces y referencias adicionales
- BotServ.de Ollama Vision
- BotServ.de Recomendaciones de modelos Ollama
- BotServ.de Solución de problemas de API Ollama
- BotServ.de IA multimodal local
FAQ: API Vision de Ollama
¿Puede Ollama cargar imágenes desde URLs? No, la aplicación debe descargar la imagen y codificarla en Base64.
¿Qué modelo Vision es el mejor? Llava-llama3 o Bakllava para buena calidad, Moondream para rapidez.
¿Cuánto VRAM necesita un modelo Vision? Más que un modelo de solo texto. 7B con Q4 puede consumir 6-8 GB.
¿Qué formatos de imagen funcionan? Generalmente JPEG y PNG.
¿Puedo enviar múltiples imágenes? La API de Ollama típicamente permite una imagen por mensaje.
Fuentes y lecturas adicionales
- Ollama Vision: https://ollama.com/blog/llava
- Llava Paper: https://arxiv.org/abs/2304.08485
- Moondream: https://github.com/vikhyat/moondream
Resumen: API Vision de Ollama
La API Vision de Ollama permite analizar imágenes con modelos multimodales locales. Las imágenes se envían como Base64, ya sea a través del endpoint de chat de Ollama o del endpoint compatible con OpenAI. Modelos Vision como Llava, Bakllava o Moondream ofrecen diferentes niveles de calidad y velocidad. Prestando atención al tamaño de la imagen, VRAM y selección del modelo, puedes analizar imágenes de forma fiable en local.


