LangChain.js 开发日志
pnpm add langchain @langchain/core @langchain/langgraph @langchain/ollama
pnpm add -D @types/node ts-node tsx typescript

目录结构如下:

2025-12-31_18-06

package.json

{
  "name": "langchain-llm",
  "version": "1.0.0",
  "description": "",
  "type": "module",
  "main": "index.ts",
  "scripts": {
    "ollama": "tsx src/ollama.ts",
    "prompt-template": "tsx src/prompt-template.ts",
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "packageManager": "[email protected]",
  "dependencies": {
    "@langchain/core": "^1.1.8",
    "@langchain/langgraph": "^1.0.7",
    "@langchain/ollama": "^1.1.0",
    "dotenv": "^17.2.3",
    "langchain": "^1.2.3",
  },
  "devDependencies": {
    "@types/node": "^25.0.3",
    "ts-node": "^10.9.2",
    "tsx": "^4.21.0",
    "typescript": "^5.9.3"
  }
}

src/ollama.ts

import { ChatOllama } from "@langchain/ollama";

async function main() {
  const llm = new ChatOllama({
    model: "qwen2.5:7b", // 或 deepseek-r1:7b
    // model: "deepseek-coder:6.7b", // 或 deepseek-r1:7b
    temperature: 0,
  });

  const res = await llm.invoke("用一句话解释什么是 LangChain");

  console.log(res.content);
}

main().catch(console.error);

src/prompt-template.ts

import { ChatOllama } from "@langchain/ollama";
import { PromptTemplate } from "@langchain/core/prompts";
import { StringOutputParser } from "@langchain/core/output_parsers";

const model = new ChatOllama({
  model: "qwen2.5:7b", // 或 deepseek-r1:7b
  temperature: 0,
});

// 创建 Prompt 模板
const promptTemplate = PromptTemplate.fromTemplate(`
你是一个{role},专门帮助用户解决{domain}相关的问题。

用户问题:{question}

请提供详细、专业的回答,包含以下要素:
1. 问题分析
2. 解决方案
3. 代码示例(如果适用)
4. 最佳实践建议

回答:
`);

// 创建输出解析器
const outputParser = new StringOutputParser();

// 构建处理链
const chain = promptTemplate.pipe(model).pipe(outputParser);

async function promptTemplateExample() {
  try {
    const result = await chain.invoke({
      role: "资深前端工程师",
      domain: "React 性能优化",
      question: "如何优化 React 应用的渲染性能?",
    });

    console.log("优化建议:");
    console.log(result);
  } catch (error) {
    console.error("处理失败:", error);
  }
}

promptTemplateExample();

Ref