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

相关推荐
试剂界的爱马仕13 小时前
α-Cyano-4-hydroxycinnamic acid(CHCA)用作 MALDI-TOF 基质的配制与使用
大数据·人工智能·深度学习·学习
2501_9130613413 小时前
MCP核心能力
langchain
小向是个Der13 小时前
嵌入式进阶——编译与链接
汇编·单片机·学习·编译原理·交叉编译
学网安的肆伍14 小时前
认证机制攻防学习|PortSwigger Authentication 靶场复现总结(二):用户名枚举进阶
学习·web安全·网络安全·burpsuite·portswigger·认证安全·靶场复现
小林ixn14 小时前
从线性 RAG 到 Agentic RAG:用 LangGraph 搭一个会判断、会纠错、会兜底的检索闭环
langchain·llm·agent
海绵宝宝转agent14 小时前
Leetcode二叉树算法个人理解
笔记·学习·算法·leetcode·深度优先
小oo呆14 小时前
【学习心得】MCP工具开发学习笔记
笔记·学习
kyrie_sakura14 小时前
大模型学习19 大模型学习 - LangChain2_Retrieval(RAG-文档处理-向量处理检索-Milvus)
学习·langchain·milvus
女神下凡15 小时前
芯参谋(79):嵌入式学习进阶_(硬件与软件)深入实践指南
arm开发·单片机·嵌入式硬件·学习·fpga开发·设计规范
星恒随风15 小时前
Linux Socket TCP编程(二):逐文件重构多进程、多线程与线程池服务器,深入fork、pthread_create、popen和std::bind
linux·服务器·笔记·学习·tcp/ip