自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 LangGraph 完整指南:从状态图原理到 Checkpointer 机制,一文掌握生产级 Agent 编排框架

LangGraph 的本质,是把 “Agent 的执行过程” 从黑盒循环升级为可观察、可控制、可持久化的状态图状态(State)让每一步都有据可查边(Edge)让流程分支、循环一目了然让应用拥有记忆、能在崩溃后恢复、能暂停等待人工、能回溯历史每次执行完一批节点,就把完整状态存一个档(checkpoint);下次用同一个 thread_id 进来,自动读档继续。掌握 LangGraph,就掌握了生产级 Agent 开发的基石。

2026-09-08 09:15:03 495

原创 LangChain 完整指南:从核心概念到全链路实战,一文搞懂大模型应用开发框架

LangChain 是一个开源的大语言模型应用开发框架。它本身不提供大模型能力,而是通过统一的抽象层,将模型、提示词、文档、向量库、工具、记忆等能力封装为可插拔组件,让开发者像搭积木一样快速构建 RAG、智能体(Agent)等复杂 LLM 应用。一句话理解:LangChain 不是大模型,是大模型应用的 “脚手架” 和 “标准件库”。用@tool装饰器将普通 Python 函数包装为 LangChain 的BaseTool@tool"""获取当前系统时间"""@tool"""两个整数相加运算。

2026-09-07 16:30:50 316

原创 Agent 开发:从手写 Loop 到 LangChain、LangGraph 与 Deep Agents

Deep Agents 内部仍然使用 LangGraph 的 State、Node、Edge 和 Checkpointer,但它隐藏了大部分繁琐的配置,让你用更少的代码获得更完整的功能。演进至此,我们从一条 while 循环,走到了一张可持久化、可恢复、可人工介入的执行图,最终到了几乎“开箱即用”的高层 Agent 套件。当任务被中断(比如用户关闭页面、API 超时),你可以用同一个线程 ID 恢复执行,从最后一次检查点继续,而不必从头开始。内部,而你只需要声明工具和 Agent 的组装关系。

2026-09-04 15:38:10 327

原创 GraphRAG 全解析:从向量检索到知识图谱增强生成

GraphRAG 是微软开源的一种基于图的检索增强生成技术。它通过结合知识图谱和大语言模型,从非结构化文本中提取实体和关系,构建知识图谱,并通过图机器学习技术优化查询过程。GraphRAG 就是把传统 RAG 的“文本相似检索”升级为“文本 + 关系结构联合检索”。微软 GraphRAG 项目在 GitHub 上已获得超过 20,000 颗星,已成为 GraphRAG 领域最具代表性的实现。Local Search(局部搜索)是 GraphRAG 的两种核心查询模式之一。

2026-09-03 22:02:29 428

原创 RAG 全解析:从文档入库到检索增强生成,以及传统rag的缺陷

Retrieval(检索)是RAG系统中最核心的环节——从知识库中找到与用户Query最相关的Chunk。

2026-09-03 15:01:48 312

原创 MCP概念与实践全解析

,MCP 的核心抽象是Tools(可执行操作)、Resources(可读数据)、Prompts(提示词模板)——三种 Server 可以暴露给 AI 应用的能力。

2026-09-01 16:09:29 312

原创 从大模型到 Agent:一个 Agent 应用是怎么构建出来的

Agent = LLM + 推理范式(ReAct / Plan-Execute / 反思等) + Tools / Skills + Loop(循环控制) + State(状态) + Context(上下文管理)在生产环境中,我们不能只关心 Agent“是否在运行”(Liveness),更要关心“运行得好不好”(Quality)。Trace:一次任务完整的执行链路Metric:Token 消耗、延迟、成功率Log:每一步的输入输出、决策依据LangChain 生态中的LangSmith。

2026-08-31 22:49:29 361

原创 DeepRead-项目介绍

DeepRead:深度阅读与自证的研究型知识库代理 摘要:DeepRead是一个本地自托管的个人知识库研究代理,旨在解决传统RAG系统的三大痛点:浅层问答、幻觉缺乏约束和溯源困难。该系统采用多角色协作架构(Planner/Researcher/Writer/Reviewer),通过LangGraph实现研究流程编排,结合知识图谱增强检索(GraphRAG)和渐进式知识合成技术。核心创新包括:原子论断验证机制、精确引用标注、跨文档矛盾检测,以及完整的质量保障体系(83%测试覆盖率+回归测试)。工程上实现了多存

2026-08-24 01:29:29 396

原创 FlipDrop:一个面向本地商家的盲盒 + 秒杀 O2O 平台

用户通过手机号 + 短信验证码注册/登录,验证码存入 Redis 并设 5 分钟 TTL,60 秒内不可重复发送。使用 JWT 做无状态鉴权,Token 有效期 7 天。前端请求拦截器自动注入头,401 时跳转登录页。角色分为:普通用户、商家管理员、店员、平台运营。不同角色登录后进入不同前端入口,后端通过依赖注入做接口级权限校验。把线上冲动消费的刺激感,嫁接到线下真实门店里。盲盒负责制造惊喜,秒杀负责制造紧迫,LBS 负责把用户精准导流到店。

2026-07-06 18:47:14 356

原创 【Vue3】交互控制:事件处理,侦听器和生命周期钩子

就是从原来的响应式数据,到现在用户输入的同时数据也会变,数据变了那页面显示也会变,v-model实际上就是一次性做了这两件事而已。和computed的区别就是,computed是返回一个计算之后的响应式数据,而watch是监听某个东西的变化来执行一些操作。当侦听器重新执行前或组件销毁时,需要清理一些东西(如取消未完成的请求、清除定时器)。它需要在页面元素加载后才能操作,所以需要在onMounted里面写关于DOM的逻辑。就是有时候会需要获取到真是的DOM元素来做一些操作,使用模板ref就可以获取到。

2026-06-17 16:09:21 352

原创 vue学习第一阶段扩展:关于原子化CSS,DevTools插件以及小练习

* 每个组件写自己的样式文件 */直接用预定义的 class 名组合,不写自定义 CSS。-- 不用写 CSS,直接用 class 名表达样式 --> < div class = " bg-white rounded-lg p-4 " > < h1 class = " text-lg font-bold " > 标题 </ h1 > </ div >

2026-06-17 09:10:42 314

原创 【TypeScript】初识,基础类型,以及interface和type的使用

interface是用来描述对象结构的“蓝图”。它只存在于 TypeScript 编译阶段,编译后彻底消失,不产生任何 JS 代码。id: number;age?: number;//?表示可选属性// 使用// age 可省略注意:Interface 只能描述“长什么样”,绝对不能包含具体逻辑实现(如它内部的方法只能是“纯虚”的(只有签名,没有函数体)。// ✅ 只有签名// eat(food: string): void {} // ❌ 报错!不能有实现与interface。

2026-06-16 19:51:12 743

原创 【Vue3】基础渲染与模板语法

因为当组件变大时,data、methods、computed 被分散在不同的选项中,同一个功能的代码被拆散。这样写的问题:如果多处用到同样的计算结果,要重复写同样的表达式,可读性差且每次渲染都要重新计算。监听 DOM 事件(点击、输入、鼠标移动等),触发时执行对应的 JavaScript。把一个对象变成深层响应式的——对象中任何层级的属性发生变化,视图都会更新。(进阶,了解即可):有时候你需要在父组件中修改子组件的内部样式,可以用。改变时,任何用到这个值的地方(模板、计算属性、侦听器)都会自动更新。

2026-06-09 10:11:52 952

原创 项目练习-小说阅读平台

通阅小说是一个功能完整的网络小说平台,支持读者阅读和作者创作两条核心业务线。项目采用前后端分离架构,后端提供 RESTful API,前端通过 Axios 调用接口完成交互。层级技术作用后端框架异步 API 框架数据库数据持久化认证用户登录鉴权前端页面展示与交互AI 能力Dify(聊天 API + 工作流 API)写作助手 + 自动审核文件存储本地文件系统封面、头像、TXT 上传数据库驱动业务。

2026-06-08 00:07:22 454

原创 【Vue3】前置知识简单概述(包括ES6核心语法,模块化ESM以及npm基础)

pnpm 是它的升级替代品,更快、更省磁盘空间。的意思是"接受兼容范围内的最新版本"——安装时如果已有 3.4.5,就装 3.4.5 而不是 3.4.0。不用的后果:你写不了符合 Vue3 规范的"不可变数据更新",要么直接改出 bug,要么代码很笨重地逐字段复制。不用的后果:Vue3 的所有官方示例、教程、组件库源码,回调全是箭头函数。Vue 项目不用它,但有时候会见到(比如一些老的 Node.js 工具、配置文件),了解区别有助于不混淆。:等号右边的对象里,取出与左边同名的键,赋值给左边的变量。

2026-06-07 18:01:06 741

原创 【Vue3】概述以及环境搭建

在已经有了HTML和JS,CSS的情况下,已经可以做一个非常完善的网站了。那我们为什么还需要Vue呢?输入新事项点击“添加”按钮,事项添加到列表点击事项旁的“删除”按钮,删除该项列表底部实时显示“共 X 条事项”

2026-06-03 16:57:11 566

原创 【Redis】高可用集群架构

我们可以看到,虽然主从结构解决了数据全在一台机器上可能不安全(高可用)和读扩展(读写分离)的问题,但是他还没有解决如果数据过大该怎么办(每个从库仍然需要存储完整的数据副本,所以总数据量超过单机磁盘容量时,主从架构依然无能为力),还有如果主机挂了,实际上是需要管理员来提升从机的,较为麻烦。),这样做的核心目的就是为了实现物理级别的“防碎裂容灾”——当机房里某一台服务器突然遭遇主板烧毁或拉闸断电时,其他服务器上的从节点和哨兵集群能在瞬间接管断裂的哈希槽,保证整个公司的核心缓存业务在硬件毁灭时依然稳如泰山。

2026-06-01 20:56:53 623 5

原创 【Redis】线上并发三大灾难

穿透:查的是不存在的数据,黑客恶意乱搞。防御靠 布隆过滤器 或 缓存空对象。击穿:查的是超热点的数据,刚好过期。防御靠 互斥锁(SETNX) 或 热点数据永不过期。雪崩:成千上万的 Key 集体过期,或 Redis 直接宕机。防御靠 随机过期时间 和 高可用集群。

2026-05-31 15:10:57 279

原创 【Redis】网络高并发模型

单线程”的本质:指 Redis 的命令执行是单线程的,这带来了天然的原子性与免锁特性。高并发的底层依赖:高并发依靠的是Linux 内核的epoll(I/O 多路复用) + 非阻塞 I/O,单线程即可轻松驾驭数十万个活跃连接。性能瓶颈的真相:在纯缓存场景中,CPU 执行命令(内存修改)极快,根本不是瓶颈;真正的瓶颈在于网络带宽以及多线程带来的上下文切换损耗。现代化演进:Redis 6.0+ 的多线程 I/O 仅仅优化了“网卡到缓冲区”的搬运速度,其灵魂(核心执行线程)依然纯粹单线程。

2026-05-31 14:24:30 868

原创 epoll——I/O多路复用技术

Linux 下实现 I/O 多路复用的系统调用有 select、poll、epoll。其中 epoll 是性能最好、最适合高并发场景的。

2026-05-31 01:19:12 268

原创 【Redis】持久化机制

除了 AOF,你还可以根据业务的并发量,在配置文件中自定义 RDB 的快照频率。其格式为save <秒数> <修改次数>```text这行配置意味着:“在 1200 秒(20分钟)内,如果至少有 100 个 Key 被修改,就自动触发一次 RDB 快照”。如果你只想用 AOF,不希望 Redis 自动拍 RDB 快照,可以在配置文件中加入:save ""无需等待定时规则,你可以在redis-cli中随时手动输入以下命令,让 Redis 在后台立刻进行一次全量快照:BGSAVE。

2026-05-30 15:53:21 388

原创 【Redis】基础概述与数据类型

直白来说,Redis是一个基于内存的,用c语言编写的「键值型(Key-Value)」NoSQL 数据库。

2026-05-29 16:25:34 759

原创 【MySQL】进阶02-索引

再添加5时,因为5比4大,会放到4的右边,此时节点有5个数,超过了5阶规定的上限(最多4个),于是将中间的那个数(即3)向上提出来成为父节点,3左边的数(1、2)形成一个左子节点,3右边的数(4、5)形成一个右子节点。如果查询的数据量占全表数据的比例过大(通常在 20%~30% 以上),或者字段的区分度极低(如性别、状态字段),优化器会认为“先读索引树、再频繁回表”的开销远大于直接全表扫描,从而主动放弃索引。在 InnoDB 中,表中的数据行,本身就是存放在 B+Tree 的叶子节点上的。

2026-05-27 16:38:15 845

原创 【MySQL】进阶01-存储引擎

MySQL 的架构设计非常优秀,它采用了插件式的存储引擎架构,将“查询处理”与“数据存储/提取”完全解耦。这意味着,MySQL 规定了一套统一的接口(标准),任何人都可以根据这套接口开发自己的存储引擎。如果线上的表以前用的是 MyISAM,现在想改成 InnoDB,不需要删表重打,一条命令搞定。在开始之前,我们必须要了解MySQL的体系结构,知道它大概是怎么运作的。在开发或排查问题时,你首先需要知道你的 MySQL 到底支持哪些引擎。在这一部分,面试和实战中最喜欢考的就是“服务层”与“引擎层”的分工。

2026-05-24 23:20:59 703

原创 【JWT】验证令牌的使用

JWT 的全称是 JSON Web Token。通俗来说,它是一张由服务器签发的‘数字通行证’。当用户登录成功后,服务器会发给客户端(浏览器/APP)一个加密的字符串,此后,客户端每次请求服务器,只要带着这张‘通行证’,服务器就能立刻认出你是谁,并决定是否放行。以前最主流的身份验证方式是Cookie-Session 机制。

2026-05-23 21:15:41 975

原创 【Git】基础概念与在vscode中的简单使用

git是本地代码存档的管理工具。就像是steam游戏中,你可以在游戏中存档,退出来之后就会看到图标旁边的已上传steam云端。写代码有时也会感觉‘还是之前那一版本的好‘,所以也会想要存档,这样就算改完之后代码直接罢工,也可以根据存档回到之前的版本。我们可以用一个形象的比喻:VS Code 的 Git 按钮就像是汽车的“自动挡”,而 Git 命令行则是“手动挡”。这时候就需要Git了,Git是一个本地软件,安装在电脑上,负责记录和存档。此时更改项目文件中的内容,点击再次提交,就能看到有两个本地存档了。

2026-05-23 16:18:56 760

原创 【JavaScript】通过AJAX技术让前端发请求到后端

AJAX 是 Asynchronous JavaScript and XML(异步 JavaScript 和 XML)的缩写。它的核心作用是:让网页在不重新加载整个页面的情况下,向服务器发送请求并局部更新页面。比如在百度的搜索框中,我们输一个字下方就会立马弹出一串联想词,但是这并不是直接刷新整个页面,而是AJAX在后台随着输入,不断向服务器请求匹配,局部刷新下面那一串联想词。AJAX实际是以下几种技术的组合:工作流程:二,使用 Axios 来实现 AJAX 请求Axios 是一个基于 Promise

2026-05-21 19:43:40 1080

原创 【Linux】基础命令

当我们输入ll(相当于ls -l的简写)时,会看到文件前有一串字符串,比如-rwxr-xr-x,那么它们是什么意思?传统网络配置工具(需安装 net-tools)在配置好环境之后,就要学习一些基础的指令了。所以常见的权限有777,755,644等。现代网络配置工具,替代 ifconfig。替代 netstat,更快显示监听端口。systemd 系统的主机名管理工具。接下来就可以看常见的命令有哪些了。不加用户名则修改当前用户。不加用户名则查当前用户。不加用户名则查当前用户。查阅当前终端的后台任务。

2026-05-19 23:59:26 523

原创 【Linux】环境配置

左侧点击“新 CD/DVD (IDE)”,选择 “使用 ISO 映像文件”,点击 “浏览” 按钮,在电脑里找到你提前下载好的那个几个G的 CentOS 7 的 .iso 镜像文件,双击选中它。选择典型——>选择稍后安装操作系统——>选择liunx,并选择CentOS 7——>虚拟机名称,路径可以自己改——>指定磁盘容量,推荐30-40G左右,不然后面不够很麻烦,勾选将虚拟磁盘拆分成多个文件——>主机就填虚拟机的IP,密码就是数据库的密码,点击测试连接,稍后就会提示成功。还有CentOS7,一样的。

2026-05-19 20:29:31 581

原创 【Dify】工作流和agent

如果用户问的是退款、发票或投诉,就走ELSE线路,复杂的业务调用HTTP请求节点对接后台接口,实在搞不定的直接连转人工节点。利用大模型的推理能力,从一段杂乱的非结构化长文本中,按照你指定的字段名称和数据类型(如字符串、数字、布尔值、数组),精准地把核心关键信息“提炼”并整理出来,生成一组规范的参数,专为喂给下游的代码节点或 API 工具使用。核心功能:调用指定的大语言模型(如 GPT、Claude 等),根据你编写的提示词(Prompt)和输入的变量,进行文本生成、推理、翻译或摘要。

2026-05-19 10:05:36 560

原创 【Dify】掌握Function Calling和插件应用

是大模型的一项高级底层能力。简单来说,就是让大模型自己决定在什么时候去调用什么工具。如果说 Function Calling 是需要你懂一点编程、自己去写“工具说明书”的毛坯房;那么插件应用就是 Dify 已经为你装修好、开箱即用的精装房。插件是 Dify 生态中封装好的、针对特定第三方服务的工具包。在 Dify 中,如果你想自己定义一个插件来连接公司内部的系统(如 ERP、CRM)或者特定的 API 接口,有两种途径。

2026-05-17 00:16:48 1435

原创 【Dify】提示词和知识库

摘要: 大模型应用开发中,**提示词(Prompt)和知识库(RAG)**是关键要素。提示词通过角色定义、任务描述、约束条件等结构化指令控制模型输出逻辑与格式;知识库则通过检索外部数据(如企业文档)增强回答准确性,避免幻觉。两者协同工作:提示词决定“如何回答”(行为规范),知识库提供“回答内容”(事实依据)。结合Few-Shot、思维链等提示技巧与RAG技术,可构建既懂规则又具备专业知识的AI助手。

2026-05-16 11:44:22 743

原创 【Dify】环境配置和接入大模型

Dify是一个开源的大语言模型应用开发平台(LLMOps),旨在快速将AI模型转化为可落地的应用程序。其环境配置依赖两大核心组件: Docker:通过容器化技术解决环境不一致问题,实现跨平台运行。核心概念包括镜像(静态模板)、容器(运行实例)和镜像仓库(托管服务)。相比传统虚拟机,Docker更轻量高效,直接共享宿主机内核,启动快且资源占用低。 Ollama:专为本地大模型设计的部署工具,支持一键运行Llama 3、Qwen等主流模型。优势包括开箱即用、零代码部署、资源友好和隐私安全,提供REST API便

2026-05-16 11:12:36 661

原创 【JavaScript】DOM,BOM常用写法记录

当你调用 element.classList.toggle(‘dark-theme’) 时,浏览器在底层做的事情其实就是修改这个元素的 class 属性(在 HTML 上就是 class=“…classList 提供了一些方便的方法来添加、删除、切换类名,比如 add、remove、toggle、contains 等。,可以把数据保存在用户的浏览器中,即使关闭页面或重启浏览器也不会丢失(除非手动清除)。这个是重点,可以用来更换页面的背景样式。// 页面加载时:读取之前保存的主题。// 读取上次保存的主题。

2026-05-13 11:48:24 498

原创 【JavaScript】BOM和DOM到底是什么?一文带你和浏览器窗口、网页文档“交朋友”

概念核心意义关键代码/方法事件源触发事件的源头元素e.target事件类型用户执行的动作名称clickmouseoverkeydown等事件处理如何给元素绑定响应代码推荐事件流事件在 DOM 树中传递的路径捕获阶段 → 目标阶段 →冒泡阶段控制流向阻止事件向父元素传递控制行为阻止浏览器的自带默认动作不想跳转不刷新,快用;避免父级受牵连,记得。

2026-05-13 10:32:15 815

原创 【JavaScript】核心语法全攻略:从零基础到面向对象实战

注意,在这里,如果引入了外部文件,还想在再这里写当前网页的专属逻辑时,需要分两个标签写,写在引入外部文件的script中时就会无视内部的代码。如果说HTML是房子的框架,那么CSS就是房子的装修,而JavaScript就是房子的智能系统。和 Python 也差不多,就是格式的不同(Python 用缩进和冒号,JS 用花括号。在 JS 中,对象是属性(变量)和方法(函数)的集合。JS 是一门“聪明”的语言,它会根据你写的内容自动判断类型。函数是把一段常用的代码封装起来,给它起个名字,可以重复调用。

2026-05-12 16:36:16 647

原创 【CSS】基础一篇过

相对定位:原地踏步,仅视觉移动,位置还在。绝对定位:放飞自我,以有定位的父辈为准,位置不在。固定定位:死心眼,只认浏览器窗口,不随页面滚动。z-index:定位元素的“高度”,数字越大越在最上面。注意:只有定位了的元素(除了 static)才有 z-index。

2026-05-12 11:10:36 762

原创 【HTML】超详细 HTML 核心知识点全解析

基本语法:属性总是写在开始标签中,格式为<标签名 属性名="属性值">。多属性支持:每个 HTML 元素可以具有多个不同的属性,它们之间用空格分隔。键值对形式:属性通常以的形式出现。引号规范:属性值必须用引号包裹(习惯用双引号)。大小写规范(重要)属性名:不区分大小写(如src和SRC相同),但习惯用小写。属性值:对大小写敏感(如和可能被视为不同文件)。语义化(Semantic)的意思就是“让标签自己说话”。非语义化—— 机器只知道这是一个层。语义化<header>

2026-05-11 16:27:30 596

原创 【FastAPI】ORM-02.使用 ORM 高效处理数据库逻辑

本文介绍了SQLAlchemy异步查询操作的核心要点,主要包括: 基础查询流程:通过db.execute()执行查询,使用scalars()将结果转换为模型对象,配合first()或all()获取数据。 条件查询方法:详细说明了各种条件查询方式,包括比较运算符、AND/OR逻辑、IN/BETWEEN范围查询、模糊匹配等,并介绍了动态条件构建技巧。 聚合操作:演示了如何使用func进行分组统计计算(COUNT/AVG/SUM等),以及结果处理方式与常规查询的区别。 结果处理差异:重点解释了scalars()和

2026-05-10 14:40:16 1037

原创 【FastAPI】ORM-01.基础配置

ORM(Object-Relational Mapping,对象关系映射)是一种编程技术,它负责在关系型数据库(如 MySQL、PostgreSQL)和面向对象编程语言(如 Python)之间建立一座“桥梁”。简单来说就是ORM 允许你用 Python 类来定义表结构,用操作对象来代替 SQL 语句。Python 生态中有多个 ORM 方案,比如 Django ORM、Peewee、Tortoise-ORM。而 SQLAlchemy 是最流行的选择。功能强大:同时提供ORM(对象操作)和Core。

2026-05-08 20:04:45 826

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除