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

相关推荐
gjf05_052 小时前
人该怎样活着呢?版本75.8
学习
半个落月2 小时前
LangGraph.js 实战:从状态图到分支、循环、检查点与人工中断
javascript·人工智能·langchain
li星野3 小时前
【学习记录】PCB与PCBA核心知识全解析:从设计到制造的关键细节
学习·制造
卿卿的产品经理日记4 小时前
【AI产品经理实战】Day 35|从“沉迷工具“到回归 AI 底层:Skill 收官、系统复盘与下一个 13 天
人工智能·学习·产品经理
一条泥憨鱼4 小时前
【从0开始学习计算机网络】| ARP 协议:地址解析,ARP 欺骗,链路层寻址
网络·后端·学习·计算机网络
大连好光景5 小时前
LangChain的核心架构
langchain·langsmith·langserver
染指11105 小时前
142.Agent-多Agent框架-通过Skills实现多Agent
开发语言·人工智能·python·langchain·agents
HY小宝F5 小时前
树莓派智能摄像头系统 30 天重学计划之 Day 04 · HTTP / API:控制链入口 —— 学习总结
网络协议·学习·http
悟乙己6 小时前
AFAC2026 赛题四金融长文本 Agent竞赛学习笔记:赛题解析(一)
笔记·学习·金融
霍霍的袁6 小时前
【C++】哈希表实现指南:从原理到开放定址法、链地址法的实现
c++·学习·哈希算法·散列表·visual studio