node.js和nest.js做智能体开发需要会哪些东西

作者:光影少年日期:2025/11/27

✅ 一、学习路线图(从零到上线)

我把大模型应用开发拆成 6 个阶段:

阶段 1:基础能力(Node.js + TS)

  • JavaScript ES6+
  • TypeScript(类型、泛型、类、装饰器)
  • Node.js 基础:async/await、fs、path、events
  • npm / pnpm 基本指令

阶段 2:Nest.js 后端基础

  • 项目创建(CLI)
  • 模块、控制器、服务
  • 依赖注入(DI)
  • DTO + Pipe
  • Interceptor
  • 全局异常过滤
  • Swagger 文档生成

阶段 3:数据库 + 服务端能力

  • TypeORM / Prisma
  • MySQL / Postgres
  • Redis(缓存 + 限流)
  • 登录鉴权(JWT)
  • 文件上传、HTTP 请求
  • WebSocket / SSE(AI 流式响应)

阶段 4:大模型核心能力(重点)

  • OpenAI / DeepSeek / 通义 API 调用
  • Chat Completions / Responses
  • Function Calling(智能体最重要)
  • JSON 模式(用 AI 准确生成结构化数据)
  • 多模态(图片理解 / 生成)
  • 提示词工程 Prompt Engineering

阶段 5:AI 智能体(Agent)开发能力

  • Agent 工作流(workflow)
  • Memory(会话记忆)
  • 工具调用(Tools)
  • LangChain.js / LangGraph.js
  • 多智能体协作
  • 系统角色 Prompt 设计
  • 决策 Agent(Planner + Executor)

阶段 6:RAG(检索增强生成)知识库能力

  • 文档切片(chunking)
  • 文档解析(PDF/Word/网页)
  • Embedding(向量化)
  • 向量数据库(Milvus、Pinecone、Qdrant、Chroma)
  • 混合检索(关键词 + 向量)
  • RAG Pipeline(召回 → 重写 → 生成)

阶段 7:部署与工程化

  • Docker 容器化
  • Nginx
  • Linux 基本运维
  • 日志系统(Winston/Pino)
  • 监控(Sentry)
  • CI/CD(GitHub Actions)

🧭 二、详细学习顺序(逐步升级技能)

你只要按照下面这个顺序走 1~2 个月就能开发 AI 智能体项目。


📌 Step 1:TypeScript 基础(2 天)

掌握:

  • interface & type
  • class
  • 泛型
  • 装饰器(Nest.js 会大量使用)

📌 Step 2:Node.js 核心(2–4 天)

重点:

  • async/await
  • fs / path
  • HTTP 请求(axios)
  • 事件循环

📌 Step 3:Nest.js 基础(7 天)

掌握:

  • Controller、Service
  • Module + DI
  • CRUD
  • DTO + Pipe
  • Interceptor(日志 / 响应包装)
  • Swagger(API 文档)
  • 全局异常过滤

📌 Step 4:OpenAI / DeepSeek 接口(3–5 天)

掌握:

  • Chat API
  • 流式输出
  • Function Calling (工具调用)
  • JSON mode

📌 Step 5:智能体框架(10–14 天)

  • LangChain.js
  • LangGraph.js(打造真正的 Agent Workflow)
  • Memory(会话记忆)
  • Agent + Tools(工具调用)
  • 多智能体协作(Agent Team)

📌 Step 6:RAG(10–20 天)

  • Embedding
  • 向量数据库(Milvus / Qdrant / Pinecone / Chroma)
  • 文档解析
  • Query 重写
  • 混合检索
  • 最终构建一个知识库问答系统

📌 Step 7:部署(2–5 天)

  • Docker
  • 服务器部署
  • Nginx 反向代理
  • CI/CD

🧩 三、智能体 Demo(Nest.js + OpenAI)

1. 安装依赖

1npm install openai
2

2. 新建 AIService(核心智能体服务)

1// ai.service.ts
2import { Injectable } from '@nestjs/common';
3import OpenAI from 'openai';
4
5@Injectable()
6export class AIService {
7  private client = new OpenAI({
8    apiKey: process.env.OPENAI_API_KEY,
9  });
10
11  async ask(prompt: string) {
12    const response = await this.client.chat.completions.create({
13      model: "gpt-4o-mini",
14      messages: [{ role: "user", content: prompt }],
15    });
16
17    return response.choices[0].message.content;
18  }
19}
20

3. Controller

