- 博客(332)
- 资源 (6)
- 收藏
- 关注
原创 让AI帮我下单寄快递?程序员视角下这应该如何实现?
本文介绍了如何使用Spring AI Alibaba框架实现快递下单多轮对话助手。主要内容包括: 项目背景:快递下单需要分步骤收集收件人、发件人、物品等信息,是多轮对话的典型场景。 技术挑战:涉及状态管理、流程控制、上下文记忆和工具调用等难点。 解决方案:采用Spring AI Alibaba的React Agent和Model Hook机制,通过状态常量管理对话进度,分步骤收集信息并最终完成订单创建。 实现要点: 定义订单状态常量管理流程 使用React Agent处理用户请求 通过Hook机制实现步骤控
2026-03-15 18:54:52
416
原创 从零掌握 Spring AI Alibaba Skill:定义、注册与渐进式披露
摘要:Spring AI Alibaba的Skill注册机制提供了一种模块化管理Agent能力的解决方案。该机制通过定义Skill(包含SKILL.md描述文件和执行逻辑)实现能力封装,解决了传统方式中Token浪费、决策困难等问题。核心组件包括SkillRegistry(支持Classpath和FileSystem两种加载方式)和SkillsAgentHook(提供技能元数据注入和渐进式披露功能)。实践表明,该机制能有效支持按需加载、模块化管理和渐进式能力披露,适用于构建复杂的智能Agent应用。
2026-03-13 14:46:09
587
原创 从自然语言到SQL,再加一道人工防线:Spring AI Alibaba 实战
本文介绍了一个基于Spring AI Alibaba的智能SQL查询助手系统,实现了从自然语言到SQL的安全转换。系统核心特点包括:1) 自然语言转SQL功能;2) 人工审批机制,所有SQL执行需用户确认;3) 自动拦截危险SQL操作;4) 完整CRUD支持。技术栈采用Spring AI Alibaba框架、通义千问大模型、H2数据库和Spring Boot。文章详细解析了Human-in-the-loop人机协作模式和Spring AI Graph架构,并提供了数据库配置、实体类定义及核心CURD工具的实
2026-03-11 12:15:00
395
原创 告别纯文本聊天:基于Spring AI,打造支持富UI的流式对话系统
基于Spring AI的流式对话系统实现 本文介绍了一个基于Spring AI构建的智能对话系统,支持流式响应和多样化UI展示。系统通过Prompt工程引导AI返回结构化数据(文本、卡片、列表、选项),无需复杂函数调用即可实现丰富的交互体验。技术架构采用Spring Boot 3.5.4+Spring AI 1.1.2,支持OpenAI兼容接口,包含完整的流式响应(SSE)、会话管理和结构化数据解析功能。系统提供简洁的RESTful API接口,前端可实时接收并渲染不同类型的AI响应,显著提升了对话交互的表
2026-03-08 10:05:27
342
原创 深入理解 ReAct 模式:基于Spring AI从0到1实现一个ReAct Agent
ReAct(Reasoning + Acting)是一种先进的智能体编程范式,它将推理(Reasoning)和行动(Acting)有机结合,让 AI 系统能够像人类一样思考并执行任务。图 1: ReAct 核心循环流程图 - Thinking → Acting → Observing 顺时针闭环,展示智能体的基础运行模型首先,我们需要定义一些工具供 AI 调用(也用于后续的测试示例)。这里提供了几个基本的计算和一个模拟的天气查询工具,通过SpringAI的@Tool进行工具声明定义import org。
2026-03-06 14:28:05
414
原创 实战干货!Spring AI 集成语音识别,实现实时翻译机器人的完整指南
本文介绍了基于Spring AI框架搭建实时语音翻译机器人的完整实现方案。通过异步处理和SSE技术,实现了音频转录与文本翻译的并行处理流程。文章详细讲解了环境准备、API配置、核心依赖以及整体架构设计,重点突出了异步处理和SSE推送机制的优势。该方案支持用户上传音频文件或实时录音,后台通过SiliconFlow API完成语音识别和翻译,并实时推送处理结果到前端,提供流畅的用户体验。
2026-03-06 14:26:04
350
原创 Spring AI工具调用如何对接真实业务?从自动到手动控制的完整链路剖析
本文介绍了Spring AI Function Calling的高阶使用技巧,通过实战项目演示了如何手动控制工具执行流程。主要内容包括:1) 使用ToolContext传递会话和用户上下文信息;2) 工具命名约束避免重复;3) 对比Spring AI自动执行与开发者手动控制两种模式;4) 完整实现从用户请求到工具执行再到结果总结的全流程。项目示例展示了天气查询工具的最佳实践,重点解析了@Tool注解、参数描述和上下文传递等核心功能,为企业级AI应用开发提供了实用指导。
2026-03-06 14:07:44
444
原创 Jar包会自己消失?Excel会“记忆“数据?我遇到了两个灵异bug
分享了两起职业生涯中遇到的"灵异bug"排查过程。第一起是Java应用运行一段时间后出现ClassNotFound异常,最终发现是异步任务误删了工作目录下的jar包;第二起是Excel解析返回不存在的数据,经排查发现是Excel的"隐藏单元格"特性导致数据残留。这两个问题都展现了软件开发中反直觉的bug现象,排查过程结合技术分析与偶然发现,最终找到根因并修复。
2026-02-04 15:04:45
821
原创 Spring AI中的多轮对话艺术:让大模型主动提问获取明确需求
本文介绍了Spring AI中实现多轮对话交互的艺术,通过AskUserQuestionTool工具让大模型能够主动提问获取用户明确需求。文章分析了单次交互存在的问题,如模糊输入处理和状态管理不足,并提出了基于Function Callback的主动问询设计方案。核心实现通过结构化问题和自定义交互处理分离责任,使AI能决定何时提问而开发者控制具体交互方式。文章还提供了项目创建指南,包括环境要求(SpringAI 2.x、JDK21/17)和核心依赖配置(如智谱GLM-4.5-Flash模型),展示了如
2026-02-04 08:57:18
858
原创 大模型应用开发实战:两百行实现一个自然语言地址提取智能体
摘要 本文介绍了一个基于SpringAI框架和大模型技术的智能地址提取方案。针对快递业务场景中的自然语言地址文本,系统通过大模型自动提取结构化地址信息,并利用Function Calling机制实时查询行政编码,确保数据准确性。方案采用SpringAI 1.1.2、智谱GLM-4-Flash大模型等技术栈,通过Prompt工程优化模型输出质量。相比传统收费接口,该方案实现了零成本、高精度的地址提取功能,可作为大模型落地的典型应用案例。
2026-01-28 10:50:06
537
原创 再见,OCR模板!你好,发票智能体:基于SpringAI与大模型的零配置发票智能提取架构
本文提出了一种基于SpringAI和多模态大模型的发票信息提取智能系统架构。该系统采用分层设计,包含接入层、应用层、服务层、存储层和运维层,实现从发票上传到结构化数据输出的全流程处理。核心创新点包括:1)零模板配置,直接理解任意版式发票;2)结合语义理解的多模态识别;3)端到端生成结构化数据。文章详细阐述了系统架构、业务流程和核心数据模型设计,展示了如何利用大模型技术突破传统OCR方案的局限,为发票自动化处理提供更智能的解决方案。
2026-01-28 10:48:38
644
原创 基于Spring AI实现RAG知识库问答机器人:从零到一的完整教程
本文介绍了使用Spring AI框架构建RAG知识库问答机器人的完整实现过程。RAG技术通过检索增强生成,动态构建最小相关上下文,有效弥补大语言模型的上下文窗口限制。文章详细讲解了项目结构、核心实现步骤,包括自定义文本向量存储TextBasedVectorStore的设计,以及文档分块、向量化和检索的关键方法。项目采用Spring AI、Tika文档处理等技术栈,实现了一个无需依赖外部向量数据库的基础解决方案,适合快速原型开发。通过本教程,读者可以掌握RAG技术的核心原理和实际应用。
2026-01-28 10:42:23
554
原创 SpringAI Agent开发秘籍:让javaer也可以用上Agent Skills
SpringAI快速集成Claude Skills开发智能应用 摘要:本文介绍了如何利用SpringAI 2.0快速集成Claude Skills开发智能应用。通过构建一个Java代码审查工具(code reviewer)为例,展示了项目创建、环境配置、Skills定义等关键步骤。项目基于SpringBoot 4.0.1和JDK21,使用智谱GLM-4.5-Flash大模型作为核心引擎。重点讲解了Skills目录结构设计、交互日志打印等实现细节,为Java开发者提供了在AI时代快速构建智能应用的新思路。
2026-01-28 10:35:49
1919
原创 开发调试与生产分析的利器:MyBatis SQL日志合并插件,让复杂日志秒变可执行SQL
本文介绍了MyBatis SQL Log Merger插件,它能自动将MyBatis的参数化SQL日志转换为可执行SQL语句,解决开发和生产环境中手动拼接SQL的痛点。插件支持一键生成完整SQL、提供独立工具页、语法高亮和格式化功能,所有处理均在本地完成确保数据安全。适用于开发调试和生产问题排查,支持多种日志格式,显著提升SQL分析效率。可通过Chrome商店安装使用。
2025-12-23 19:15:01
891
原创 SpringBoot系列之数据库版本管理Liquibase集成
前面几篇介绍了项目启动之后进行数据库初始化的几种方式,接下来我们看一下如何使用Liquibase来实现数据库版本管理moreSpringBoot内置了对Liquibase的支持,在项目中使用非常简单。
2023-03-24 16:19:25
955
原创 SpringBoot系列之数据库初始化-datasource配置方式
如何实现在项目启动之后执行相应的sql,实现数据库表的初始化?本文将作为初始化方式的第一篇:基于SpringBoot的配置方式实现的数据初始化
2022-12-28 17:32:10
3130
2
原创 SpringBoot系列之数据库初始化-jpa配置方式
上一篇博文介绍如何使用来实现项目启动之后的数据库初始化,本文作为数据库初始化的第二篇,将主要介绍一下,如何使用spring.jpa的配置方式来实现相同的效果
2022-12-28 17:29:17
1222
原创 SpringBoot系列教程之XML传参返回实战
最近在准备使用微信公众号来做个人站点的登录,发现微信的回调协议居然是xml格式的,之前使用json传输的较多,结果发现换成xml之后,好像并没有想象中的那么顺利,比如回传的数据始终拿不到,返回的数据对方不认等接下来我们来实际看一下,一个传参和返回都是xml的SpringBoot应用,究竟是怎样的
2022-12-27 13:59:09
3994
原创 SpringBoot系列教程之定义接口返回类型的几种方式
实现一个 web 接口返回 json 数据,基本上是每一个 javaer 非常熟悉的事情了;那么问题来了,如果我有一个接口,除了希望返回 json 格式的数据之外,若也希望可以返回 xml 格式数据可行么?
2022-12-27 13:55:31
2437
原创 【SpringBoot 实战】数据报表统计并定时推送用户的手把手教程
知识点:基于 MySql 的每日新增用户报表统计(如何统计每日新增用户,若日期不连续如何自动补 0?)定时执行报表统计任务MyBatis + MySql 数据操作邮件发送Thymeleaf 引擎实现报表模板渲染
2022-08-23 18:56:53
852
原创 万字详解:MySql,Redis,Mq,ES的高可用方案解析
本片文章主要是分析当下不同应用场景下的几个主流系统的高可用策略,来看一下如何来保障的系统的高可用常见的高可用思路冗余(如数据副本、主备服务等)拆分(数据拆分、服务能力拆分等)持久化redis持久化RDB数据落盘加载方式+AOF记录操作命令用于回放策略主从,主从从全量数据冗余、读写请求分离,负载均衡的思想;核心问题在于主节点挂掉之后需要人工参与手动指定主库哨兵机制PING/PONG的探活机制,监听主节点,宕机之后自动选主,确保高可用;mysql通过冗余来实现高可用如主备。...
2022-08-02 09:49:58
2404
原创 万字总结:分布式系统的38个知识点
万字总结分布式系统的38个知识点,带你了解什么是分布式,分布式会遇到什么问题,有哪些理论支撑,有哪些经典的应对方案,业界是如何设计并保证分布式系统的高可用呢
2022-07-28 21:56:56
535
原创 ElasticSearch基本使用姿势二
本文作为elasticsearch 基本使用姿势第二篇,包含以下内容- 查询指定字段- 限制返回条数- 分页查询- 分组查询- 高亮- 自动补全提示- 排序- 返回结果聚合,如统计文档数,某个field value的求和、平均值等...
2022-06-14 19:21:06
433
1
原创 程序员的浪漫-用她的名字作画Python版
程序员的浪漫-用她的名字作画Python版hello,大家好,我是一灰灰,之前介绍了一篇使用她的名字来画出她的美图的文章,其中主要使用的Java来实现的,今天呢,我们再来用Python来实现一下同样最终的代码量也不会超过三十行上篇博文超链:* 程序员的浪漫-用她的名字作画Python版 - 一灰灰Blog1. 环境相关这里我们选择python来作为我们的主要绘图武器,至于python的环境安装相关的这里就不介绍了,有兴趣的小伙伴自行探索再python界,操作图片的利器PIL,相信大伙也都清.
2022-05-30 19:18:37
2919
5
原创 MySql之json_extract函数处理json字段
MySql之json_extract函数处理json字段在db中存储json格式的数据,相信大家都或多或少的使用过,那么在查询这个json结构中的数据时,有什么好的方法么?取出String之后再代码中进行解析?接下来本文将介绍一下Mysql5.7+之后提供的json_extract函数,可以通过key查询value值1. 使用方式数据存储的数据是json字符串,类型为我们常用的varchar即可语法:JSON_EXTRACT(json_doc, path[, path] …)若json.
2022-05-30 19:07:27
4684
原创 Guava HashMultimap使用及注意事项
guava基本上可以说是java开发项目中,大概率会引入的包,今天介绍的主角是一个特殊的容器 -- `HashMultmap`,可以简单的将它的数据结构理解为`Map<K, Set<V>>`
2022-05-25 20:10:57
899
原创 Java实现图片转字符输出示例demo
Java实现图片转字符输出示例demo前面几篇博文介绍了使用jdk来对图片做一些有意思的转换,接下来我们再介绍一个有意思的玩法,直接根据图片,输出一个二维字符数组,实现用字符来实现绘画的场景各位小伙伴可能都有看到过一些有趣的注释,比如大佛,美女之类的,通关本文,相信你也很可以很简单的实现类似的场景关键实现,在前面的文章中其实也说到了,下面是超链Java也可以非常简单的实现图片灰度化 原创JavaFun | 实现图片转字符图片示例demo 原创JavaFun | 基于Java实现Gif图转.
2021-12-06 19:07:29
1940
3
原创 SpringBoot系列之拦截器注入Bean的几种姿势
之前介绍过一篇拦截器的基本使用姿势: 【WEB系列】SpringBoot之拦截器Interceptor使用姿势介绍在SpringBoot中,通过实现WebMvcConfigurer的addInterceptors方法来注册拦截器,那么当我们的拦截器中希望使用Bean时,可以怎么整?I. 项目搭建本项目借助SpringBoot 2.2.1.RELEASE + maven 3.5.3 + IDEA进行开发开一个web服务用于测试<dependencies> <!-- 邮.
2021-11-15 19:13:30
5169
原创 SpringBoot系列Mybatis之转义符的使用姿势
【DB 系列】Mybatis 之转义符的使用姿势在 mybatis 的 xml 文件中直接写 sql 比较方便简洁,但是需要注意的是,在 xml 文件中,经常会遇到一些需要转义的场景,比如查询 id < xxx的数据,这个小于号就不能直接写在 sql 中,接下来我们将看一下,mybatis 中的有哪些转义符,可以怎么处理转义问题I.转义1. 转义符在 mybatis 的 xml 文件中,我们最常见的转义符为小于号,如查询 id 小于 100 的数据<select id="xxx..
2021-09-27 20:43:38
2509
原创 SpringBoot系列Mybatis之参数传递的几种姿势
SpringBoot 系列 Mybatis 之参数传递的几种姿势在 mybatis 的日常开发中,mapper 接口中定义的参数如何与 xml 中的参数进行映射呢?除了我们常用的@Param注解之外,其他的方式是怎样的呢?不添加注解默认场景会怎样?接口参数类型为Map/POJO又该如何处理?本文将主要介绍一下mybatis的日常开发中,mapper接口中的定义的参数与xml中占位符的几种映射绑定方式I. 环境配置我们使用 SpringBoot + Mybatis + MySql 来搭..
2021-09-25 21:43:35
949
原创 SpringBoot实战基于异常日志的邮件报警
SpringBoot实战基于异常日志的邮件报警相信所有奋斗在一线的小伙伴,会很关心自己的系统的运行情况,一般来说,基础设施齐全一点的公司都会有完善的报警方案,那么如果我们是一个小公司呢,不能因为基础设施没有,就失去对象的感知能力吧;如果我们的系统大量异常却不能实时的触达给我们,那么也就只会有一个结果–杀个程序猿祭天本文简单的介绍一种实现思路,基于error日志来实现邮件的报警方案I. 项目环境1. 项目依赖本项目借助SpringBoot 2.2.1.RELEASE + maven 3.5...
2021-08-09 23:50:14
1763
1
原创 SpringBoot系列之邮件发送姿势介绍
SpringBoot系列之邮件发送姿势介绍邮件发送,在实际的项目开发中,可能用的不是特别多,如果没有特定的需求,相信也没有多少小伙伴会特意的去关注,那么如果现在我们希望针对项目做一个异常的报警系统,当出现异常的时候,可以向指定的小伙伴发送邮件提醒,那么让我们来实现这个功能,可以怎么办呢?这里介绍一下如何使用SpringBoot封装好的MailSender来实现邮件发送I. 项目环境1. 项目依赖本项目借助SpringBoot 2.2.1.RELEASE + maven 3.5.3 + ID..
2021-08-09 23:44:45
980
1
原创 SpringBoot + Mybatis系列之插件机制 Interceptor
【SpringBoot + Mybatis系列】插件机制 Interceptor在 Mybatis 中,插件机制提供了非常强大的扩展能力,在 sql 最终执行之前,提供了四个拦截点,支持不同场景的功能扩展Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)ParameterHandler (getParameterObject, setParameters)Re..
2021-08-09 23:41:33
1575
原创 SpringBoot系列 Mybatis 之自定义类型转换 TypeHandler
SpringBoot系列 Mybatis 之自定义类型转换 TypeHandler在使用 mybatis 进行 db 操作的时候,我们经常会干的一件事情就是将 db 中字段映射到 java bean,通常我们使用ResultMap来实现映射,通过这个标签可以指定两者的绑定关系,那么如果 java bean 中的字段类型与 db 中的不一样,应该怎么处理呢?如 db 中为 timestamp, 而 java bean 中定义的却是 long通过BaseTypeHandler来实现自定义的类型转换..
2021-08-09 23:31:58
1914
原创 【SpringBoot Mybatis系列】MapperMapper接口与Sql绑定几种姿势
【DB系列】SpringBoot系列Mybatis之Mapper接口与Sql绑定几种姿势通常我们在使用Mybatis进行开发时,会选择xml文件来写对应的sql,然后将Mapper接口与sql的xml文件建立绑定关系,然后在项目中调用mapper接口就可以执行对应的sql那么如何将Mapper接口与sql进行绑定呢?本文将介绍四种常见的姿势默认策略SpringBoot配置参数mybatis.mapper-locations<mapper>指定SqlSessionFactory..
2021-07-26 16:21:09
2499
原创 【SpringBoot + Mybatis系列】Mapper接口注册的几种方式
【SpringBoot + Mybatis系列】Mapper接口注册的几种方式SpringBoot项目中借助Mybatis来操作数据库,对大部分java技术栈的小伙伴来说,并不会陌生;我们知道,使用mybatis,一般会有下面几个Entity: 数据库实体类Mapper: db操作接口Service: 服务类本片博文中的注解,放在Mapper上,你知道注册Mapper有几种方式么(这个问题像不像"茴"字有几个写法????)I. 环境准备1. 数据库准备使用mysql作为本文的实例数据
2021-07-26 16:15:03
1803
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