¿Para tu próximo proyecto con IA, qué prefieres usar?

16 de noviembre de 2024
8 min lectura
By Sly & AI

Tabla de Contenidos

Secciones de esta publicación.
Haz clic en cualquiera de ellas para ir directamente a esa sección.

Hace un año, si querías agregar IA a tu proyecto, básicamente significaba usar GPT-3.5 y rezar para que funcionara. Hoy el panorama es completamente diferente. Tienes docenas de opciones, cada una con sus ventajas, costos y casos de uso específicos.

Vamos a desmenuzar las opciones reales que tienes en 2024, con código, costos y casos de uso concretos. Sin marketing, solo lo que necesitas saber para elegir.

NOTA: tomamos como referencia los primeros modelos de los cuales ya tenemos información recopilada y veridica.

El Panorama Actual

Las opciones principales se dividen en tres categorías:

  1. APIs Comerciales: OpenAI, Anthropic, Google, Cohere
  2. Modelos Open Source: Llama, Mistral, Phi
  3. Soluciones Intermedias: Vercel AI SDK, LangChain, Replicate

Cada una tiene su lugar. Veamos cuándo usar qué.

OpenAI: El Estándar de Facto

OpenAI sigue siendo el rey por una razón: funciona bien y la documentación es excelente.

Ejemplo Básico

import OpenAI from 'openai';
 
const openai = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
});
 
async function generarRespuesta(prompt) {
  const completion = await openai.chat.completions.create({
    model: "gpt-4-turbo-preview",
    messages: [
      { role: "system", content: "Eres un asistente experto en programación." },
      { role: "user", content: prompt }
    ],
    temperature: 0.7,
    max_tokens: 1000,
  });
 
  return completion.choices[0].message.content;
}
 
// Uso
const respuesta = await generarRespuesta("Explica qué son las closures en JavaScript");
console.log(respuesta);

Costos Reales

Con GPT-4 Turbo (el modelo que realmente quieres usar):

  • Input: $10 por 1M tokens
  • Output: $30 por 1M tokens

En términos prácticos: si tu app procesa 100,000 conversaciones al mes con ~500 tokens promedio cada una, estás viendo unos $1,500/mes. No es barato.

Cuándo Usar OpenAI

  • Necesitas la mejor calidad posible
  • Tu presupuesto aguanta los costos
  • Quieres soporte y estabilidad garantizada
  • Function calling es importante para tu proyecto

Anthropic Claude: El Challenger

Claude se ha vuelto mi opción favorita últimamente. La calidad es comparable a GPT-4 pero con ventanas de contexto más grandes y mejor seguimiento de instrucciones.

Ejemplo con Claude

import Anthropic from '@anthropic-ai/sdk';
 
const anthropic = new Anthropic({
  apiKey: process.env.ANTHROPIC_API_KEY,
});
 
async function chatConClaude(mensaje) {
  const message = await anthropic.messages.create({
    model: "claude-3-5-sonnet-20241022",
    max_tokens: 1024,
    messages: [
      { role: "user", content: mensaje }
    ],
  });
 
  return message.content[0].text;
}
 
// Perfecto para análisis de código
const analisis = await chatConClaude(`
  Analiza este código y sugiere mejoras:
  
  function fetchData() {
    var result;
    $.ajax({
      url: '/api/data',
      async: false,
      success: function(data) {
        result = data;
      }
    });
    return result;
  }
`);

Ventaja Real: Contexto Masivo

Claude 3 soporta hasta 200k tokens de contexto. Eso es básicamente un libro completo. Útil para:

// Puedes pasar archivos enteros para análisis
async function analizarRepositorio(archivos) {
  const contenidoCompleto = archivos
    .map(f => `// ${f.path}\n${f.content}`)
    .join('\n\n');
  
  const analisis = await chatConClaude(`
    Analiza esta base de código y encuentra:
    1. Problemas de seguridad
    2. Code smells
    3. Oportunidades de refactoring
    
    ${contenidoCompleto}
  `);
  
  return analisis;
}

