LangChain学习之环境搭建与基础概念(1/8)

模块 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 https://docs.langchain.com/oss/javascript/langchain/overview

相关推荐
前端精髓4 小时前
结构化输出with_structured_output(抽卡)
python·langchain
Nuanyt6 小时前
Agent 学习笔记(下篇三):上线工程、进阶选择与操作界面(Stage 7 / 7.5 / 8 + 延伸路线)
笔记·python·学习·memory·aiagent·harness
叼烟扛炮7 小时前
Linux 学习笔记(四十一):TCP 并发演进——从单进程到多线程服务器
linux·运维·服务器·网络·笔记·学习·tcp/ip
叼烟扛炮7 小时前
Linux 学习笔记(四十四):HTTP 协议解析与极简 Web 服务器实战
linux·服务器·学习
songyuc8 小时前
【Manskill3】TableSceneBuilder学习笔记
pytorch·笔记·学习
LMT流氓兔8 小时前
第五单元——第十六课:给书店助手加上网页界面
java·开发语言·jvm·人工智能·oracle·langchain·1024程序员节
小许学java8 小时前
AI通识与基础
人工智能·langchain
外收内放9 小时前
Python基础语法练习题(75)
开发语言·python·学习
kyrie_sakura11 小时前
大模型学习20 大模型学习 - LangChain3 - Agents
人工智能·学习·langchain
zroooo11 小时前
计算机学习-知识庞大而繁杂
笔记·学习