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 小时前
buuctf-pwn xdctf2015_pwn200题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
何以解忧,唯有..6 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain
大衛說6 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习
吃好睡好便好7 小时前
查找函数的使用
学习·算法·matlab·生活·查找函数
学运维的Kysan7 小时前
暑假运维学习打卡第二十九天8.29
学习
zbyyd8 小时前
Linux 进程间通信学习笔记
linux·笔记·学习
一条破秋裤8 小时前
02_软件安装与新建工程
学习
来了就未晚8 小时前
Python基础 学习代码存储与命名规范
开发语言·python·学习
GHL2842710908 小时前
用codex做一个简单技能学习
学习·ai
落魄大学生之流水线上谋生计8 小时前
LangGraph 基本用法指南
java·windows·python·langchain