TechLead
Lección 15 de 18
5 min de lectura
LangChain

IA Multi-Modal (Imágenes + Texto)

Construye aplicaciones que procesan imágenes, describen elementos visuales y combinan visión con texto usando el soporte multi-modal de LangChain

¿Qué es la IA Multi-Modal?

Los modelos de IA multi-modal pueden procesar múltiples tipos de entrada — texto, imágenes, audio y video. Con LangChain, puedes construir aplicaciones que analizan imágenes, generan descripciones, extraen datos de capturas de pantalla y combinan comprensión visual con razonamiento textual.

👁️ Casos de Uso Multi-Modal

  • Análisis de Imágenes: Describir, clasificar o extraer datos de imágenes
  • Captura a Código: Convertir capturas de UI en componentes React
  • OCR de Documentos: Leer texto de imágenes de documentos
  • Q&A Visual: Responder preguntas sobre imágenes

Enviando Imágenes a Modelos de Chat

import { ChatOpenAI } from "@langchain/openai";
import { HumanMessage } from "@langchain/core/messages";

const model = new ChatOpenAI({ modelName: "gpt-4o" }); // Modelo con capacidad de visión

const response = await model.invoke([
  new HumanMessage({
    content: [
      { type: "text", text: "¿Qué hay en esta imagen? Descríbela en detalle." },
      {
        type: "image_url",
        image_url: {
          url: "https://ejemplo.com/foto.jpg",
          detail: "high",
        },
      },
    ],
  }),
]);

console.log(response.content);

Usando Imágenes en Base64

import { readFileSync } from "fs";

const imageBuffer = readFileSync("./captura.png");
const base64Image = imageBuffer.toString("base64");

const response = await model.invoke([
  new HumanMessage({
    content: [
      { type: "text", text: "Describe este diseño de UI." },
      {
        type: "image_url",
        image_url: {
          url: `data:image/png;base64,${base64Image}`,
        },
      },
    ],
  }),
]);

Captura de Pantalla a Código

const response = await model.invoke([
  new HumanMessage({
    content: [
      {
        type: "text",
        text: `Convierte esta captura de pantalla UI a un componente React usando Tailwind CSS.
               Usa TypeScript y componentes funcionales con tipos apropiados.
               Incluye diseño responsivo para móvil.`,
      },
      {
        type: "image_url",
        image_url: {
          url: `data:image/png;base64,${capturaBase64}`,
          detail: "high",
        },
      },
    ],
  }),
]);

// ¡Devuelve código completo de componente React + Tailwind!

Extrayendo Datos Estructurados de Imágenes

import { z } from "zod";

const ReciboSchema = z.object({
  tienda: z.string(),
  fecha: z.string(),
  articulos: z.array(z.object({
    nombre: z.string(),
    cantidad: z.number(),
    precio: z.number(),
  })),
  total: z.number(),
  impuesto: z.number(),
});

const model = new ChatOpenAI({ modelName: "gpt-4o" })
  .withStructuredOutput(ReciboSchema);

const recibo = await model.invoke([
  new HumanMessage({
    content: [
      { type: "text", text: "Extrae todos los datos de esta imagen de recibo." },
      {
        type: "image_url",
        image_url: { url: `data:image/jpeg;base64,${reciboBase64}` },
      },
    ],
  }),
]);

console.log(recibo);
// { tienda: "Walmart", fecha: "2026-02-08", articulos: [...], total: 47.93, impuesto: 3.84 }

💡 Puntos Clave

  • • Usa modelos con capacidad de visión como GPT-4o o Claude 3 para comprensión de imágenes
  • • Las imágenes se pueden enviar como URLs o cadenas codificadas en base64
  • • Combina withStructuredOutput() con imágenes para extraer datos tipados
  • • La conversión de captura a código es una aplicación práctica poderosa
  • • Usa detail: "high" para imágenes que necesitan análisis preciso

Continuar aprendiendo