/langchain:init
Initialize a new LangChain TypeScript project with optimal configuration for building AI agents.
Context
Detect the environment:
-
node --version
-
Node.js version
-
which bun
-
Check if Bun is available
Parameters
Parameter Description Default
project-name
Name of the project directory Required
Execution
- Create Project Directory
mkdir -p $1 && cd $1
- Initialize Package
If Bun is available:
bun init -y
Otherwise:
npm init -y
- Install Dependencies
Core packages:
Package manager: bun or npm
bun add langchain @langchain/core @langchain/langgraph bun add @langchain/openai # Default model provider
Dev dependencies
bun add -d typescript @types/node tsx
- Create TypeScript Config
Create tsconfig.json :
{ "compilerOptions": { "target": "ES2022", "module": "NodeNext", "moduleResolution": "NodeNext", "esModuleInterop": true, "strict": true, "skipLibCheck": true, "outDir": "dist", "declaration": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"] }
- Create Project Structure
mkdir -p src
- Create Example Agent
Create src/agent.ts :
import { ChatOpenAI } from "@langchain/openai"; import { createReactAgent } from "@langchain/langgraph/prebuilt"; import { tool } from "@langchain/core/tools"; import { z } from "zod";
// Example tool
const greetTool = tool(
async ({ name }) => Hello, ${name}!,
{
name: "greet",
description: "Greet someone by name",
schema: z.object({
name: z.string().describe("The name to greet"),
}),
}
);
// Create the agent const model = new ChatOpenAI({ model: "gpt-4o", temperature: 0, });
export const agent = createReactAgent({ llm: model, tools: [greetTool], });
// Run if executed directly
if (import.meta.url === file://${process.argv[1]}) {
const result = await agent.invoke({
messages: [{ role: "user", content: "Say hello to Claude" }],
});
console.log(result.messages[result.messages.length - 1].content);
}
- Create Environment Template
Create .env.example :
OpenAI (default)
OPENAI_API_KEY=sk-...
Optional: Anthropic
ANTHROPIC_API_KEY=sk-ant-...
Optional: LangSmith tracing
LANGCHAIN_TRACING_V2=true
LANGCHAIN_API_KEY=ls__...
LANGCHAIN_PROJECT=my-project
- Update package.json Scripts
Add to package.json :
{ "scripts": { "dev": "tsx watch src/agent.ts", "start": "tsx src/agent.ts", "build": "tsc", "typecheck": "tsc --noEmit" } }
- Create .gitignore
node_modules/ dist/ .env *.log
Post-Actions
Display success message with next steps:
-
Copy .env.example to .env and add API key
-
Run bun dev or npm run dev to start
-
Check LangChain docs for more examples
Suggest installing additional model providers if needed:
-
@langchain/anthropic for Claude
-
@langchain/google-genai for Gemini