{"slug": "langchain-overview-for-node-js", "title": "LangChain overview for Node.js", "summary": "LangChain.js provides a standardized framework for building LLM applications in TypeScript and Node.js, enabling developers to compose prompts, models, tools, and retrievers into reusable pipelines and agents. The framework introduces core concepts like Documents, Runnables, and LCEL (LangChain Expression Language) for chaining components, and offers high-level agent APIs such as createAgent for complex multi-step tasks.", "body_md": "[LangChain.js](https://docs.langchain.com/oss/javascript/langchain/overview) is a framework for LLM applications in TypeScript and Node.js. It standardizes how you wire prompts, models, tools, document loaders, embeddings, and retrievers into reusable pipelines and agents.\n\n| Project | Role |\n|---|---|\n|\n\n`createAgent`\n\n, loaders, retrieversUse Deep Agents for complex multi-step tasks out of the box. Use LangChain's `createAgent`\n\nwhen you want a minimal harness you compose with middleware. Reach for LangGraph when you need custom stateful workflows, branching, or fine-grained control over the agent loop.\n\nInstall the core packages first ([install guide](https://docs.langchain.com/oss/javascript/langchain/install)):\n\n```\nnpm i langchain @langchain/core @langchain/openai zod\n```\n\nProvider-specific integrations live in separate packages:\n\n`langchain`\n\n- `createAgent`\n\n, `tool`\n\n, and high-level chain helpers`zod`\n\n- tool input schemas when defining tools with `tool()`\n\n`@langchain/core`\n\n- prompts, output parsers, Runnable interface, LCEL`@langchain/openai`\n\n- `ChatOpenAI`\n\n, `OpenAIEmbeddings`\n\n`@langchain/textsplitters`\n\n- document chunking (used in the For raw API access, see the [Chat Completions](https://sevic.dev/notes/chatgpt-api-nodejs/) and [OpenAI Responses API](https://sevic.dev/notes/llm-integration-openai-responses-api/) posts. For provider-agnostic text and agents, see the [Vercel AI SDK](https://sevic.dev/notes/llm-integration-vercel-ai-sdk/) and [OpenAI Agents SDK](https://sevic.dev/notes/ai-agents-openai-sdk/) posts.\n\n| Tool | Best for |\n|---|---|\nRaw `openai` package |\nMinimal calls, full control, least abstraction |\n|\n\n`generateText`\n\n, streaming, embeddings, tool loops`createAgent`\n\n, swappable vector storesReach for LangChain when RAG or multi-step LLM pipelines grow beyond a few manual API calls.\n\n`langchain`\n\n, `@langchain/core`\n\n, `@langchain/openai`\n\n, and `zod`\n\ninstalled`OPENAI_API_KEY`\n\nset in the environment**Document** - a chunk of text with optional metadata. Loaders produce `Document`\n\ninstances; splitters break long sources into retrieval-friendly pieces.\n\n``` js\nimport { Document } from '@langchain/core/documents';\n\nconst doc = new Document({\n  pageContent: 'LangChain helps compose LLM pipelines.',\n  metadata: { source: 'intro' }\n});\n```\n\n**Runnable** - any component with `.invoke()`\n\n, `.stream()`\n\n, or `.batch()`\n\n. Prompts, models, parsers, and composed chains are all Runnables.\n\n**LCEL (LangChain Expression Language)** - chain Runnables with `.pipe()`\n\n. Data flows left to right: prompt → model → parser. The same `.invoke()`\n\n, `.stream()`\n\n, and `.batch()`\n\ninterface applies to every Runnable in the chain.\n\n``` js\nimport { ChatPromptTemplate } from '@langchain/core/prompts';\nimport { StringOutputParser } from '@langchain/core/output_parsers';\nimport { ChatOpenAI } from '@langchain/openai';\n\nconst prompt = ChatPromptTemplate.fromMessages([\n  ['system', 'Answer in one sentence.'],\n  ['human', '{question}']\n]);\n\nconst model = new ChatOpenAI({ model: 'gpt-5.5' });\nconst chain = prompt.pipe(model).pipe(new StringOutputParser());\n\nconst answer = await chain.invoke({ question: 'What is LangChain?' });\nconsole.log(answer);\n```\n\n**Agents** - LangChain's current high-level agent API is [ createAgent](https://docs.langchain.com/oss/javascript/langchain/agents). Pass a model string or chat model, optional tools (with\n\n`zod`\n\nschemas), and an optional checkpointer for conversation memory (`@langchain/langgraph`\n\n):\n\n``` js\nimport { createAgent } from 'langchain';\n\nconst agent = createAgent({\n  model: 'gpt-5.5',\n  tools: []\n});\n\nconst result = await agent.invoke({\n  messages: [{ role: 'user', content: 'What is LangChain?' }]\n});\n```\n\n`@langchain/langgraph`\n\n`thread_id`\n\n; long-term memory via `createAgent`\n\nwith tools and middleware; for production agents you may also prefer the `LANGSMITH_TRACING=true`\n\n); optional The same LCEL chain supports streaming and batch invocation:\n\n``` js\nfor await (const chunk of await chain.stream({ question: 'What is LCEL?' })) {\n  process.stdout.write(chunk);\n}\n\nconst answers = await chain.batch([\n  { question: 'What is a Runnable?' },\n  { question: 'What is a retriever?' }\n]);\n```\n\nRunnable LCEL scripts for this post live in the `langchain-overview-nodejs-demo`\n\nfolder. Get access via [code demos](https://sevic.dev/demos).", "url": "https://wpnews.pro/news/langchain-overview-for-node-js", "canonical_source": "https://dev.to/zsevic/langchain-overview-for-nodejs-54en", "published_at": "2026-06-15 20:43:14+00:00", "updated_at": "2026-06-15 21:02:38.183905+00:00", "lang": "en", "topics": ["large-language-models", "developer-tools", "ai-agents"], "entities": ["LangChain", "Node.js", "TypeScript", "OpenAI", "LangGraph", "Vercel AI SDK", "OpenAI Agents SDK", "Zod"], "alternates": {"html": "https://wpnews.pro/news/langchain-overview-for-node-js", "markdown": "https://wpnews.pro/news/langchain-overview-for-node-js.md", "text": "https://wpnews.pro/news/langchain-overview-for-node-js.txt", "jsonld": "https://wpnews.pro/news/langchain-overview-for-node-js.jsonld"}}