怎么 能通俗易通的理解rag的原理
我给你用最通俗、最接地气、前端程序员一听就懂的方式,把 RAG 讲明白,没有公式、没有玄学。
一句话讲透 RAG
RAG = 让 AI 能 “查资料” 再回答,而不是只凭记忆瞎说。
用你最熟的场景类比:前端 + 百度
你可以把 大模型(AI) 当成一个 超级厉害但记性不好的前端大神:
- 会写代码、懂原理
- 但记不住细节、记不住新版本、记不住你的业务
- 时间久了还会编答案(幻觉)
这时候你问他: “我这个业务系统里的用户权限怎么判断?”
他不知道你的业务,就会瞎编。
那 RAG 是干嘛的?
RAG 就是:先把你的业务文档、知识库,丢给 AI 当 “参考资料” AI 回答前,先去资料里查 → 查到相关内容 → 再结合知识回答。
超通俗流程(前端版)
我把 RAG 拆成 4 步,你秒懂:
1. 先把 “资料” 切成碎片
比如你有:
- 公司业务文档 100 篇
- 接口文档
- 前端规范
- 数据库表结构
- 历史需求
RAG 会做一件事:把这些长文章切成一段一段小碎片就像把一本书 撕成一页一页纸条。
2. 把碎片变成 “向量”(你理解成:标签)
你不用管向量是啥,你就理解成:给每一段文字打标签,方便搜索。
比如:
- “用户权限” → 标签 A
- “订单流程” → 标签 B
- “Vue3 性能优化” → 标签 C
3. 你提问时,AI 先 “搜索”
你问: “用户怎么判断权限?”
RAG 立刻做:去所有碎片里,搜索最相关的几段
就像你在 掘金 / 百度 / 内网文档 搜关键词。
4. 把搜到的资料丢给 AI,让 AI 整理回答
AI 拿到资料后说: “哦,原来你家业务是这样的,我懂了。”
然后才给你回答。
最终结论(最通俗)
没有 RAG 的 AI = 闭卷考试
会的就说,不会的就瞎编。
有 RAG 的 AI = 开卷考试
不会就翻书,翻到再回答。
前端程序员专属理解(最强版本)
你可以把 RAG 理解成:
AI = 大脑(负责理解、生成)
向量库 = 数据库(存你的业务资料)
检索 = 接口请求(查相关资料)
整个流程就是:
- 用户提问
- 系统去 “数据库” 查相关资料
- 把问题 + 资料一起发给 AI
- AI 基于资料回答
RAG 解决了 AI 3 个致命问题
- AI 不会瞎编了(因为有资料依据)
- AI 能知道你的业务(传统 AI 不知道)
- AI 能知道最新知识(不用重新训练)
再浓缩成一句最土的话
RAG 就是:让 AI 先查资料,再说话。
如果你愿意,我还能给你讲:
- RAG 和 微调(Fine-tune)的区别
- 前端怎么用 RAG 做自己的 AI 客服 / AI 文档助手
- 用 5 行代码带你跑一个最简单的 RAG 演示
你想听哪个?
RAG 和 微调(Fine-tune)的区别 通俗易懂的说
我用前端程序员一看就懂的场景,把 RAG 和 微调(Fine-tune)的区别讲透,全程大白话,没有专业术语:
核心类比(一句话记住)
- RAG = 给 AI 配 “查资料的功能” (开卷考试,临时查)
- 微调 = 给 AI“补课、记知识点” (闭卷考试,记脑子里)
用「前端开发」场景拆解,秒懂
假设你有一个需求:让 AI 熟练掌握你们公司独有的前端组件库(比如叫 “公司组件库 v3.2”),这个组件库只有内部文档,公开资料里没有。
场景 1:用 RAG 实现
操作方式:
- 把你们的组件库文档、使用示例、常见问题,全部丢进 RAG 的 “资料库”;
- 用户问 AI:“公司组件库的表格怎么加自定义筛选?”;
- AI 先去资料库里搜 “表格 + 自定义筛选 + 公司组件库 v3.2”,找到对应的文档片段;
- AI 拿着这些片段,整理出答案。
特点(通俗版):
- 不用改 AI 本身,只需要喂 “资料”;
- 文档改了(比如组件库更版),直接更资料库就行,不用动 AI;
- AI 回答时 “看着资料说”,不会记错,但每次都要查;
- 适合:资料经常更、内容多、不想折腾 AI 本身。
场景 2:用 微调(Fine-tune)实现
操作方式:
- 把组件库文档、示例、问题,整理成 “问答对”(比如 “问:表格加筛选?答:xxx 代码”),做一个 “训练集”;
- 把这个训练集喂给 AI,让 AI 花几个小时 “学习”;
- 学习完后,AI 把这些知识点 “记在脑子里”;
- 用户问同样的问题,AI 不用查资料,直接凭记忆回答。
特点(通俗版):
- 要改 AI 本身,相当于给 AI “刷机升级”;
- 文档改了,得重新做训练集、重新微调,麻烦;
- AI 回答快,不用查资料,但记多了可能记混(比如记成旧版本);
- 适合:资料固定、要高频问、追求回答速度。
一张表对比(前端能秒懂)
表格
| 维度 | RAG(查资料) | 微调(记知识点) |
|---|---|---|
| 核心逻辑 | 开卷考试,边查边答 | 闭卷考试,记熟了答 |
| 操作难度 | 简单(丢文档就行) | 复杂(要做训练集、等训练) |
| 更新成本 | 低(改文档 = 改答案) | 高(改文档要重新训练) |
| 回答速度 | 稍慢(要查资料) | 快(直接记) |
| 适合场景 | 业务文档常更、内容多 | 知识点固定、高频问 |
| 前端类比 | 写代码时查 MDN / 公司文档 | 把常用 API 背下来直接写 |
再用 “前端开发” 举个极端例子
- 只用 RAG:就像你写代码时,每写一行都要查文档,但能保证代码最新、没错;
- 只用微调:就像你把所有文档背下来,写代码不用查,但背的是旧文档,新功能不知道;
- 最佳实践:先微调记核心知识点(比如组件库基础用法),再用 RAG 查最新细节(比如 v3.2 新增功能)。
最终通俗总结
- 想让 AI 懂你的 “实时 / 常更资料” → 用 RAG;
- 想让 AI 把你的 “固定知识点” 记牢、回答更快 → 用微调;
- 前端做 AI 应用(比如智能文档、客服),90% 先上 RAG 就够,微调是后期优化用的。
如果想知道 “前端怎么落地 RAG / 微调”,比如用 Node.js 搭一个简单的 RAG 应用,我可以给你最简代码示例。
如果前端开发想往ai 智能体开发靠拢 最好的方法 或者 别人成功的经验 怎么做
前端开发转 AI 智能体开发,核心是 “用前端优势做载体,补 AI 核心能力,从‘小而能用’的项目落地” —— 不用先啃深度学习,而是把前端的 “交互 / 工程能力” 和 AI 智能体的 “逻辑 / 工具调用” 结合。下面是一线开发者验证过的「落地路径 + 成功经验」,全程通俗、可落地,前端一看就懂。
一、先搞懂:前端做 AI 智能体,核心优势是什么?
AI 智能体不是 “造模型”,而是 “让 AI 能自主完成任务”(比如:智能客服、代码助手、业务自动化工具),前端的核心价值是:
- ✅ 你懂交互:能做智能体的可视化界面(用户怎么跟智能体对话、怎么看结果);
- ✅ 你懂工程化:能把 AI 接口、工具(比如数据库、第三方 API)串起来;
- ✅ 你懂用户体验:能解决智能体 “答非所问、操作复杂” 的问题(这是纯算法工程师的短板)。
简单说:算法工程师造 “大脑”,你造 “智能体的身体 + 交互界面”,还能让大脑更懂用户。
二、最落地的路径(分 3 步,从易到难,0 基础也能起步)
第一步:打基础(2-3 周)—— 不用学炼丹,先搞定 “AI 接口调用 + 前端整合”
这一步的核心是:把你熟悉的前端技术和 AI 接口打通,先做 “能对话的 AI 应用”,再升级成 “能做事的智能体”。
必学内容(前端视角,不用深钻):
-
AI 接口调用:
- 先练最基础的:调用 OpenAI/Claude/LangChain 的 API(就是前端调接口,换个 URL 而已);
- 核心学 2 个概念:
Prompt(给 AI 的指令)、Function Call(让 AI 调用工具,比如让 AI 调你的业务接口查数据)。
-
智能体核心逻辑(前端能懂的简化版) :AI 智能体 =
用户需求 → AI 拆解任务 → AI 调用工具 → AI 整理结果 → 反馈给用户你不用管 AI 怎么 “拆解任务”,只需要:- 用前端代码定义 “AI 能调用的工具”(比如:查用户数据的接口、操作数据库的函数);
- 把工具列表通过 Prompt 告诉 AI,让 AI 选对应的工具调用。
练手项目(前端能独立做):
-
项目 1:AI 代码助手(复刻 Cursor 简易版)
- 技术栈:Vue/React + OpenAI API + CodeMirror(代码编辑器);
- 功能:用户输入需求(比如 “写一个 Vue3 分页组件”),AI 返回代码,你做个编辑器让用户直接编辑 / 运行;
- 进阶:加 “工具调用”—— 让 AI 调用 MDN 文档接口,补充代码的官方说明。
-
项目 2:业务智能客服(落地性最强)
- 技术栈:React/Vue + RAG(用 LangChain 做文档检索) + 企业微信 / 钉钉接口;
- 功能:用户问业务问题(比如 “怎么申请报销”),智能体先查公司报销文档(RAG),再调用财务系统接口查用户报销记录,最后整理成回答;
- 核心:你只用做 “文档检索的前端界面 + 接口封装”,AI 逻辑用现成的 LangChain 套壳。
第二步:做实战项目(1-2 个月)—— 聚焦 “垂直场景”,做出能落地的东西
前端转 AI 智能体,最容易成功的路径是:选一个你熟悉的前端垂直场景,做 “小而精” 的智能体,而不是做通用大模型。
别人验证过的成功方向(前端专属):
-
前端开发智能体
-
场景:帮前端自动写业务组件、查 bug、优化代码;
-
落地点:
- 整合 RAG:把公司组件库、业务文档喂进去,智能体能精准生成符合公司规范的代码;
- 加工具调用:让智能体调用 ESLint、Prettier 接口,自动格式化生成的代码;
- 界面:做个 VS Code 插件(你懂前端,做插件比算法工程师快),直接嵌在编辑器里用。
-
成功经验:不用追求 “全能”,先搞定 “公司内部的表单组件自动生成”,解决同事的实际痛点,就是成功。
-
-
业务自动化智能体
-
场景:帮公司做 “运营 / 客服自动化”(比如电商智能客服、后台操作自动化);
-
落地点:
- 用前端做可视化配置界面:让运营能自己定义 “智能体该调用哪些工具”(比如查订单、改物流状态);
- 用 LangChain 套壳:把 AI 的 “任务拆解” 逻辑封装成接口,你只负责前端交互和工具封装;
-
成功经验:某前端同学做了 “电商售后智能体”,能自动查订单、算退款金额、发消息给用户,替代了 60% 的人工操作,直接落地到公司业务。
-
-
低代码 + AI 智能体
-
场景:给低代码平台加 AI 能力,让用户 “说需求,自动生成低代码页面”;
-
落地点:
- 前端做交互:用户输入 “做一个用户列表页面,带搜索和分页”;
- 你把需求转成低代码平台的 “组件配置 JSON”,调用 AI 接口生成 JSON,再渲染成页面;
-
成功经验:这是大厂都在推的方向,前端懂低代码 / 组件化,做这个比纯算法同学快 10 倍。
-
第三步:补核心能力(长期)—— 不用成算法专家,重点补 “工程化 + 场景理解”
前端转 AI 智能体,不用学深度学习、不用造模型,重点补 3 个能力(都是 “前端能迁移” 的):
-
Prompt 工程(核心中的核心)
- 不是背模板,而是 “用前端的逻辑思维,写让 AI 能精准执行的指令”;
- 比如:你要让 AI 调用 “查用户权限” 的工具,Prompt 要写清楚:“当用户问‘xxx 的权限’时,先调用 getUserPermission 工具,参数是 userId,拿到结果后再回答,不要瞎编”;
- 学习方法:看 LangChain 官方的 Prompt 示例,结合你的业务改,练 10 个场景就够用。
-
工具封装能力
- AI 智能体的核心是 “调用工具做事”,你要把业务接口、数据库、第三方服务(比如飞书、钉钉)封装成 AI 能调用的格式;
- 比如:把 “查数据库用户信息” 的功能,封装成一个函数,定义好入参 / 出参,告诉 AI “调用这个函数能查用户信息”;
- 优势:前端天天写接口封装,这是你的主场。
-
RAG 落地能力
-
90% 的智能体都需要 RAG(让 AI 查业务文档),你不用懂向量数据库原理,只用会 “调包”:
- 用 Pinecone/Chroma 做向量库(有现成的 SDK,像用 axios 一样简单);
- 用 LangChain 做文档拆分、检索(前端 npm 安装就能用);
-
成功经验:先用水浒传 / 公司文档练手,做一个 “能查文档的智能问答”,搞懂 RAG 的基本流程就行。
-
三、别人成功的核心经验(避坑 + 捷径)
- 别上来就啃算法 / 模型:前端转 AI 智能体,核心是 “应用层落地”,不是 “造模型”。先做 3 个小项目(比如智能代码助手、文档问答),比看 10 本 AI 书有用。
- 聚焦 “垂直场景” :不要做 “通用 AI 助手”,要做 “前端专属 / 你公司业务专属” 的智能体。比如 “Vue 组件生成器”“电商售后智能体”,小而精的项目更容易落地,也更容易体现你的价值。
- 复用前端技术栈:不用学新语言,用 Node.js 做后端(AI 接口调用),用 Vue/React 做前端,用 TS 做类型约束 —— 你的前端功底越扎实,做智能体的效率越高。
- 先套壳,再优化:初期直接用 LangChain/Claude API 做核心逻辑,你只负责交互和工具封装;等项目跑通了,再慢慢优化 Prompt、调整 RAG 检索精度,不要一开始就追求 “自研核心逻辑”。
- 找业务场景落地:最好的学习方式是 “解决公司的实际问题”。比如:公司客服天天回答重复问题,你就做个智能客服;同事写组件慢,你就做个代码生成智能体 —— 落地了,你的经验就值钱了。
四、总结(核心要点)
- 前端转 AI 智能体,核心是用前端的交互 / 工程能力,做智能体的 “载体 + 工具层” ,不用造模型;
- 落地路径:先练 AI 接口调用 → 做小而精的垂直场景项目 → 补 Prompt/RAG 能力;
- 成功关键:聚焦垂直场景、复用前端技术、先落地再优化,不要贪大求全。
如果想从 “第一个小项目” 开始落地,比如做一个 “前端代码助手智能体”,我可以给你:
- 最简的 Node.js + OpenAI API 代码示例(调用 AI + 工具调用);
- 前端交互界面的核心代码(React/Vue 版);
- 现成的 Prompt 模板(让 AI 精准生成前端代码)。
你可以告诉我想先做哪个方向(代码助手 / 智能客服 / 低代码 AI),我给你对应的落地代码。
有哪些具体的项目案例可以参考?
我给你整理了10 个可直接参考、前端友好、能跑起来的 AI 智能体项目案例,按「入门→进阶→实战」分档,每个都给你核心亮点、技术栈、源码 / 入口,方便你直接抄作业、改着用。
一、入门级(1-2 周可复刻,练手首选)
1. Chatbot UI(带工具调用的 ChatGPT 复刻)
- 核心亮点:最干净的前端 AI 对话框架,支持工具调用开关、流式响应、代码块渲染、历史管理,完全是前端视角写的。
- 技术栈:React + TypeScript + Vercel AI SDK + OpenAI API
- 源码:github.com/mckaywrigle…
- 适合:快速搭一个 “能对话 + 能调用工具” 的智能体外壳。
2. AutoGPT-Web(前端版 AutoGPT)
- 核心亮点:把 AutoGPT 搬到网页,支持目标设定、任务拆解、多轮工具调用、记忆(Pinecone)、思考步骤可视化。
- 技术栈:React + TypeScript + Redux + LangChain.js + Pinecone
- 源码:github.com/oursky/auto…
- 适合:理解 “智能体自主规划任务” 的完整流程。
3. Page-Agent(阿里开源,前端 DOM 智能体)
- 核心亮点:一行 JS 让大模型 “寄生” 前端 DOM,直接操作页面、填表单、点按钮,不用无头浏览器。
- 技术栈:纯前端 JS + LLM API + DOM 解析
- 源码:github.com/alibaba/pag…
- 适合:做 “网页自动化智能体”(如自动填报销、自动操作后台)。
4. OpenBrowserClaw(纯前端 AI 智能体)
- 核心亮点:零后端、零服务器,把 AI 智能体完全装进浏览器(IndexedDB + OPFS + WASM)。
- 技术栈:纯前端 + 浏览器存储 + 本地模型 / API
- 适合:做 “个人本地 AI 助手”,不用部署后端。
二、进阶级(1-2 个月,可落地到公司)
5. Frontegg AI Agent Example(企业级 B2B 智能体)
- 核心亮点:带 ** 认证、用户上下文、第三方工具集成(Slack/Jira/HubSpot)** 的企业智能体模板。
- 技术栈:React + Express + LangChain + Frontegg(认证)
- 源码:github.com/frontegg/fr…
- 适合:做公司内部 “销售 / 客服 / 运营自动化智能体”。
6. 智语 ZhiTalk(AI 智能面试官,前端实战)
- 核心亮点:完整的简历分析、模拟面试、优化建议,用到 LangChain.js、RAG、记忆、工具调用。
- 技术栈:Next.js + LangChain.js + Pinecone + Vercel AI SDK
- 入口:掘金实战教程(可跟着写)
- 适合:做 “垂直场景智能体”(教育 / 招聘 / 技术面试)。
7. LangChain Agent Chat UI(官方前端模板)
- 核心亮点:LangChain 官方配套的智能体聊天 UI,支持流式、工具调用日志、多轮对话。
- 技术栈:React + LangChain.js + LangSmith(监控)
- 源码:LangChain 官方仓库
- 适合:快速对接你自己的 LangChain 智能体后端。
8. 电商智能客服 + 搜索 Agent(真实项目)
- 核心亮点:RAG 商品检索 + 多语言生成 + 流式响应 + 客服记忆,转化率提升 18%。
- 技术栈:Next.js + Pinecone + LangChain + OpenAI/Claude
- 适合:做电商 / 零售类 “智能导购 + 售后” 智能体。
三、实战级(企业落地,可直接复用架构)
9. Parlant(开源 LLM 智能体引擎,17k Star)
- 核心亮点:行为可控、符合业务规则、可解释的对话智能体,适合生产环境。
- 技术栈:React + TypeScript + Python + LangChain + Ollama
- 源码:github.com/emcie-co/pa…
- 适合:做 “企业级客服 / 营销智能体”,解决 “AI 答非所问” 问题。
10. 私有组件库代码生成 Agent(企业真实案例)
- 核心亮点:Figma 转代码 + 私有组件库 RAG + 浏览器实时预览 + 自动修复,解决通用模型不懂公司规范的问题。
- 技术栈:React + LangChain.js + 私有文档 RAG + 预览引擎
- 适合:前端团队做 “内部代码生成智能体”(最容易落地的方向)。
四、给前端的 “抄作业” 建议(避坑 + 最快路径)
- 先从 Chatbot UI 或 Page-Agent 开始:这两个最容易跑起来,1 天就能看到效果,建立信心。
- 垂直场景优先:别做通用 AI,优先做前端代码助手、公司文档问答、后台操作自动化,最容易落地。
- 技术栈复用:用你熟悉的 React/Vue + Node.js + LangChain.js,不用学新语言。
- 先套壳再优化:先用开源框架搭外壳,再慢慢调 Prompt、加 RAG、集成工具。
五、下一步建议
我可以给你3 个最简可运行的前端 AI 智能体模板(React 版):
- 基础对话智能体(带流式响应)
- 工具调用智能体(让 AI 调你的业务接口)
- RAG 文档问答智能体(对接公司文档)
你直接改 API Key 就能跑,需要我把这 3 个模板的完整源码 + 部署步骤发给你吗?
需要
我为你整理了 3 个最简可运行的前端 AI 智能体模板(React + TS) ,涵盖「基础对话、工具调用、RAG 文档问答」核心场景,你只需替换 API Key 就能直接跑通,附详细部署步骤和注释,前端零基础也能搞定。
模板 1:基础对话智能体(带流式响应)
核心功能
- 复刻 ChatGPT 基础对话
- 流式响应(打字机效果)
- 对话历史记录
技术栈
React + TypeScript + Vercel AI SDK + OpenAI API
完整代码
tsx
// App.tsx
import { useState } from 'react';
import { OpenAIStream, StreamingTextResponse } from 'ai';
import { Configuration, OpenAIApi } from 'openai-edge';
// 1. 配置 OpenAI API(替换成你的 Key)
const config = new Configuration({
apiKey: '你的OpenAI API Key(sk-xxxx)',
});
const openai = new OpenAIApi(config);
// 2. 后端接口(Next.js 路由,也可放 Express 里)
export async function POST(req: Request) {
const { messages } = await req.json();
// 调用 OpenAI API 流式响应
const response = await openai.createChatCompletion({
model: 'gpt-3.5-turbo',
stream: true,
messages,
});
const stream = OpenAIStream(response);
return new StreamingTextResponse(stream);
}
// 3. 前端交互组件
export default function ChatAgent() {
const [messages, setMessages] = useState<{role: string; content: string}[]>([]);
const [input, setInput] = useState('');
// 发送消息
const sendMessage = async (e: React.FormEvent) => {
e.preventDefault();
if (!input) return;
// 更新对话历史
const newMessages = [...messages, { role: 'user', content: input }];
setMessages(newMessages);
setInput('');
// 调用后端接口
const response = await fetch('/api/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ messages: newMessages }),
});
// 处理流式响应
const reader = response.body?.getReader();
const decoder = new TextDecoder();
let aiMessage = '';
while (reader) {
const { done, value } = await reader.read();
if (done) break;
// 拼接流式内容
aiMessage += decoder.decode(value);
// 更新 UI
setMessages([...newMessages, { role: 'assistant', content: aiMessage }]);
}
};
return (
<div style={{ maxWidth: '800px', margin: '0 auto', padding: '20px' }}>
<h1>基础AI对话智能体</h1>
{/* 对话历史 */}
<div style={{ height: '500px', border: '1px solid #eee', padding: '10px', overflow: 'auto' }}>
{messages.map((msg, i) => (
<div key={i} style={{ margin: '10px 0' }}>
<strong>{msg.role === 'user' ? '你' : 'AI'}:</strong>
<div>{msg.content}</div>
</div>
))}
</div>
{/* 输入框 */}
<form onSubmit={sendMessage} style={{ marginTop: '20px' }}>
<input
type="text"
value={input}
onChange={(e) => setInput(e.target.value)}
style={{ width: '80%', padding: '10px' }}
placeholder="输入你的问题..."
/>
<button type="submit" style={{ width: '18%', padding: '10px' }}>发送</button>
</form>
</div>
);
}
部署 / 运行步骤
- 新建 React + TS 项目:
npx create-react-app ai-agent --template typescript - 安装依赖:
npm install ai openai-edge - 替换代码中的
你的OpenAI API Key - 若用 Next.js:把
POST函数放到pages/api/chat.ts;若用纯 React:把POST函数改成 Express 后端(附极简 Express 后端代码):
javascript
运行
// server.js
const express = require('express');
const { OpenAIStream, StreamingTextResponse } = require('ai');
const { Configuration, OpenAIApi } = require('openai-edge');
const app = express();
app.use(express.json());
// 配置 API Key
const config = new Configuration({ apiKey: '你的OpenAI API Key' });
const openai = new OpenAIApi(config);
// 对话接口
app.post('/api/chat', async (req, res) => {
const { messages } = req.body;
const response = await openai.createChatCompletion({
model: 'gpt-3.5-turbo',
stream: true,
messages,
});
const stream = OpenAIStream(response);
new StreamingTextResponse(stream).pipe(res);
});
// 跨域
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
next();
});
app.listen(3001, () => console.log('后端运行在 http://localhost:3001'));
- 启动后端:
node server.js,启动前端:npm start,访问http://localhost:3000即可对话。
模板 2:工具调用智能体(让 AI 调用你的业务接口)
核心功能
- AI 自主判断是否调用工具(比如查天气、查用户信息)
- 工具调用结果自动整合到回答中
技术栈
React + TypeScript + LangChain.js + Express
完整代码
1. 后端(工具定义 + AI 调用)
javascript
运行
// server.js
const express = require('express');
const { ChatOpenAI } = require('langchain/chat_models/openai');
const { AgentExecutor, createOpenAIToolsAgent } = require('langchain/agents');
const { ChatPromptTemplate } = require('langchain/prompts');
const { SerpAPI } = require('langchain/tools');
const { Calculator } = require('langchain/tools/calculator');
const { JsonOutputFunctionsParser } = require('langchain/output_parsers');
require('dotenv').config();
const app = express();
app.use(express.json());
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
next();
});
// 1. 定义工具(可替换成你的业务接口,比如查用户权限、查订单)
const tools = [
// 示例1:计算器工具
new Calculator(),
// 示例2:自定义工具(查天气)
{
name: 'getWeather',
description: '查询指定城市的天气',
func: async (city) => {
// 替换成真实天气接口
return `${city}今天的天气是晴,温度25℃`;
},
},
];
// 2. 配置 AI 模型
const model = new ChatOpenAI({
apiKey: process.env.OPENAI_API_KEY, // 从 .env 文件读取
modelName: 'gpt-3.5-turbo',
});
// 3. 构建 Agent
const prompt = ChatPromptTemplate.fromMessages([
['system', '你是一个能调用工具的智能体,根据用户需求选择合适的工具'],
['user', '{input}'],
]);
// 4. 工具调用接口
app.post('/api/agent', async (req, res) => {
const { input } = req.body;
// 创建 Agent
const agent = await createOpenAIToolsAgent({
llm: model,
tools,
prompt,
});
const agentExecutor = new AgentExecutor({ agent, tools });
// 执行 Agent
const result = await agentExecutor.invoke({ input });
res.json({ answer: result.output });
});
app.listen(3001, () => console.log('工具调用智能体后端运行在 3001 端口'));
2. 前端(交互界面)
tsx
// App.tsx
import { useState } from 'react';
export default function ToolAgent() {
const [input, setInput] = useState('');
const [answer, setAnswer] = useState('');
const [loading, setLoading] = useState(false);
const callAgent = async (e: React.FormEvent) => {
e.preventDefault();
if (!input) return;
setLoading(true);
// 调用后端工具接口
const response = await fetch('http://localhost:3001/api/agent', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ input }),
});
const data = await response.json();
setAnswer(data.answer);
setLoading(false);
};
return (
<div style={{ maxWidth: '800px', margin: '0 auto', padding: '20px' }}>
<h1>AI工具调用智能体</h1>
<form onSubmit={callAgent} style={{ marginBottom: '20px' }}>
<input
type="text"
value={input}
onChange={(e) => setInput(e.target.value)}
style={{ width: '80%', padding: '10px' }}
placeholder="比如:北京今天天气?100+200等于多少?"
/>
<button type="submit" disabled={loading} style={{ width: '18%', padding: '10px' }}>
{loading ? '思考中...' : '发送'}
</button>
</form>
<div style={{ border: '1px solid #eee', padding: '20px', minHeight: '100px' }}>
{loading ? 'AI正在调用工具...' : answer || '等待你的提问...'}
</div>
<div style={{ marginTop: '10px', color: '#999' }}>
支持工具:天气查询、计算器
</div>
</div>
);
}
运行步骤
- 安装后端依赖:
npm install express langchain dotenv openai - 创建
.env文件,写入:OPENAI_API_KEY=你的Key - 启动后端:
node server.js,启动前端:npm start - 测试输入:
北京今天天气?→ AI 会调用getWeather工具并返回结果。
模板 3:RAG 文档问答智能体(对接公司文档)
核心功能
- 上传文档(TXT/MD)→ 拆分 → 存入向量库
- 提问时检索相关文档片段 → AI 基于文档回答
技术栈
React + TypeScript + LangChain.js + Chroma(轻量向量库)
完整代码
1. 后端(RAG 核心逻辑)
javascript
运行
// server.js
const express = require('express');
const fs = require('fs');
const { ChatOpenAI } = require('langchain/chat_models/openai');
const { RecursiveCharacterTextSplitter } = require('langchain/text_splitter');
const { Chroma } = require('langchain/vectorstores/chroma');
const { OpenAIEmbeddings } = require('langchain/embeddings/openai');
const { RetrievalQAChain } = require('langchain/chains');
require('dotenv').config();
const app = express();
app.use(express.json());
app.use(express.static('public'));
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
next();
});
// 1. 初始化向量库和模型
const embeddings = new OpenAIEmbeddings({ apiKey: process.env.OPENAI_API_KEY });
const model = new ChatOpenAI({ apiKey: process.env.OPENAI_API_KEY, modelName: 'gpt-3.5-turbo' });
// 2. 上传文档并入库接口
app.post('/api/upload', async (req, res) => {
const { text } = req.body; // 前端上传的文档文本
if (!text) return res.status(400).json({ error: '无文档内容' });
// 拆分文档
const splitter = new RecursiveCharacterTextSplitter({
chunkSize: 500,
chunkOverlap: 50,
});
const docs = await splitter.createDocuments([text]);
// 存入 Chroma 向量库(需先启动 Chroma:chroma run --host 0.0.0.0 --port 8000)
const vectorStore = await Chroma.fromDocuments(docs, embeddings, {
collectionName: 'company-docs',
url: 'http://localhost:8000',
});
res.json({ success: true, chunks: docs.length });
});
// 3. 文档问答接口
app.post('/api/qa', async (req, res) => {
const { question } = req.body;
if (!question) return res.status(400).json({ error: '无问题' });
// 连接向量库
const vectorStore = await Chroma.fromExistingCollection(embeddings, {
collectionName: 'company-docs',
url: 'http://localhost:8000',
});
// 创建 RAG 链
const chain = RetrievalQAChain.fromLLM(model, vectorStore.asRetriever());
const result = await chain.call({ query: question });
res.json({ answer: result.text });
});
app.listen(3001, () => console.log('RAG智能体后端运行在 3001 端口'));
2. 前端(上传 + 问答界面)
tsx
// App.tsx
import { useState } from 'react';
export default function RAGAgent() {
const [text, setText] = useState(''); // 文档内容
const [question, setQuestion] = useState('');
const [answer, setAnswer] = useState('');
const [loading, setLoading] = useState(false);
// 上传文档
const uploadDoc = async (e: React.FormEvent) => {
e.preventDefault();
if (!text) return;
setLoading(true);
const response = await fetch('http://localhost:3001/api/upload', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ text }),
});
const data = await response.json();
alert(`文档上传成功!拆分了 ${data.chunks} 个片段`);
setLoading(false);
};
// 文档问答
const askQuestion = async (e: React.FormEvent) => {
e.preventDefault();
if (!question) return;
setLoading(true);
const response = await fetch('http://localhost:3001/api/qa', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ question }),
});
const data = await response.json();
setAnswer(data.answer);
setLoading(false);
};
return (
<div style={{ maxWidth: '800px', margin: '0 auto', padding: '20px' }}>
<h1>RAG文档问答智能体</h1>
{/* 文档上传 */}
<div style={{ marginBottom: '30px' }}>
<h3>上传文档</h3>
<form onSubmit={uploadDoc}>
<textarea
value={text}
onChange={(e) => setText(e.target.value)}
style={{ width: '100%', height: '200px', padding: '10px' }}
placeholder="粘贴你的文档内容(比如公司组件库文档、业务文档)"
/>
<button type="submit" disabled={loading} style={{ marginTop: '10px', padding: '10px' }}>
{loading ? '上传中...' : '上传文档'}
</button>
</form>
</div>
{/* 文档问答 */}
<div>
<h3>文档问答</h3>
<form onSubmit={askQuestion} style={{ marginBottom: '20px' }}>
<input
type="text"
value={question}
onChange={(e) => setQuestion(e.target.value)}
style={{ width: '80%', padding: '10px' }}
placeholder="基于上传的文档提问..."
/>
<button type="submit" disabled={loading} style={{ width: '18%', padding: '10px' }}>
{loading ? '检索中...' : '提问'}
</button>
</form>
<div style={{ border: '1px solid #eee', padding: '20px', minHeight: '100px' }}>
{loading ? 'AI正在检索文档...' : answer || '等待你的提问...'}
</div>
</div>
</div>
);
}
运行步骤
- 安装后端依赖:
npm install express langchain chromadb dotenv openai - 安装并启动 Chroma 向量库(Mac 端):
bash
运行
# 安装 Chroma
pip install chromadb
# 启动 Chroma
chroma run --host 0.0.0.0 --port 8000
- 创建
.env文件,写入:OPENAI_API_KEY=你的Key - 启动后端:
node server.js,启动前端:npm start - 测试:粘贴一段公司文档 → 上传 → 提问 “文档里的 xxx 怎么用?” → AI 基于文档回答。
关键补充说明
- API Key 替换:所有模板中的
你的OpenAI API Key需替换成真实值(也可替换成 Claude API,只需改模型配置); - 依赖安装:每个模板的依赖已标注,按步骤安装即可;
- 网络问题:国内访问 OpenAI 需配置代理,终端执行:
bash
运行
export ALL_PROXY=socks5://127.0.0.1:7890
- 业务适配:模板中的工具(天气、计算器)、文档(通用文本)可直接替换成你的业务接口 / 公司文档。
总结
- 基础对话模板:掌握 AI 流式响应的前端实现,是所有智能体的基础;
- 工具调用模板:核心是 “让 AI 自主选择工具”,适配业务自动化场景;
- RAG 文档模板:解决 AI “不懂公司业务” 的核心痛点,前端落地最容易出成果。
如果运行中遇到报错(比如 Chroma 启动失败、API 调用超时),告诉我具体错误信息,我给你逐行修正。
能不能找几个现成 简单的 别人搭建好的 入手学习的智能体 github仓库 我去下载 直接修改apikey 就可以跑通了
我给你精选了 5 个超简单、开箱即用的 AI 智能体 GitHub 仓库,全部满足「下载后改 API Key 就能跑」,覆盖基础对话、工具调用、RAG 核心场景,新手 10 分钟就能跑通,不用改复杂逻辑。
一、核心筛选标准
✅ 纯前端 / 轻量前后端(Node.js),前端能看懂✅ 无复杂依赖(npm install 就能装完)✅ 仅需替换 API Key,无需改核心逻辑✅ Star 数高、维护活跃,踩坑少
二、5 个开箱即用的仓库(按易到难排序)
1. chatgpt-web(最简对话智能体,纯前端)
-
核心功能:复刻 ChatGPT 界面,支持流式响应、对话历史、多模型切换(GPT-3.5/4/Claude)
-
上手难度:⭐️(纯前端,零后端)
-
使用步骤:
- 克隆仓库:
git clone https://github.com/Chanzhaoyu/chatgpt-web.git - 进入目录:
cd chatgpt-web - 安装依赖:
npm install - 改配置:打开
.env文件,替换VITE_OPENAI_API_KEY=你的sk-xxxx - 启动:
npm run dev,访问http://localhost:3000直接对话
- 克隆仓库:
-
亮点:纯前端 Vite 项目,不用搭后端,改完 Key 就能跑,界面和 ChatGPT 几乎一致。
2. simple-llm-agent(极简工具调用智能体)
-
核心功能:LangChain 官方极简示例,支持 AI 调用计算器、搜索等工具
-
上手难度:⭐️⭐️(Node.js 后端 + 前端页面)
-
使用步骤:
- 克隆仓库:
git clone https://github.com/hwchase17/simple-llm-agent.git - 进入目录:
cd simple-llm-agent - 安装依赖:
npm install - 改配置:创建
.env文件,写入OPENAI_API_KEY=你的sk-xxxx - 启动:
node index.js,访问http://localhost:3000 - 测试输入:
100+200等于多少?→ AI 自动调用计算器工具返回结果
- 克隆仓库:
-
亮点:LangChain 创始人写的示例,代码不到 100 行,工具调用逻辑极简,前端能秒懂。
3. rag-chatbot-simple(最简 RAG 文档问答智能体)
-
核心功能:上传文档→向量入库→基于文档问答,内置轻量向量库(无需单独装 Chroma)
-
上手难度:⭐️⭐️(Node.js+React,内置向量库)
-
使用步骤:
- 克隆仓库:
git clone https://github.com/masoudkarimif/rag-chatbot-simple.git - 进入目录:
cd rag-chatbot-simple - 安装依赖:
npm install - 改配置:打开
src/config.js,替换OPENAI_API_KEY: "你的sk-xxxx" - 启动:
npm run start,访问http://localhost:3000 - 测试:上传 TXT 文档→提问,AI 只基于文档回答
- 克隆仓库:
-
亮点:内置 LocalStorage 向量库(不用装 Chroma/Pinecone),前端直接上传文档,零环境依赖。
4. ai-agent-demo(前端友好的多场景智能体)
-
核心功能:一站式包含「对话、工具调用、RAG、思维导图生成」4 个智能体场景
-
上手难度:⭐️⭐️(Next.js 全栈,前端主导)
-
使用步骤:
- 克隆仓库:
git clone https://github.com/liyupi/ai-agent-demo.git - 进入目录:
cd ai-agent-demo - 安装依赖:
npm install - 改配置:复制
.env.example为.env,替换OPENAI_API_KEY=你的sk-xxxx - 启动:
npm run dev,访问http://localhost:3000
- 克隆仓库:
-
亮点:程序员鱼皮写的教程级仓库,注释详细,每个场景单独拆分,前端能快速复刻。
5. page-agent(前端 DOM 操作智能体,零后端)
-
核心功能:一行 JS 让 AI 接管网页 DOM,自动填表单、点按钮、爬数据(纯前端)
-
上手难度:⭐️⭐️(纯前端,直接嵌入网页)
-
使用步骤:
- 克隆仓库:
git clone https://github.com/alibaba/page-agent.git - 进入目录:
cd page-agent - 打开
examples/basic.html,替换window.PAGE_AGENT_CONFIG.apiKey = "你的sk-xxxx" - 直接用浏览器打开
basic.html - 测试:输入「自动点击页面上的按钮」→ AI 自动操作 DOM
- 克隆仓库:
-
亮点:阿里开源,纯前端实现,不用搭后端,适合做「网页自动化智能体」(比如自动填报销单)。
三、通用上手步骤(所有仓库通用)
- 克隆仓库:确保电脑装了 Git(没装的话:git-scm.com/downloads)
- 安装依赖:进入仓库目录后执行
npm install(确保装了 Node.js,推荐 v18+) - 替换 API Key:找到
.env/config.js/.env.example文件,替换成你的 OpenAI/Claude Key - 启动项目:执行仓库 README 里的启动命令(通常是
npm run dev/npm start/node index.js) - 访问测试:打开浏览器访问
http://localhost:3000(端口看仓库说明)
四、避坑小贴士
- API Key 无效:确认 Key 是「OpenAI 的 sk - 开头」,不是 Claude 的 sk-ant - 开头(仓库若支持 Claude,需改模型配置);
- 网络超时:国内访问需给终端配代理(执行
export ALL_PROXY=socks5://127.0.0.1:7890); - 依赖安装失败:执行
npm install --registry=https://registry.npmmirror.com用国内源; - 端口被占用:改仓库配置里的端口(比如 3000→3001)。
总结
- 纯前端入门选「chatgpt-web」,零后端改 Key 就跑;
- 学工具调用选「simple-llm-agent」,LangChain 官方极简示例;
- 学 RAG 选「rag-chatbot-simple」,内置向量库不用额外部署;
- 学 DOM 自动化选「page-agent」,阿里开源前端专属智能体。
这些仓库都是「最小可用版本」,你先跑通,再基于自己的业务改(比如把计算器工具换成公司的订单查询接口),最快掌握智能体开发。
如果下载后跑不通(比如依赖报错、启动失败),告诉我具体仓库 + 报错信息,我给你逐行修正