不是套壳 Chat,是真正会意图路由、调用工具、查知识库、看图识装备、帮用户加购物车的 Agent。
前端 Vue3,后端 FastAPI,AI 编排 LangGraph,多模态走 OpenAI Vision 协议------
模型、提示词、知识库全部支持后台页面在线配置,改提示词不用动一行代码。
一、项目技术栈
一个 AI 应用从「模型调用」走到「可交付系统」,中间隔着工程化这道坎。这个项目把整条链路都补齐了:
| 层次 | 技术选型 | 在项目里的作用 |
|---|---|---|
| 后端框架 | FastAPI + Tortoise ORM + MySQL | 异步高性能接口、自动建表、自动注册路由,自带 Swagger |
| AI 编排 | LangChain(langchain-core / langchain-openai)+ LangGraph | StateGraph 显式编排 Agent 节点流转,工具注册与调用 |
| 多模态 | OpenAI Vision 协议 | 上传钓场/渔具照片即可让 AI 识别理解,并接入后续工具链 |
| 前端 | Vue3 + Vue Router + Element Plus + Axios + Vite | 前后台双端, adapter 自动携带 token |
| 可视化 | ECharts | 后台数据看板:订单状态环形饼图、分类/热销条形图 |
| 富文本 | wangEditor 5 + markdown-it + highlight.js | 后台资讯/商品详情富文本编辑;AI 回答按 Markdown 渲染并做代码高亮 |
| 流式输出 | SSE(StreamingResponse) | AI 回答打字机效果 |
| 鉴权 | JWT + FastAPI Depends + 前端路由守卫 | 前后台双层隔离,越权直接 401 |
一句话总结:后端用 Python,AI 用 LangGraph 编排,前端能用页面把 AI 的「大脑」(模型、提示词、知识库)全部换掉。
二、项目功能介绍
1. 前台商城(用户端)
-
首页:轮播图、公告(点击从右上角弹出公告正文)、分类导航、推荐商品、热销榜、最新资讯
-
商品:分类筛选 / 搜索 / 排序 / 分页;详情页支持多图、规格、收藏、评价、富文本图文详情与相似推荐
-
交易:购物车(勾选结算、批量删除、清空)、下单结算、订单中心(支付 / 收货 / 取消 / 评价)
-
资讯中心:富文本资讯,后台编辑即可带图带视频
-
AI 智能助手:支持文字 + 图片提问,回答支持 Markdown + 代码高亮,还能直接推送商品卡片
体验细节:任意页面加购/删除后,顶部购物车角标实时刷新(基于轻量全局事件总线);页面滚动条全站隐藏但滚动照常。
2. 后台管理(运营端)
数据统计看板(ECharts)、分类管理、商品管理(多图上传 / 富文本描述 / 上下架)、订单管理、评价管理、资讯管理、轮播图、公告、管理员、会员管理,所有列表统一支持每页条数切换 + 页码跳转。
3. AI 能力中心(项目的核心)
-
模型配置:对话 / 向量 / 图片模型,支持 OpenAI、DeepSeek、通义、智谱、硅基流动、Ollama 等任意 OpenAI 兼容协议,可设默认、启停、多模态标记,一键「测试连接」
-
提示词配置:
agent_system / intent / rag / tool_answer / chitchat / vision / recommend全部落在数据库,改完即时生效,支持变量渲染预览 -
知识库管理:文档增删改、自动切片(300 字窗口 + 60 字重叠)、重建索引、切片预览、检索测试
-
对话记录:完整消息(含用户头像)、意图/工具/引擎标签、Agent 执行轨迹、引用来源、推荐结果
4. Agent 工作流
用户提问(文本 / 图片)
│
▼
perceive 多模态感知:有图片时调用视觉模型理解图片内容
│
▼
classify 意图路由:LLM 输出 {工具, 参数},失败或超时降级本地规则路由
│
├─► knowledge 知识库 RAG 检索(向量相似度 + 关键词加权)
├─► tool 工具调用:商品搜索 / 详情 / 装备推荐 / 订单查询 / 资讯搜索 / 加入购物车
└─► generate 直接生成
│
▼
generate 结合人设提示词 + 历史消息 + 工具/检索结果生成答复
│
▼
持久化:消息、执行轨迹、引用来源、推荐商品卡片
前台给用户看答案,后台给运营看全链路:同一个会话,前台气泡里只有回答正文 + 商品卡片;后台「对话记录」里完整保留每一步走了哪个节点、调了哪个工具、引用了哪段知识。这就是 Agent 系统最需要的可解释性。
没配模型也不会崩:自动降级为「离线兜底回复」,并把工具/检索结果直接呈现给用户。
三、拿到项目能学到什么
这部分是它和普通 CRUD 项目的最大区别:它把一个 AI 应用的工程化全链路都跑了一遍。
-
Agent 编排思维(最值钱的部分)不再把 LLM 当黑盒调 API,而是用 LangGraph 把「感知 → 路由 → 检索/工具 → 生成 → 持久化」拆成显式节点,理解什么是状态图、条件分支、工具注册。这套思维迁移到任意 Agent 项目都通用。
-
RAG 落地全流程切片策略为什么要有重叠?向量召回和关键词召回怎么加权?没有 embedding 模型时怎么降级?比起背原理,把这一个链路踩完才是真的学会了------这些在项目里全部有实现。
-
高可用设计LLM 超时怎么降级兜底?多模型厂商如何一套代码兼容(LangChain 优先 + httpx 兜底)?Vector 库缺失时功能如何不崩?这些都是面试必问的「异常处理」题。
-
AI 应用的工程细节
-
流式输出时为什么不能每来一个字就跑一次语法高亮(代码块未闭合时怎么处理)
-
SSE 流式接口怎么写、前端怎么拼接渲染
-
Markdown 渲染的 XSS 防护(
html: false) -
多模态消息(文本 + 图片)怎么构造进同一条对话
- 前后端分离的完整工程双层鉴权隔离、统一结果封装(Result.success)、全局异常处理、分页封装、文件上传协议适配;前端 Axios 拦截器、路由守卫、事件总线、ECharts 封装、富文本组件复用。
四、可以对应去刷哪些面试题
做完这个项目,下面这些题你都能答到点上、并且有真实代码可以举例:
Python / FastAPI 方向
-
FastAPI 的
Depends依赖注入原理是什么?怎么用它做鉴权? -
异步 ORM(Tortoise)和 SQLAlchemy 的区别?连接池怎么配?
-
怎么设计一个统一的响应体与全局异常处理?
-
CORS 预检(OPTIONS)请求为什么会出现?FastAPI 怎么配中间件?
-
pydantic 模型和 ORM 模型的边界怎么划?(项目里
Account是登录态对象,不能直接get_or_none------这个坑我踩过)
LangChain / Agent 方向
-
什么是 Agent?ReAct 和 LangGraph 的 StateGraph 有什么区别?
-
Function Calling / Tool Calling 的执行流程是什么?工具描述怎么写模型才调得准?
-
意图路由(Router)怎么做?LLM 路由失败怎么降级?
-
Agent 的短期记忆(多轮对话历史)怎么管理?上下文超长怎么办?
-
怎么让 Agent 的每一步都可观测、可追溯?(执行轨迹设计)
RAG 方向
-
文档切片的窗口大小与重叠比例怎么定?切得太碎/太长分别有什么后果?
-
向量检索和关键词检索(BM25)怎么结合?混合检索的权重怎么调?
-
没有 embedding 模型时,RAG 还能不能跑?降级方案怎么设计?
-
怎么评估召回效果?(项目里贴心地做了「检索测试」页面)
-
知识库更新后索引怎么增量维护?
多模态 / 流式
-
OpenAI Vision 协议的图片消息怎么构造?base64 还是 URL,各有什么代价?
-
SSE 和 WebSocket 的区别?什么场景该用 SSE?
-
流式返回时前端如何边收边渲染?断流、粘包怎么处理?
前端 / 工程化
-
前端如何让 Markdown 输出既安全又支持代码高亮?(
html: false的理由) -
流式输出场景下如何避免重复渲染导致卡顿?(流式期间跳过高亮)
-
跨页面的全局状态如何同步?(事件总线 vs Pinia)
-
富文本编辑器的图片上传协议怎么对接?(wangEditor 要求返回
{errno, data:[{url}]}) -
弹窗锁滚动时页面为什么会抖?如何消除(滚动条宽度补偿)?
系统设计 / 场景题
-
让你设计一个「电商 AI 客服」,你怎么画架构图?(本项目就是完整答案)
-
AI 回答不准确时,你的排查路径是什么?(先看提示词 → 看意图路由 → 看召回内容 → 看工具返回值)
-
如何控制大模型调用成本?(意图分级、缓存、降级、模型分层)
项目完整说明、目录结构、快速开始见同目录《项目说明文档.md》,
界面截图见根目录
项目截图/。如果你也在做 AI 应用,欢迎对照这套链路检查自己还差哪一环:编排、检索、降级、观测,缺一环,Demo 就走不到生产。
五、功能截图部分
登录注册



后台首页

全部商品
钓鱼资讯
模型配置

AI选竿助手

前台首页