Costos

Claude 3.5 Sonnet:

  • Input: $3 por 1M tokens
  • Output: $15 por 1M tokens

Significativamente más barato que GPT-4. Mismo caso de uso anterior: ~450/mes vs 1,500/mes.

Modelos Open Source: Llama y Mistral

Si los costos de API te están matando o necesitas privacidad total, los modelos open source son una opción seria ahora.

Corriendo Llama Localmente

// Usando Ollama (la forma más fácil de correr modelos locales)
import { Ollama } from 'ollama';
 
const ollama = new Ollama();
 
async function chatLocal(prompt) {
  const response = await ollama.chat({
    model: 'llama3.1',
    messages: [{ role: 'user', content: prompt }],
  });
  
  return response.message.content;
}
 
// Gratis, pero necesitas hardware decente
const respuesta = await chatLocal("Genera un README para un proyecto de React");

Realidad del Hardware

Para correr Llama 3.1 70B (el modelo bueno):

  • Mínimo: 48GB VRAM (4x RTX 3090)
  • Recomendado: 80GB VRAM (A100)
  • Alternativa barata: Llama 3.1 8B (corre en una 3090)

La calidad del modelo 8B es… aceptable. No esperes magia, pero para tareas simples funciona.

Opción Cloud: Replicate

Si quieres open source pero sin el dolor de cabeza del hardware:

import Replicate from 'replicate';
 
const replicate = new Replicate({
  auth: process.env.REPLICATE_API_TOKEN,
});
 
async function usarLlama(prompt) {
  const output = await replicate.run(
    "meta/llama-2-70b-chat:latest",
    {
      input: {
        prompt: prompt,
        max_tokens: 500,
      }
    }
  );
  
  return output.join('');
}

Costo: ~$0.65 por 1M tokens. Mucho más barato que las APIs comerciales.

Vercel AI SDK: La Capa de Abstracción

Vercel AI SDK es genial si quieres cambiar entre proveedores sin reescribir código.

import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { anthropic } from '@ai-sdk/anthropic';
 
// Cambia el proveedor sin cambiar tu código
async function generarContenido(prompt, proveedor = 'openai') {
  const modelos = {
    openai: openai('gpt-4-turbo'),
    anthropic: anthropic('claude-3-5-sonnet-20241022'),
  };
 
  const { text } = await generateText({
    model: modelos[proveedor],
    prompt: prompt,
  });
 
  return text;
}
 
// Mismo código, diferentes modelos
const respuesta1 = await generarContenido("Explica recursión", "openai");
const respuesta2 = await generarContenido("Explica recursión", "anthropic");

Streaming en UI

La killer feature de Vercel AI SDK es el streaming trivial:

// app/api/chat/route.js
import { streamText } from 'ai';
import { openai } from '@ai-sdk/openai';
 
export async function POST(req) {
  const { messages } = await req.json();
 
  const result = await streamText({
    model: openai('gpt-4-turbo'),
    messages,
  });
 
  return result.toAIStreamResponse();
}
 
// En tu componente React
import { useChat } from 'ai/react';
 
export default function Chat() {
  const { messages, input, handleInputChange, handleSubmit } = useChat();
 
  return (
    <div>
      {messages.map(m => (
        <div key={m.id}>
          <strong>{m.role}:</strong> {m.content}
        </div>
      ))}
      
      <form onSubmit={handleSubmit}>
        <input value={input} onChange={handleInputChange} />
        <button type="submit">Enviar</button>
      </form>
    </div>
  );
}

Eso es todo. Chat con streaming funcionando. Cero configuración de WebSockets, cero dolor de cabeza.

Casos de Uso Reales

1. Chatbot de Soporte

Mejor opción: GPT-4 Turbo o Claude 3.5 Sonnet

async function soporteCliente(pregunta, historial) {
  const contexto = `
    Eres un asistente de soporte para una plataforma de e-commerce.
    Base de conocimiento: [FAQ, políticas, procedimientos]
  `;
  
  const mensajes = [
    { role: "system", content: contexto },
    ...historial,
    { role: "user", content: pregunta }
  ];
  
  // Claude es mejor para seguir instrucciones complejas
  return await chatConClaude(mensajes);
}

