diff --git a/practica_resueltos b/practica_resueltos new file mode 160000 index 0000000..fb0daba --- /dev/null +++ b/practica_resueltos @@ -0,0 +1 @@ +Subproject commit fb0daba4042a1d25a90ca7826500b1f2bb1c605b diff --git a/slides/.nvmrc b/slides/.nvmrc new file mode 100644 index 0000000..8ef0a52 --- /dev/null +++ b/slides/.nvmrc @@ -0,0 +1 @@ +v24.11.1 diff --git a/slides/changes.md b/slides/changes.md deleted file mode 100644 index 1d47186..0000000 --- a/slides/changes.md +++ /dev/null @@ -1,371 +0,0 @@ -# Cambios necesarios para actualizar el curso LangChain.js - -> Fecha de revision: 2026-05-22 -> Las slides fueron preparadas para Enero 2026 (v0.3.x). Desde entonces se ha lanzado **LangChain v1** y **LangGraph v1**, que traen cambios significativos. -> **Todos los cambios críticos e importantes han sido aplicados.** El documento se conserva como referencia histórica. - -## Versiones actuales en npm (mayo 2026) - -| Paquete | Slides | Actual | Cambio | -|---------|--------|--------|--------| -| `langchain` | v0.3.x | **v1.2.35** | MAJOR | -| `@langchain/core` | v0.3.x | **v1.1.34** | MAJOR | -| `@langchain/openai` | - | **v1.3.0** | MAJOR | -| `@langchain/anthropic` | - | **v1.3.25** | MAJOR | -| `@langchain/google-genai` | en uso | **v2.1.26** (DEPRECATED) | Ver punto 3 | -| `@langchain/google` | no mencionado | **v0.1.7** (NUEVO, reemplaza google-genai) | NUEVO | -| `@langchain/community` | en uso | **v1.1.24** | MAJOR | -| `@langchain/langgraph` | en uso | **v1.2.3** | MAJOR | -| `@langchain/classic` | no existe en slides | **v1.0.24** (NUEVO) | NUEVO | -| `@langchain/qdrant` | en uso | **v1.0.1** | MAJOR | -| `@langchain/pinecone` | - | **v1.0.1** | MAJOR | - ---- - -## 1. CRITICO: Versiones en slides/setup/03.md - -**Fichero**: `pages/setup/03.md:52` -**Problema**: Dice `Versiones actuales (Enero 2026): langchain v0.3.x · @langchain/core v0.3.x` -**Correccion**: Cambiar a `Versiones actuales (Marzo 2026): langchain v1.x · @langchain/core v1.x` - ---- - -## 2. CRITICO: Nuevo paquete @langchain/classic - -**Ficheros afectados**: `pages/setup/02.md` -**Problema**: La arquitectura de paquetes no menciona `@langchain/classic`, que es donde se ha movido la funcionalidad legacy en v1. -**Que se movio a @langchain/classic**: -- `MemoryVectorStore` (antes en `langchain/vectorstores/memory`) -- `DirectoryLoader` (antes en `langchain/document_loaders/fs/directory`) -- `TextLoader` (antes en `langchain/document_loaders/fs/text`) -- Legacy chains (`LLMChain`, `ConversationChain`, etc.) -- Retrievers legacy -- Hub module -- `ChatPromptTemplate` ahora se importa desde `@langchain/classic/prompts` en los ejemplos de proveedores (aunque sigue disponible en `@langchain/core/prompts`) - -**Accion**: Anadir `@langchain/classic` al diagrama de arquitectura de paquetes en `setup/02.md` - ---- - -## 3. CRITICO: @langchain/google-genai DEPRECATED - -**Ficheros afectados**: -- `pages/setup/02.md:54` - lista de proveedores -- `pages/setup/03.md:31` - instalacion -- `pages/setup/13.md` - ejemplo completo con Gemini -- `pages/models/08b.md` - ChatGoogleGenerativeAI -- `pages/models/10.md:38` - providers disponibles -- `pages/rag/06.md:22` - GoogleGenerativeAIEmbeddings -- `pages/rag/07.md` - no afectado directamente - -**Problema**: La documentacion oficial dice textualmente: -> "This library is based on a deprecated library from Google and will be replaced by the ChatGoogle library. New implementations should use the ChatGoogle library instead." - -**Correccion**: -```typescript -// ANTES (deprecated) -import { ChatGoogleGenerativeAI } from "@langchain/google-genai"; -const model = new ChatGoogleGenerativeAI({ model: "gemini-2.0-flash-exp" }); - -// AHORA (recomendado) -import { ChatGoogle } from "@langchain/google"; -const model = new ChatGoogle({ model: "gemini-2.5-flash" }); -``` - -**Instalacion**: `npm install @langchain/google` en lugar de `npm install @langchain/google-genai` - ---- - -## 4. CRITICO: createReactAgent -> createAgent - -**Ficheros afectados**: -- `pages/models/15.md` - ejemplo con Tavily usa `createReactAgent` de `@langchain/langgraph/prebuilt` -- `pages/models/16.md` - comparacion bindTools vs createReactAgent - -**Problema**: `createReactAgent` de `@langchain/langgraph/prebuilt` ha sido reemplazado por `createAgent` de `langchain` en v1. - -**Correccion para models/15.md**: -```typescript -// ANTES -import { ChatOpenAI } from "@langchain/openai"; -import { TavilySearchResults } from "@langchain/community/tools/tavily_search"; -import { createReactAgent } from "@langchain/langgraph/prebuilt"; - -const model = new ChatOpenAI({ model: "gpt-4o-mini" }); -const agent = createReactAgent({ llm: model, tools: [searchTool] }); - -// AHORA -import { createAgent } from "langchain"; -import { TavilySearchResults } from "@langchain/community/tools/tavily_search"; - -const searchTool = new TavilySearchResults({ apiKey: process.env.TAVILY_API_KEY, maxResults: 5 }); -const agent = createAgent({ - model: "openai:gpt-4.1-mini", - tools: [searchTool], -}); -``` - -**Correccion para models/16.md**: Cambiar el titulo y contenido del panel derecho de `createReactAgent()` a `createAgent()`. La comparacion sigue siendo valida conceptualmente (bindTools para control manual vs createAgent para loop automatico). - -> NOTA: La seccion de agentes (pages/agents/) ya usa `createAgent` correctamente. Solo models/15.md y models/16.md estan desactualizados. - ---- - -## 5. IMPORTANTE: Nombres de modelos desactualizados - -### OpenAI -**Ficheros**: Multiples (models/, messages/, rag/, setup/, agents/) -- `gpt-4o-mini` -> `gpt-4.1-mini` (segun docs actuales de LangChain) -- `gpt-4o` -> `gpt-4.1` (segun docs actuales de LangChain) -- `gpt-4-turbo` en `models/10.md:18` -> `gpt-4.1` o posterior - -**Nota**: Los modelos `gpt-4o` y `gpt-4o-mini` siguen funcionando pero ya no son los mas recientes. La documentacion oficial de LangChain ahora muestra `gpt-4.1-mini` y `gpt-5.2` como ejemplos. - -### Anthropic -- `claude-sonnet-4-20250514` en `models/08.md:41` -> `claude-sonnet-4-6` (ultimo segun docs) -- `claude-sonnet-4-5-20250929` en `agents/05.md:17` -> mantener o actualizar a `claude-sonnet-4-6` - -### Google Gemini -- `gemini-2.0-flash-exp` en `models/08b.md:19` -> `gemini-2.5-flash` (segun docs actuales) -- `gemini-pro` en `models/10.md:38` -> `gemini-2.5-flash-lite` (modelo recomendado actual) -- `gemini-2.5-flash` en `setup/13.md:16` -> OK, este esta correcto - -### Embeddings -- `embedding-001` en `rag/06.md:25` -> verificar nombre actual del modelo de embeddings de Google -- `llama2` en `rag/07.md:32` (OllamaEmbeddings) -> `llama3.2` o modelo mas reciente - ---- - -## 6. IMPORTANTE: MemoryVectorStore - import path cambiado - -**Fichero**: `pages/rag/11.md:12` -**Problema**: -```typescript -// ANTES (v0.3.x) -import { MemoryVectorStore } from "langchain/vectorstores/memory"; - -// AHORA (v1.x) -import { MemoryVectorStore } from "@langchain/classic/vectorstores/memory"; -``` - -**Nota**: En v1, `MemoryVectorStore` se ha movido a `@langchain/classic`. Requiere instalar: `npm install @langchain/classic` - ---- - -## 7. IMPORTANTE: initChatModel - import path cambiado - -**Fichero**: `pages/models/09.md:22` -**Problema**: -```typescript -// ANTES (v0.3.x) -import { initChatModel } from "@langchain/core/chat_models/universal"; - -// AHORA (v1.x) -import { initChatModel } from "langchain"; -``` - ---- - -## 8. IMPORTANTE: Document Loaders - import paths cambiados - -**Fichero**: `pages/pending/06c.md` -**Problema**: Los loaders que estaban en `langchain/` se han movido a `@langchain/classic/`: -```typescript -// ANTES -import { DirectoryLoader } from "langchain/document_loaders/fs/directory"; -import { TextLoader } from "langchain/document_loaders/fs/text"; - -// AHORA -import { DirectoryLoader } from "@langchain/classic/document_loaders/fs/directory"; -import { TextLoader } from "@langchain/classic/document_loaders/fs/text"; -``` -Los loaders de community (`PDFLoader`, `CSVLoader`) mantienen su path en `@langchain/community/...`. - ---- - -## 9. IMPORTANTE: OllamaEmbeddings - import path - -**Fichero**: `pages/rag/07.md:29` -**Problema**: -```typescript -// ANTES -import { OllamaEmbeddings } from "@langchain/community/embeddings/ollama"; - -// AHORA (paquete dedicado) -import { OllamaEmbeddings } from "@langchain/ollama"; -``` -Requiere: `npm install @langchain/ollama` - ---- - -## 10. MENOR: favicon en slides.md - -**Fichero**: `slides.md:10` -**Problema**: `favicon: https://js.langchain.com/v0.2/img/favicon.ico` - URL con referencia a v0.2 -**Correccion**: Actualizar a la URL actual de la documentacion: `https://docs.langchain.com/...` o usar favicon local - ---- - -## 11. NUEVO CONCEPTO: Standard Content Blocks (v1) - -**No existe en las slides actualmente.** -**Relevancia**: Es una de las 3 mejoras principales de LangChain v1. - -`contentBlocks` es una nueva propiedad en los mensajes que proporciona acceso unificado a features modernos de LLMs (reasoning tokens, imagenes, etc.) de forma estandarizada entre proveedores: - -```typescript -import { AIMessage } from "@langchain/core/messages"; - -// Los mensajes ahora tienen .contentBlocks para acceso tipado -const reasoning = message.contentBlocks - .filter((b) => b.type === "reasoning") - .map((b) => b.reasoning); -``` - -**Sugerencia**: Considerar anadir una slide en la seccion de mensajes (messages/) o en la seccion de agentes explicando este nuevo concepto. - ---- - -## 12. NUEVO CONCEPTO: @langchain/classic - -**No explicado en las slides.** -En v1, la funcionalidad legacy se ha movido a `@langchain/classic`: -- Legacy chains (LLMChain, ConversationChain) -- Retrievers legacy -- Hub module -- MemoryVectorStore -- Algunos document loaders - -**Sugerencia**: Mencionar en la seccion de estructura/setup que en v1 existe este paquete para compatibilidad hacia atras. - ---- - -## 13. MENOR: Modelos disponibles en providers (models/10.md) - -**Fichero**: `pages/models/10.md` -Los comentarios de modelos disponibles estan desactualizados: -- OpenAI: `gpt-4o, gpt-4o-mini, gpt-4-turbo` -> `gpt-4.1, gpt-4.1-mini, gpt-5.2` -- Google: `gemini-2.0-flash-exp, gemini-pro` -> `gemini-2.5-flash, gemini-2.5-flash-lite` -- Anthropic: `claude-sonnet-4, claude-opus-4` -> `claude-sonnet-4-6, claude-opus-4-6` -- Groq: `llama-3.1-70b, mixtral-8x7b` -> verificar disponibilidad actual -- Ollama: `llama3.1:7b` -> `llama3.2:7b` o posterior - ---- - -## 14. MENOR: Structured Output con createAgent (v1 mejora) - -**Ficheros**: Los slides de structured output ya cubren `withStructuredOutput()` correctamente. -**Novedad v1**: En `createAgent`, structured output ahora se genera en el loop principal (sin llamada LLM adicional) via `responseFormat`: - -```typescript -import { createAgent } from "langchain"; -import * as z from "zod"; - -const agent = createAgent({ - model: "gpt-4.1-mini", - tools: [getWeather], - responseFormat: z.object({ - temperature: z.number(), - condition: z.string(), - }), -}); -const result = await agent.invoke({ messages: [...] }); -console.log(result.structuredResponse); -``` - -**Sugerencia**: Verificar si esto ya esta cubierto en las slides de agents/structured output. - ---- - -## 15. MENOR: URLs de documentacion desactualizadas - -**Ficheros afectados**: -- `pages/models/11.md` - enlace `js.langchain.com/docs/integrations/chat` -- `pages/models/13.md` - enlace `js.langchain.com/docs/integrations/tools` -- `pages/rag/29.md` - enlace `js.langchain.com/docs/tutorials/rag` -- `pages/pending/09.md` - enlace `js.langchain.com/docs` - -**Problema**: Las URLs antiguas `js.langchain.com/docs/...` han cambiado a `docs.langchain.com/oss/javascript/...` -**Correccion**: -- `js.langchain.com/docs/integrations/chat` -> `docs.langchain.com/oss/javascript/integrations/chat` -- `js.langchain.com/docs/integrations/tools` -> `docs.langchain.com/oss/javascript/integrations/tools` -- `js.langchain.com/docs/tutorials/rag` -> `docs.langchain.com/oss/javascript/langchain/rag` -- `js.langchain.com/docs` -> `docs.langchain.com/oss/javascript` - ---- - -## 16. MENOR: Precios y modelos en setup/04.md - -**Fichero**: `pages/setup/04.md` -**Problema**: La tabla de comparativa dice "Enero 2025" y lista modelos desactualizados: -- "GPT-4o" -> "GPT-4.1" (o posterior) -- "Gemini 2.0 Flash" -> "Gemini 2.5 Flash" -- "Claude 4 Sonnet" -> modelo actual -- Precios probablemente han cambiado - -**Accion**: Actualizar la tabla con modelos y precios actuales (marzo 2026) - ---- - -## 17. MENOR: setup/07.md modelos recomendados para produccion - -**Fichero**: `pages/setup/07.md` -**Problema**: Recomienda "Claude 4 Sonnet o GPT-4o" para produccion. Los nombres de modelo deberian reflejar los ultimos disponibles. - ---- - -## 18. MENOR: Modelos Ollama en setup/09.md - -**Fichero**: `pages/setup/09.md` -**Problema**: Referencia a "Llama 3.1 7B/13B/70B" en la tabla de hardware. Llama 3.2 ya esta disponible y setup/14.md ya lo usa correctamente. - ---- - -## 19. MENOR: Modelos en agents/ y alternatives/ desactualizados - -**Ficheros afectados**: -- `pages/agents/05.md:17` y `pages/agents/06.md:31` - usan `claude-sonnet-4-5-20250929` -- `pages/alternatives/06.md:40` - usa `claude-sonnet-4-20250514` en ejemplo de Anthropic SDK nativo -- `pages/alternatives/06.md:22` - usa `gpt-4o` en ejemplo de OpenAI SDK nativo -- `pages/alternatives/07.md:15` - usa `gpt-4o` en Assistants API -- `pages/alternatives/07.md:32` - usa `gemini-2.0-flash` en Google GenAI SDK - -**Correccion**: Actualizar nombres de modelos a los ultimos disponibles (ver punto 5) - ---- - -## NOTA POSITIVA: Secciones ya actualizadas a v1 - -Las siguientes secciones **ya estan correctamente actualizadas** para LangChain v1: -- **agents/** (01-23): Usa `createAgent`, middleware, `humanInTheLoopMiddleware`, etc. -- **messages/** (01-11): `ChatPromptTemplate`, `MessagesPlaceholder`, `SystemMessage` siguen siendo validos -- **introduction/06.md**: Ya menciona "LangChain (v1)" -- **langsmith/05.md**: Ya usa `createAgent` de `"langchain"` - ---- - -## Resumen de prioridades - -### Criticos (el curso no funciona correctamente sin estos cambios) -1. Actualizar version numbers en setup/03.md (v0.3.x -> v1.x) -2. Actualizar `@langchain/google-genai` a `@langchain/google` en multiples ficheros -3. Reemplazar `createReactAgent` por `createAgent` en models/15.md y models/16.md -4. Actualizar import de `MemoryVectorStore` en rag/11.md -5. Actualizar import de `initChatModel` en models/09.md -6. Anadir `@langchain/classic` a la arquitectura de paquetes - -### Importantes (el codigo funciona pero con warnings/deprecaciones) -7. Actualizar nombres de modelos (gpt-4o-mini -> gpt-4.1-mini, etc.) -8. Actualizar imports de document loaders en pending/06c.md -9. Actualizar OllamaEmbeddings import path en rag/07.md - -### Menores / Mejoras -10. Actualizar favicon URL en slides.md -11. Considerar anadir slide sobre Standard Content Blocks -12. Actualizar lista de modelos en models/10.md -13. Mencionar @langchain/classic en el modulo de estructura -14. Documentar responseFormat en createAgent -15. Actualizar URLs de documentacion (js.langchain.com -> docs.langchain.com) -16. Actualizar tabla de precios/modelos en setup/04.md -17. Actualizar modelos recomendados en setup/07.mdhttps://docs.langchain.com/oss/javascript/langchain/messages -18. Actualizar modelos Ollama en setup/09.md diff --git a/slides/public/nykk_black.png b/slides/public/nykk_black.png new file mode 100644 index 0000000..bd19fc6 Binary files /dev/null and b/slides/public/nykk_black.png differ