LangChain.js mit Claude Code: KI-Chains und Agents 2026

LangChain.js ist das führende Framework für LLM-Anwendungen in JavaScript und TypeScript — Chains, Agents, Memory, RAG-Pipelines. Claude Code kennt alle Patterns: von einfachen Prompts bis zu komplexen Multi-Agent-Systemen.

Setup und erste Chain

ChainLLMChain: Der Einstieg

# Prompt: "Erstelle eine LangChain.js Chain die Tech-News zusammenfasst" import { ChatAnthropic } from "@langchain/anthropic"; import { PromptTemplate } from "@langchain/core/prompts"; import { StringOutputParser } from "@langchain/core/output_parsers"; const model = new ChatAnthropic({ model: "claude-opus-4-6", temperature: 0.3, }); const summaryPrompt = PromptTemplate.fromTemplate(` Fasse folgende Tech-News in 3 Bullet-Points zusammen: {news} Antworte auf Deutsch, präzise und informativ. `); // LCEL — LangChain Expression Language (moderner Ansatz) const chain = summaryPrompt.pipe(model).pipe(new StringOutputParser()); const result = await chain.invoke({ news: "OpenAI released GPT-5, Anthropic launched Claude 5..." }); // Streaming const stream = await chain.stream({ news: newsText }); for await (const chunk of stream) { process.stdout.write(chunk); }

RAG: Retrieval-Augmented Generation

RAGEigene Wissensbasis mit Embeddings

# Prompt: "Baue eine RAG-Pipeline für eine Produktdokumentation" import { RecursiveCharacterTextSplitter } from "langchain/text_splitter"; import { OpenAIEmbeddings } from "@langchain/openai"; import { MemoryVectorStore } from "langchain/vectorstores/memory"; import { createRetrievalChain } from "langchain/chains/retrieval"; import { createStuffDocumentsChain } from "langchain/chains/combine_documents"; // 1. Dokumente aufteilen const splitter = new RecursiveCharacterTextSplitter({ chunkSize: 1000, chunkOverlap: 200, }); const docs = await splitter.createDocuments([productDocsText]); // 2. Embeddings + VectorStore const vectorStore = await MemoryVectorStore.fromDocuments( docs, new OpenAIEmbeddings() ); const retriever = vectorStore.asRetriever({ k: 4 }); // 3. RAG Chain const ragChain = await createRetrievalChain({ retriever, combineDocsChain: await createStuffDocumentsChain({ llm: model, prompt: PromptTemplate.fromTemplate(` Beantworte die Frage basierend auf dem Kontext: Kontext: {context} Frage: {input} `), }), }); const answer = await ragChain.invoke({ input: "Wie konfiguriere ich den API-Key?" });
RAG-Prompt-Tipp: "Erstelle eine RAG-Pipeline mit [Vektordatenbank]. Optimiere Chunk-Size und Overlap für [Dokumenttyp]." Claude Code wählt automatisch optimale Splitter-Parameter und Retriever-Konfiguration.

Agents: LLMs die Tools nutzen

AgentTool-Calling Agent mit Websearch

# Prompt: "Agent der Preise vergleicht und Berechnungen macht" import { createToolCallingAgent, AgentExecutor } from "langchain/agents"; import { tool } from "@langchain/core/tools"; import { z } from "zod"; // Custom Tools const getPriceTool = tool( async ({ productId }) => { const price = await fetchPrice(productId); return `Preis für ${productId}: €${price}`; }, { name: "get_price", description: "Ruft den aktuellen Preis eines Produkts ab", schema: z.object({ productId: z.string() }), } ); const calculateTool = tool( ({ expression }) => String(eval(expression)), { name: "calculate", description: "Berechnet mathematische Ausdrücke", schema: z.object({ expression: z.string() }), } ); const agent = await createToolCallingAgent({ llm: model, tools: [getPriceTool, calculateTool], prompt: ChatPromptTemplate.fromMessages([ ["system", "Du bist ein hilfreicher Preisvergleichs-Assistent."], ["human", "{input}"], ["placeholder", "{agent_scratchpad}"], ]), }); const executor = new AgentExecutor({ agent, tools: [getPriceTool, calculateTool] }); const result = await executor.invoke({ input: "Vergleiche die Preise von prod-123 und prod-456, was ist günstiger?" });

Conversation Memory

MemoryGesprächskontext über Turns

# Prompt: "Chatbot der sich Gesprächskontext merkt" import { ConversationChain } from "langchain/chains"; import { BufferWindowMemory } from "langchain/memory"; const memory = new BufferWindowMemory({ k: 5, // Nur letzte 5 Turns behalten returnMessages: true, memoryKey: "history", }); const conversation = new ConversationChain({ llm: model, memory }); // Turn 1 await conversation.invoke({ input: "Mein Name ist Clara." }); // Turn 2 — erinnert sich an "Clara" const r = await conversation.invoke({ input: "Wie heisse ich?" }); console.log(r.response); // "Du heißt Clara." // Persistente Memory mit Redis import { RedisChatMessageHistory } from "@langchain/redis"; const memory = new BufferWindowMemory({ chatHistory: new RedisChatMessageHistory({ sessionId: userId, sessionTTL: 3600, // 1h Ablauf }), k: 10, });
Memory-Limit: BufferMemory wächst unbegrenzt — für lange Gespräche BufferWindowMemory (letzte N Turns) oder SummaryMemory (LLM fasst ältere Turns zusammen). Claude Code kennt alle Memory-Typen und wählt den richtigen.

LangSmith: Observability für LLM-Chains

# Tracing mit LangSmith — Claude Code integriert es automatisch # .env: # LANGCHAIN_TRACING_V2=true # LANGCHAIN_API_KEY=lsv2_... # LANGCHAIN_PROJECT=my-app # Jeder chain.invoke() wird automatisch getrackt: # - Token-Verbrauch # - Latenz pro Step # - Input/Output jeder Chain-Stufe # - Fehler und Retries # Manueller Trace für Custom Logic: import { traceable } from "langsmith/traceable"; const myFunction = traceable(async (input: string) => { // Wird in LangSmith als eigener Span getrackt return processInput(input); }, { name: "processInput", project_name: "my-app" });

KI-Entwicklung im Kurs

Im Claude Code Mastery Kurs: vollständiges LangChain.js-Modul mit Chains, Agents, RAG-Pipelines, Memory-Management und LangSmith-Observability — inkl. Production-Best-Practices und Multi-Agent-Architekturen.

14 Tage kostenlos testen →