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 类即可

相关推荐
用户3134672143546 分钟前
Agent 开发学习笔记(七):RAG: 从建库到检索到生成
langchain·agent
啊吧怪不啊吧7 分钟前
LangChain之模型调用
python·langchain
PNP Robotics9 分钟前
【PNP具身解读】GPT6 Astra:具身智能新范式,大模型 + Franka机器人快速落地验证一、GPT6 Astra 背后的布局、数据与具身方向
人工智能·学习·机器学习·机器人
小李不想当小白26 分钟前
PCB结构与组成(PCB设计入门学习笔记)
经验分享·笔记·单片机·嵌入式硬件·学习·pcb工艺·pcb
那年窗外下的雪.28 分钟前
第 02 天:Linux 权限、inode、目录项与链接
学习·http
ikun_文41 分钟前
LangChina-创建第一个Agent
langchain·agent
XGStudio20241 小时前
免费安全的 - 二维码转换工具
学习·ai
邵奈一1 小时前
【紧急处理ZCode事件】ZCode 工作区快照静默上传:检测方法与三层防护实践
人工智能·学习·大模型·国产
Maiko Star1 小时前
LangChain核心组件-前置介绍
langchain
那年窗外下的雪.1 小时前
AIDC 学习日志|第 27 天|EVPN 多归属收敛时间线与 Leaf2 接管验证
网络协议·学习·http·tcpdump