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

相关推荐
大模型真好玩3 天前
LangChain DeepAgents 速通指南(九)—— 生产级智能体框架 DeepAgents Code 源码导读
人工智能·langchain·agent
早点睡啊5 天前
精读 LangChain 官方文档(二)Model 篇:把模型调用升级成工程化推理接口
人工智能·langchain
星始流年7 天前
从 Tool 到 Skill——基于 LangChain 的服务端Skill实现
前端·langchain·agent
codedx7 天前
LangChain 和 LangGraph 构建的 Agent 项目模版
后端·langchain·agent
颜酱8 天前
LangGraph 入门指南
langchain
武子康9 天前
调查研究-186 LangChain 和 LangGraph 的区别:从快速构建 Agent 到生产级工作流编排
人工智能·langchain·llm
葫芦和十三11 天前
渐进发现|代码库不是文档库
langchain·agent·ai编程
柒和远方12 天前
LangGraph 深度解析:从增强型 LLM 到生产级 Agent
langchain·llm·agent
通信小呆呆13 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick13 天前
自动对焦学习-3
人工智能·学习·计算机视觉