1// ai.controller.ts
2import { Controller, Get, Query } from '@nestjs/common';
3import { AIService } from './ai.service';
4
5@Controller('ai')
6export class AIController {
7  constructor(private aiService: AIService) {}
8
9  @Get('ask')
10  async ask(@Query('q') q: string) {
11    return await this.aiService.ask(q);
12  }
13}
14

4. Function Calling(智能体最重要)

1const res = await client.chat.completions.create({
2  model: "gpt-4o-mini",
3  messages: [
4    { role: "user", content: "给我查询北京今天的天气" }
5  ],
6  tools: [
7    {
8      type: "function",
9      function: {
10        name: "getWeather",
11        description: "获取指定城市的天气",
12        parameters: {
13          type: "object",
14          properties: {
15            city: { type: "string" }
16          },
17          required: ["city"]
18        }
19      }
20    }
21  ]
22});
23

🧰 四、AI 插件模板(OpenAI Plugin / Intelligent Agent Tool)

你可以做一个标准插件让 ChatGPT 调用你的 API。

目录结构

1/well-known/ai-plugin.json
2/openapi.yaml
3/api/your-endpoint
4

ai-plugin.json 示例

1{
2  "schema_version": "v1",
3  "name_for_human": "My AI Tools",
4  "name_for_model": "my_tools",
5  "description_for_model": "提供天气查询等工具",
6  "auth": { "type": "none" },
7  "api": {
8    "type": "openapi",
9    "url": "https://your-domain.com/openapi.yaml"
10  }
11}
12

openapi.yaml 示例

1openapi: 3.0.1
2info:
3  title: My AI API
4paths:
5  /weather:
6    get:
7      summary: 获取天气
8      parameters:
9        - name: city
10          in: query
11          required: true
12          schema:
13            type: string
14

完成后即可被 ChatGPT / Claude 作为工具调用。


📚 五、RAG 示例项目(从零到可用)

1. 解析文档(PDF / txt)

1import * as pdfParse from 'pdf-parse';
2
3const data = await pdfParse(fileBuffer);
4

2. 文档切片

1function chunkText(text: string, size = 500) {
2  let chunks = [];
3  for (let i = 0; i < text.length; i += size) {
4    chunks.push(text.slice(i, i + size));
5  }
6  return chunks;
7}
8

3. 向量化 Embedding

1const embedding = await client.embeddings.create({
2  model: "text-embedding-3-small",
3  input: chunk
4});
5

4. 存入向量数据库(以 Chroma 为例)

1import { ChromaClient } from "chromadb";
2

5. 检索召回

1const results = await collection.query({
2  query_embeddings: [queryEmbedding],
3  n_results: 5
4});
5

6. 让大模型根据召回内容回答

1await llm.chat.completions.create({
2  model: "gpt-4o-mini",
3  messages: [
4    { role: "system", content: "你是一个知识库助手" },
5    { role: "user", content: question },
6    { role: "assistant", content: retrievedText }
7  ]
8});
9


node.js和nest.js做智能体开发需要会哪些东西》 是转载文章,点击查看原文


相关推荐


三小时上线,七天破千刀:AI 出海订阅站的 0-1 全流程复盘
孟健AI编程2025/11/24

大家好,我是孟健。 上周末,创业的第二个月,我收到了第一笔客户订单。 到现在,短短一周内已经破千刀,并且收入还在刷新新高。 我给自己的 0-1 目标是:3 个月内赚到 1,000 美元,走出“新手村”。 现在提前达成,内心非常激动。 当然,最激动的应该还是第一个有收入的晚上,享受到了躺赚的快乐,也很符合“边际递减”的原理。 这篇总结原本几天前就想写,无奈竞争太激烈,我连续工作了十天应对各种变化和危机。 今天终于在休息的空档把整个过程和方法论写出来,希望对大家有启发。 由于竞争关系,产品本身暂


Tree of Thoughts:让大语言模型像人类一样思考
ToTensor2025/11/23

文章目录 前言引言什么是 Tree of Thoughts?传统方法的局限ToT 的优势 Game24:一个完美的例子ToT 的核心工作流程整体流程图1. 生成(Generation)2. 评估(Evaluation)3. 选择(Selection) 完整流程示例问题说明整体流程图详细步骤说明步骤 1/4:从初始状态开始步骤 2/4:对选中的候选继续生成步骤 3/4:继续搜索步骤 4/4:生成最终答案 完整路径总结 代码实现核心函数生成函数示例评估函数评估提示词示例


