💡 写在前面 : 学习新技术的最好方式不是死磕文档,而是动手实操 。 本文将带你使用新一代 AI 智能编辑器 Trae ,结合费曼学习法(用最通俗的语言解释复杂概念),在 10 分钟内从零搭建一个 LangChain 学习环境,并彻底搞懂其核心原理。
适合人群:Node.js 开发者、AI 应用初学者、希望体验 AI 结对编程的开发者。
🚀 第一步:拒绝配置地狱,用 Trae 一键搭建环境
不要去手动查 npm 怎么装包了,也不用担心版本冲突。我们直接利用 Trae 的 Solo 模式(Builder 模式),让 AI 帮你一键生成所有基础代码。
🛠️ 1. 让 AI 帮你干活
- 打开 Trae 编辑器。
- 按下
Cmd + I(macOS) 或Ctrl + I(Windows) 唤起 AI 对话框,或者切换到 Builder 模式。 - 直接复制以下提示词(Prompt)发送给 Trae:
text
我是 LangChain 初学者,请帮我在当前目录下搭建一个 Node.js 学习环境:
1. 初始化 package.json。
2. 安装依赖:`langchain`, `@langchain/deepseek`, `@langchain/core`, `dotenv`。
3. 创建三个核心案例文件(请写出完整代码):
- `src/simple-llm-app.js`: 实现一个最简单的"中英翻译"流式对话 Chain。
- `src/cot.js`: 实现一个"思维链(Chain of Thought)"案例,模拟资深工程师排查网页性能问题,使用 SystemMessage 引导推理。
- `src/few-shot-learning.js`: 实现一个"少样本学习(Few-Shot)"案例,教会 AI 生成 JSDoc 格式的注释。
4. 创建 `.env` 文件,内容为 `DEEPSEEK_API_KEY=`,并提示我需要填入 DeepSeek 的 Key。
完成后,请告诉我如何运行这些文件。
- 点击发送,看着 Trae 自动为你创建文件、安装依赖。
🔑 2. 关键准备:配置 API 密钥
代码生成好后,你还需要一把"钥匙"才能启动 AI。本项目使用 DeepSeek(深度求索)的大模型能力。
-
获取密钥 :前往 DeepSeek 开放平台 注册账号并创建 API Key。
-
配置项目:
- 打开 Trae 刚刚帮你生成的
.env文件。 - 找到
DEEPSEEK_API_KEY=这一行。 - 将你申请到的以
sk-开头的密钥粘贴在后面(注意不要有空格)。
envDEEPSEEK_API_KEY=sk-your-secret-key-here - 打开 Trae 刚刚帮你生成的
做完这一步,你的环境就彻底准备好了!
🍳 第二步:费曼学习法------如果不写代码,怎么理解 LangChain?
在运行代码之前,我们先建立一个心智模型。看着生成出来的代码,你可能会问:"这些 Chain, PromptTemplate 到底是干嘛的?"
想象一下:
- 你是主厨(开发者)。
- LLM(大模型,如 DeepSeek)是你的天才帮厨。他博学多才,但有时很死板,必须指令非常精确才能干好活。
- LangChain 是你买的一套"现代化中央厨房系统"。
如果你没有 LangChain,你每天都要对帮厨大喊大叫:"嘿,把这个切了!嘿,用那个语气说话!"(手动拼接字符串,手动调 API)。
有了 LangChain,你拥有了:
- 标准印章(Prompt Template):把常用指令刻成章,盖下去就是标准需求。
- 自动化传送带(Chain/Pipe):原料放上去,自动经过"切菜-烹饪-摆盘",最后出成品。
- 样板间(Few-Shot):直接展示成品样例,让帮厨照猫画虎,不再需要费尽口舌解释。
💻 第三步:核心代码拆解与运行
现在,打开 Trae 刚刚帮你生成的代码文件,我们来一一对应上述概念。
1. 基础入门:自动化流水线 (Chains)
核心概念 :
PromptTemplate(模版)+Pipe(管道) 文件 :src/simple-llm-app.js
代码核心片段:
javascript
// ... 省略 import ...
// 1. 准备模版(印章):定义好输入变量 {input_language} 等
const prompt = ChatPromptTemplate.fromMessages([
[
"system",
"You are a helpful assistant that translates {input_language} to {output_language}.",
],
["human", "{text}"],
]);
// 2. 初始化模型(帮厨)
const llm = new ChatDeepSeek({ model: "deepseek-chat" });
// 3. 搭建传送带(Chain):模版 -> 模型 -> 字符串处理
// .pipe() 是 LangChain 最优雅的设计,像接水管一样把处理流程串起来
const chain = prompt.pipe(llm).pipe(new StringOutputParser());
// 4. 启动机器
await chain.stream({
input_language: "English",
output_language: "Chinese",
text: "I love programming with Trae!",
});
📺 运行效果: 在终端输入 node src/simple-llm-app.js,你会看到:
text
我爱用 Trae 编程!
(AI 会自动将英文翻译成中文,而且是流式输出的。)
🔍 解析: 以前你需要手动拼接字符串发送给 API,现在通过 prompt.pipe(llm),你定义了一套标准作业程序(SOP)。无论输入变什么,流程永远稳健。
2. 进阶思考:思维链 (Chain of Thought)
核心概念 :
SystemMessage(人设设定)+Reasoning(推理引导) 文件 :src/cot.js
代码核心片段:
javascript
// ... 省略 import ...
// 1. 精心设计的 System Prompt(给帮厨的岗前培训手册)
const systemPrompt = `
你是一个负责排查网页性能问题的资深工程师。
请使用 Chain-of-Thought(连锁思维)在内部系统性地分析问题...
输出格式严格分为两部分:
1) Reasoning Summary: <思考过程摘要>
2) Final Answer: <分步骤建议>
`;
const messages = [
new SystemMessage(systemPrompt), // 设定人设与规则
new HumanMessage("如果一个网页加载速度慢,该如何处理?"), // 用户提问
];
// 2. 调用模型
const res = await llm.invoke(messages);
console.log(res.content);
📺 运行效果: 在终端输入 node src/cot.js,你会看到结构非常清晰的回答:
text
1) Reasoning Summary:
分析了前端资源大小、网络延迟及后端响应时间。确定了性能瓶颈可能在于图片未压缩和 API 响应慢。
2) Final Answer:
a) 性能监控:使用 Chrome DevTools 和 Lighthouse 确定具体慢在哪个环节...
b) 性能数据分析:分析 Network 面板中的 Waterfall 图...
c) 解决方案:开启 Gzip 压缩,使用 CDN...
...
(AI 没有直接给答案,而是先展示了它的思考过程摘要,然后给出了结构化的建议。)
🔍 解析: LangChain 通过明确区分 SystemMessage(系统指令)和 HumanMessage(用户输入),让你能更精准地控制模型的**"思考深度"**。这里通过 Prompt Engineering 技巧,强制模型进行 CoT 推理,从而得到比普通问答更专业、逻辑更严密的答案。
3. 高级调教:少样本学习 (Few-Shot Learning)
核心概念 :
FewShotPromptTemplate(示例增强) 文件 :src/few-shot-learning.js
代码核心片段:
javascript
// ... 省略 import ...
// 1. 定义示例库(Examples):告诉模型什么是"满分答案"
const examples = [
{
question: "function add(a, b) { return a + b; }",
answer: "/** 两个数字相加求和 ... */",
},
// ... 更多示例
];
// 2. 创建"样板间"模版
const prompt = new FewShotPromptTemplate({
examples: examples, // 注入示例
// ...
});
// 3. 模型看到示例后,会模仿示例的风格来处理新输入
const formatted = await prompt.format({
input: "function formatDate(date) { ... }",
});
📺 运行效果: 在终端输入 node src/few-shot-learning.js,AI 会自动为你的函数写出完美的注释:
javascript
/**
* 格式化日期对象为 YYYY-MM-DD 格式的字符串
* @param {Date} date - 需要格式化的日期对象
* @returns {string} 格式化后的日期字符串
*/
(注意:你并没有告诉它要用 @param,但因为它看了你给的示例,所以它学会了。)
🔍 解析: 这是 LangChain 极其强大的能力。通过 FewShotPromptTemplate,你不需要微调模型(Fine-tuning),只需要在 Prompt 中动态插入几个高质量的例子(Context),就能显著提升模型在特定任务上的表现。这叫**"照猫画虎"**,效果拔群。
📝 总结与行动
你现在已经拥有了一个完整的 LangChain 实验环境。不要停在这里!
下一步,你可以继续使用 Trae 进行探索:
- 修改需求 :选中
simple-llm-app.js的代码,告诉 Trae:"把这个改造成一个只会用莎士比亚风格说话的机器人"。 - 增加功能 :告诉 Trae:"我想把
cot.js的输出结果保存到一个 markdown 文件里"。 - 解释代码:遇到看不懂的函数,直接选中代码问 Trae:"这一行具体做了什么?"
LangChain 不生产智能,它是连接你的意图与大模型能力的桥梁。而 Trae,就是帮你快速架起这座桥梁的工程师。
快去动手试试吧!🚀