模块 1: 环境搭建与基础概念
1.1 LangChain.js/TS 简介
LangChain 是一个用于开发由大型语言模型(LLMs)驱动的应用程序的框架。它提供了一套工具、组件和接口,旨在简化 LLM 应用程序的开发流程。LangChain 支持多种语言,包括 Python 和 JavaScript/TypeScript。对于 TypeScript 开发者而言,LangChain.js 提供了完整的类型安全和现代 JavaScript 生态系统的优势 [1]。
1.2 环境搭建
在开始使用 LangChain.js 之前,需要进行必要的环境搭建。这主要包括安装 LangChain 库及其相关依赖,并配置 LLM 提供商的 API 密钥。
1.2.1 安装核心库
首先,通过 npm 或 yarn 安装 LangChain 的核心库以及您计划使用的 LLM 提供商的集成库。例如,如果使用 DeepSeek 模型,则需要安装 @langchain/openai (因为 DeepSeek 兼容 OpenAI API 协议):
bash
npm install langchain @langchain/openai
# 或者
yarn add langchain @langchain/openai
1.2.2 配置 API 密钥
大多数 LLM 提供商(如 DeepSeek)都需要 API 密钥进行身份验证。建议将这些密钥存储在环境变量中,以确保安全性并避免将其硬编码到代码中。例如,对于 DeepSeek API 密钥,可以在 .env 文件中设置 DEEPSEEK_API_KEY:
dotenv
DEEPSEEK_API_KEY="your_deepseek_api_key_here"
然后在您的 TypeScript 代码中,可以使用 process.env 来访问这些环境变量。为了在 Node.js 环境中加载 .env 文件,通常会使用 dotenv 库:
bash
npm install dotenv
并在应用程序的入口文件顶部引入并配置 dotenv:
typescript
import 'dotenv/config';
// 现在可以通过 process.env.DEEPSEEK_API_KEY 访问密钥
1.3 LLM 与 Chat Models
在 LangChain 中,有两种主要的模型类型用于与大型语言模型进行交互:LLM (Large Language Models) 和 Chat Models (聊天模型)。理解它们之间的区别对于选择合适的模型接口至关重要。
1.3.1 LLM (Large Language Models)
LLM 接口通常用于处理纯文本输入和输出 。它们接收一个字符串作为输入,并返回一个字符串作为输出。这适用于需要生成文本、完成句子或进行文本摘要等任务。例如,OpenAI 类就是 LLM 接口的一个实现,但我们可以通过配置使其指向 DeepSeek 的 API。
typescript
import { ChatOpenAI } from "@langchain/openai"; // 注意:DeepSeek 兼容 OpenAI API,所以仍使用 @langchain/openai
const model = new ChatOpenAI({
model: "deepseek-v4-flash", // 指定 DeepSeek 模型
temperature: 0.9, // 控制输出的随机性
apiKey: process.env.DEEPSEEK_API_KEY, // 使用 DeepSeek API Key
configuration: {
baseURL: "https://api.deepseek.com", // DeepSeek API 的基础 URL
},
});
const result = await model.invoke("写一个关于人工智能的短篇故事。");
console.log(result.content); // 访问生成内容
1.3.2 Chat Models (聊天模型)
Chat Models 接口专门用于处理一系列消息 作为输入,并返回一个消息作为输出。这些模型更适合于对话式应用,因为它们能够理解对话的上下文和角色(如系统、人类、AI)。ChatOpenAI 类是 Chat Models 接口的一个实现,同样可以配置为使用 DeepSeek。
消息通常由 HumanMessage、AIMessage 和 SystemMessage 等类型组成,它们带有 content 和 role 属性。
typescript
import { ChatOpenAI } from "@langchain/openai";
import { HumanMessage, SystemMessage } from "@langchain/core/messages";
const chatModel = new ChatOpenAI({
model: "deepseek-v4-flash", // 指定 DeepSeek 模型
temperature: 0.7,
apiKey: process.env.DEEPSEEK_API_KEY,
configuration: {
baseURL: "https://api.deepseek.com", // DeepSeek API 的基础 URL
},
});
const messages = [
new SystemMessage("你是一个乐于助人的 AI 助手。"),
new HumanMessage("你好,请问今天天气怎么样?"),
];
const response = await chatModel.invoke(messages);
console.log(response.content);
1.3.3 总结对比
| 特性 | LLM (Large Language Models) | Chat Models (聊天模型) |
|---|---|---|
| 输入 | 纯文本字符串 | 消息数组 (HumanMessage, AIMessage, SystemMessage) |
| 输出 | 纯文本字符串 | AI 消息对象 (AIMessage) |
| 适用场景 | 文本生成、摘要、补全 | 对话系统、聊天机器人、多轮交互 |
| 示例类 | ChatOpenAI (配置为 LLM 行为) |
ChatOpenAI (配置为 Chat 行为) |
参考文献
1\] LangChain.js Overview. (n.d.). Docs by LangChain. Retrieved from