win11上wsl本地安装版本ubuntu25.10
Livingbody2025/11/21

1.安装wsl2 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart wsl --set-default-version 2 2.下载镜像 从163镜像下载 mi


Lua 的 assert 函数
IMPYLH2025/11/19

Lua 的 assert 函数 是一个内置的错误检查函数,主要用于验证条件并在条件不满足时抛出错误。其语法格式为: assert(condition [, error_message]) 参数说明: condition:要检查的条件表达式error_message(可选):当条件为假时要显示的错误信息 工作原理: 当 condition 为真时,assert 会返回所有传入的参数;当 condition 为假时,assert 会抛出错误。如果提供了 error_message,则使用该


增强现实与物联网融合在智慧城市交通管理中的智能优化应用探索
while(努力):进步2025/11/18

随着智慧城市建设的推进,交通管理系统面临着车辆数量激增、道路资源有限和实时交通信息复杂多变等挑战。传统交通管理依赖摄像头监控、信号灯定时控制和人工调度,已难以满足现代城市对高效、智能、低碳交通的需求。增强现实(AR)技术与物联网(IoT)设备的深度融合,为城市交通管理提供了新的解决方案。通过实时感知、数据分析和可视化指引,交通系统能够实现智能优化与动态决策。 在这一系统中,AR 用于将交通信息以直观可视化形式呈现给管理者或驾驶者,IoT 设备则提供实时路况、车辆定位、空气质量和交通流量等多维数


Python 的内置函数 slice
IMPYLH2025/11/17

Python 内建函数列表 > Python 的内置函数 slice Python 的内置函数 slice() 用于创建切片对象,可以应用于序列类型(如列表、字符串、元组)的切片操作。这个函数提供了一种更灵活的方式来定义切片,特别适合在需要动态生成切片参数的情况下使用。 基本语法 slice(stop) slice(start, stop[, step]) 参数说明 start(可选):切片的起始索引,默认为 None,表示从序列开头开始。stop:切片的结束索引(不包含该索引对应的


linux上gitlab runner部署文档
艾迪王2025/11/16

2025年11月16日 背景 平常使用的CI/CD主要是用Jenkins,git的本地hook,但是对于代码上传后执行差异代码优化这个技术场景流程场景来说: Jenkins流程只会做到全量排查,如果中途遇到问题代码导致失败,得不偿失,且一个仓库可能会有不再维护代码与无关代码,造成资源浪费 git本地hook问题在于,更新时每个组员都需要做,并且git commit的时候可以通过--no-verify 规避本地check,同时如果直接在gitlab上面IDE直接修改,则本地git hook脚本不


Redis(124)Redis在电商系统中的应用有哪些?
Victor3562025/11/15

在电商系统中,Redis 常常被用来实现高性能和高可用性的一些关键功能。以下是 Redis 在电商系统中的一些常见应用场景,并结合 Java 代码示例来详细介绍这些应用。 1. 商品详情缓存 为了提高商品详情页面的响应速度,通常会将商品详情缓存到 Redis 中,从而减少对数据库的直接访问。 示例代码 import redis.clients.jedis.Jedis; public class ProductCacheExample { public static void main(


限时免费!字节 TRAE SOLO 正式上线,无需邀请码!新增 TRAE Coder(附实测体验)
程序员X小鹿2025/11/13

大家好,我是X小鹿。昨天(11.12),字节的 TRAE SOLO 正式版全面开放,不需要邀请码了,人人可用,而且限时免费! 11.12 ~ 11.15,所有人都可以免费使用 TRAE SOLO。 SOLO 模式这次也全新升级,除了之前上线的 SOLO Builder 外,这次还新上了 SOLO Coder。 两种 SOLO 模式适合不同的场景,下面详细介绍。 除此之外,新升级的 TRAE SOLO 这次还支持「多任务并行」。 也就是说,可以同时运行多个任务了。每个任务,都有自己的模型和上下文


理解编程范式(前端角度)
颜酱2025/11/12

编程范式(Programming Paradigms)是编程的一种风格或方法,它定义了代码的结构和组织方式。编程范式提供了不同的思考和解决问题的角度,影响着程序员如何编写代码。 常见的前端编程范式包括: 命令式编程(Imperative Programming) 声明式编程(Declarative Programming) 函数式编程(Functional Programming) 面向对象编程(Object-Oriented Programming) 命令式编程(Imperative Pr

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2025 聚合阅读