Si vienes del mundo JavaScript/TypeScript, trabajar con AutoGen o LangChain puede sentirse como nadar contracorriente. Ambos están profundamente arraigados en Python, y aunque LangChain tiene LangChain.js, no es lo mismo. Afortunadamente, hay alternativas diseñadas específicamente para TypeScript con abstracciones más simples.
El Vercel AI SDK es probablemente la abstracción más simple y elegante para trabajar con IA en TypeScript.
1import { openai } from '@ai-sdk/openai'; 2import { generateText } from 'ai'; 3 4const { text } = await generateText({ 5 model: openai('gpt-4'), 6 prompt: 'Explica quantum computing en términos simples', 7}); 8
1// Streaming en una app Next.js 2import { streamText } from 'ai'; 3import { openai } from '@ai-sdk/openai'; 4 5export async function POST(req: Request) { 6 const { messages } = await req.json(); 7 8 const result = await streamText({ 9 model: openai('gpt-4'), 10 messages, 11 }); 12 13 return result.toDataStreamResponse(); 14} 15
TypeChat de Microsoft lleva el type safety al extremo: defines lo que quieres con tipos TypeScript.
1interface SentimentResponse { 2 sentiment: "positive" | "negative" | "neutral"; 3 confidence: number; 4 summary: string; 5} 6 7const response = await typeChat.complete<SentimentResponse>( 8 "Analiza: Este producto superó mis expectativas" 9); 10// response tiene tipos completos y validados 11
Modelfusion es como LEGO para aplicaciones de IA: componentes pequeños que se combinan.
1import { generateText, openai } from "modelfusion"; 2 3const text = await generateText({ 4 model: openai.CompletionTextGenerator({ 5 model: "gpt-3.5-turbo-instruct", 6 }), 7 prompt: "Escribe un haiku sobre TypeScript", 8}); 9
Para aplicaciones RAG (Retrieval-Augmented Generation), LlamaIndex.TS es la versión TypeScript de LlamaIndex con una API más limpia.
1import { Document, VectorStoreIndex } from 'llamaindex'; 2 3const documents = [ 4 new Document({ text: "TypeScript es JavaScript con tipos" }), 5 new Document({ text: "Node.js ejecuta JavaScript en el servidor" }), 6]; 7 8const index = await VectorStoreIndex.fromDocuments(documents); 9const queryEngine = index.asQueryEngine(); 10const response = await queryEngine.query("¿Qué es TypeScript?"); 11
| Framework | Complejidad | Mejor para | Curva de aprendizaje | |-----------|------------|------------|---------------------| | Vercel AI SDK | Mínima | Apps web, streaming | 1 hora | | TypeChat | Mínima | Respuestas estructuradas | 30 minutos | | Modelfusion | Media | Apps modulares | 2-3 horas | | LlamaIndex.TS | Media | RAG, búsqueda | 3-4 horas | | LangChain.js | Alta | Todo, pero complejo | 1-2 días |
AutoGen tiene Agents, UserProxy, GroupChat... LangChain tiene Chains, Agents, Tools, Memory...
Vercel AI SDK tiene: generateText() y streamText(). Eso es todo.
1// Vercel AI SDK - siempre igual 2const { text } = await generateText({ model, prompt }); 3const { object } = await generateObject({ model, schema, prompt }); 4const stream = await streamText({ model, messages }); 5
No son ports de Python. Están diseñados para aprovechar el sistema de tipos de TypeScript.
1// Con Vercel AI SDK - simple y directo 2import { openai } from '@ai-sdk/openai'; 3import { generateText } from 'ai'; 4 5class SimpleChat { 6 private messages: Array<{ role: string; content: string }> = []; 7 8 async send(message: string) { 9 this.messages.push({ role: 'user', content: message }); 10 11 const { text } = await generateText({ 12 model: openai('gpt-4'), 13 messages: this.messages, 14 }); 15 16 this.messages.push({ role: 'assistant', content: text }); 17 return text; 18 } 19} 20 21// Uso 22const chat = new SimpleChat(); 23await chat.send("Hola, soy Juan"); 24await chat.send("¿Cuál es mi nombre?"); // Recordará que eres Juan 25
Si estás empezando con IA en TypeScript:
Mientras Python domina en research y modelos, TypeScript domina en aplicaciones. Los mejores frameworks del futuro serán aquellos que ofrezcan:
No necesitas complejidad para construir aplicaciones de IA increíbles. A veces, generateText() es todo lo que necesitas.