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

模块 1: 环境搭建与基础概念 - 练习

练习目标

  1. 成功安装 LangChain.js 及其相关依赖。
  2. 配置 DeepSeek API 密钥。
  3. 使用 ChatOpenAI 类(配置为 DeepSeek)调用 LLM 模型,完成文本生成任务。
  4. 使用 ChatOpenAI 类(配置为 DeepSeek)调用 Chat Model 模型,完成对话任务。

准备工作

  1. 确保您的开发环境中已安装 Node.js (推荐 v18 或更高版本) 和 npm/yarn。
  2. 获取一个有效的 DeepSeek API 密钥。

练习步骤

步骤 1: 创建项目并安装依赖

创建一个新的 TypeScript 项目,并安装 LangChain 核心库、OpenAI 兼容集成库以及 dotenv

bash 复制代码
mkdir langchain-demo-m1
cd langchain-demo-m1
npm init -y
npm install typescript ts-node @types/node --save-dev
npm install langchain @langchain/openai dotenv

npx tsc --init

步骤 2: 配置 API 密钥

在项目根目录下创建 .env 文件,并添加您的 DeepSeek API 密钥:

dotenv 复制代码
DEEPSEEK_API_KEY="sk-YOUR_DEEPSEEK_API_KEY"

步骤 3: 使用 LLM 模型生成文本

创建一个名为 llm_text_generation.ts 的文件,并编写代码使用 ChatOpenAI 类(配置为 DeepSeek)生成一段关于"未来城市"的短文。设置 temperature 为 0.7。

typescript 复制代码
// llm_text_generation.ts
import 'dotenv/config';
import { ChatOpenAI } from "@langchain/openai";

async function main() {
  const model = new ChatOpenAI({
    model: "deepseek-v4-flash", // 指定 DeepSeek 模型
    temperature: 0.7,
    apiKey: process.env.DEEPSEEK_API_KEY, // 使用 DeepSeek API Key
    configuration: {
      baseURL: "https://api.deepseek.com", // DeepSeek API 的基础 URL
    },
  });

  const prompt = "请写一篇关于未来城市的短文,描述其交通、能源和生活方式。";
  console.log("正在生成文本...");
  const result = await model.invoke(prompt);
  console.log("\n--- 生成结果 ---\n");
  console.log(result.content); // 访问生成内容
}

main().catch(console.error);

运行您的代码:

bash 复制代码
npx ts-node llm_text_generation.ts

步骤 4: 使用 Chat Model 模型进行对话

创建一个名为 chat_conversation.ts 的文件,并编写代码使用 ChatOpenAI 类(配置为 DeepSeek)进行一段简单的对话。对话内容包括:

  1. 系统消息:你是一个友好的 AI 助手,擅长提供旅行建议。
  2. 用户消息:我想去一个阳光充足的海滩度假,有什么推荐吗?

设置 temperature 为 0.5。

typescript 复制代码
// chat_conversation.ts
import 'dotenv/config';
import { ChatOpenAI } from "@langchain/openai";
import { HumanMessage, SystemMessage } from "@langchain/core/messages";

async function main() {
  const chatModel = new ChatOpenAI({
    model: "deepseek-v4-flash", // 指定 DeepSeek 模型
    temperature: 0.5,
    apiKey: process.env.DEEPSEEK_API_KEY, // 使用 DeepSeek API Key
    configuration: {
      baseURL: "https://api.deepseek.com", // DeepSeek API 的基础 URL
    },
  });

  const messages = [
    new SystemMessage("你是一个友好的 AI 助手,擅长提供旅行建议。"),
    new HumanMessage("我想去一个阳光充足的海滩度假,有什么推荐吗?"),
  ];

  console.log("正在进行对话...");
  const response = await chatModel.invoke(messages);
  console.log("\n--- 对话结果 ---\n");
  console.log(response.content);
}

main().catch(console.error);

运行您的代码:

bash 复制代码
npx ts-node chat_conversation.ts

思考题

  1. ChatOpenAI 类如何通过配置同时支持 LLM 和 Chat Model 的行为?
  2. temperature 参数对模型生成结果有什么影响?尝试调整 temperature 的值,观察结果的变化。
  3. 为什么建议将 API 密钥存储在环境变量中而不是直接写在代码里?

一句话理清:LLM 与 Chat Model 关系

LLM = 大语言模型(统称)Chat Model = 专门做对话场景的 LLM 子类

为什么 ChatOpenAI 能兼容两种写法

ChatOpenAI 内部做了自动兼容:

你传纯字符串 → 底层自动包装成 user 单轮消息,走 LLM 文本生成逻辑

你传角色消息数组 → 直接走标准 Chat 对话逻辑

所以它一身两用,既可以当普通文本生成 LLM 用,也能当专业对话 ChatModel 用。

LLM 重在「续写文字」

ChatModel 重在「角色聊天」

ChatModel 是优化过对话能力的 LLM

现在开发统一只用 ChatOpenAI,抛弃老式 LLM 类即可

相关推荐
数智工坊5 小时前
机器人运动控制:采样、优化与学习三大流派深度对比与实战
android·学习·机器人
ZC跨境爬虫6 小时前
跟着 MDN 学JavaScript day_7:数学运算与逻辑判断实战测试
开发语言·前端·javascript·学习·ecmascript
阳区欠7 小时前
【LangChain】LLM基础介绍
开发语言·python·langchain
MartinYeung58 小时前
[论文学习]隐私保护联邦特徵选择与差分隐私的的工程实践框架
学习
qeen878 小时前
【C++】类与对象之类的默认成员函数(二)
android·c语言·开发语言·c++·笔记·学习
动能小子ohhh9 小时前
DocForge平台的设计与开发--文件上传接口的实现
开发语言·人工智能·python·langchain·ocr·fastapi
Flandern11119 小时前
Pull Requests(PR)
学习·github·pr
颜酱10 小时前
LangChain LCEL Chain 零基础入门指南
langchain
nashane10 小时前
HarmonyOS 6学习:JsCrash“闪退”法医指南——从FaultLog堆栈还原崩溃现场的终极手册
学习·华为·harmonyos
for_ever_love__10 小时前
UI学习:UICollectionView瀑布流
学习·ui·ios·objective-c·cocoa