Costo estimado: $200-800/mes dependiendo del volumen.

2. Generación de Código

Mejor opción: GPT-4 + Claude (usa ambos)

async function generarComponente(descripcion) {
  // GPT-4 para la estructura inicial
  const estructura = await generarRespuesta(`
    Genera un componente React para: ${descripcion}
  `);
  
  // Claude para revisar y optimizar
  const optimizado = await chatConClaude(`
    Revisa este código y optimízalo:
    ${estructura}
  `);
  
  return optimizado;
}

3. Análisis de Datos

Mejor opción: Llama 3.1 70B (via Replicate)

async function analizarCSV(datos) {
  const prompt = `
    Analiza estos datos de ventas y dame insights:
    ${JSON.stringify(datos.slice(0, 100))}
    
    Busca patrones, anomalías y tendencias.
  `;
  
  // Open source es suficiente para análisis
  return await usarLlama(prompt);
}

Costo: Casi nada vs OpenAI.

Mejor opción: OpenAI text-embedding-3-small

import OpenAI from 'openai';
 
const openai = new OpenAI();
 
async function crearEmbeddings(textos) {
  const response = await openai.embeddings.create({
    model: "text-embedding-3-small",
    input: textos,
  });
  
  return response.data.map(d => d.embedding);
}
 
// Buscar documentos similares
async function buscarSimilar(query, documentos) {
  const queryEmbedding = await crearEmbeddings([query]);
  
  // Calcula similitud coseno con tus documentos
  const similitudes = documentos.map(doc => 
    cosineSimilarity(queryEmbedding[0], doc.embedding)
  );
  
  return documentos[similitudes.indexOf(Math.max(...similitudes))];
}

Costo: $0.02 por 1M tokens. Ridículamente barato.

La Verdad sobre LangChain

LangChain está sobrevalorado. Es útil para prototipos rápidos, pero para producción:

// LangChain: Mucha magia, poco control
import { ChatOpenAI } from "langchain/chat_models/openai";
import { PromptTemplate } from "langchain/prompts";
 
// vs usar la API directamente
import OpenAI from 'openai';
 
// Segundo es más simple, más control, menos bugs misteriosos

Usa LangChain si estás experimentando. Para producción, APIs directas.

Mi Stack Personal

Para un proyecto nuevo hoy:

  1. Vercel AI SDK como abstracción base
  2. Claude 3.5 Sonnet para tareas complejas
  3. GPT-4 Turbo como fallback
  4. OpenAI Embeddings para search
  5. Llama 3.1 8B (local) para desarrollo/testing
// config/ai.js
export const aiConfig = {
  development: {
    model: 'llama3.1', // Local, gratis
    provider: 'ollama'
  },
  production: {
    model: 'claude-3-5-sonnet-20241022',
    fallback: 'gpt-4-turbo',
    provider: 'anthropic'
  }
};

Recomendaciones por Presupuesto

Startup ($0-100/mes):

  • Llama via Replicate
  • Embeddings de OpenAI
  • Cachea agresivamente

SMB ($100-1000/mes):

  • Claude 3.5 Sonnet
  • OpenAI para casos específicos
  • Vercel AI SDK

Enterprise ($1000+/mes):

  • GPT-4 + Claude (usa el mejor para cada tarea)
  • Fine-tuning si tiene sentido
  • Infraestructura dedicada

Lo que podemos decir

No hay una respuesta correcta. Depende de:

  • Tu presupuesto
  • Tus requisitos de calidad
  • Tu volumen de uso
  • Tus necesidades de privacidad

Mi consejo: empieza con Claude 3.5 Sonnet via Vercel AI SDK. Te da flexibilidad para cambiar después y el costo es razonable. Si tu app despega y el costo se vuelve problema, evalúa open source.

Lo importante es empezar. Puedes optimizar después.