精选分类

文章列表

3.8k3 分钟

2026-07-07🌱上海: ☁️ 🌡️+37°C # 背景 这次改造的核心目标,是把木南项目里的 AI 智能体从“前端按钮 + 固定逻辑”的形态,推进到一个可以后台管理、可以观察运行过程、可以持续演进的配置中心。 在这个版本之前,某些所谓智能体更像是前端快捷入口。比如“拼豆达人”只是一个前端提示词按钮,没有后端 Agent 定义、工具链、Prompt 版本和运行日志,因此它不适合作为真实智能体保留。 本轮最终收敛的范围是 智能体配置中心 v1 + 旅游助手闭环: 后台可以管理智能体定义、Prompt 模板和工具绑定。 Prompt 主视图只展示当前生效版本,历史版本通过展开区查看。
12k11 分钟

2026-06-26🌱上海: ☀️ 🌡️+95°F 🌬️SE6mph # Mu-ai-agent-7 # 前言 前面几篇文章把 AI Agent 的核心组件都过了一遍:模型调用、Advisor 链、结构化输出、记忆管理、Prompt 模板、多模态视觉。但还有一个非常实用的场景没涉及—让 AI 基于我们自己的文档来回答问题,也就是 RAG(Retrieval-Augmented Generation,检索增强生成)。 用大白话说,RAG 做的事情就是: 把文档切成小块,每块转成向量存到向量数据库里 用户提问时,先把问题也转成向量,去数据库里搜最相关的文档片段 把搜到的文档片段拼到 pro
11k10 分钟

2026-06-26🌱上海: ☀️ 🌡️+91°F 🌬️SE7mph # Mu-ai-agent-6 # 前言 在前面的五篇文章中,我们的 AI 助手一直是个 " 纯文字选手 "—它能聊面试、记上下文、做结构化输出,但如果你给它发一张图片,它就完全看不懂了。这在很多场景下是个硬伤:比如用户拍了一张报错截图想让助手帮忙排查,或者上传了一张商品图想自动生成描述文案。 这次就来给 Agent 加上 " 眼睛 "—接入通义千问的视觉语言模型 Qwen-VL,让它具备图片理解能力。整体思路和前面的文本对话一样:复用 Spring AI 的 ChatClien
11k10 分钟

2026-06-24🌱上海: ☀️ 🌡️+90°F 🌬️S8mph # Mu-ai-agent-5 # 前言 在前面的几篇文章中,我们的 prompt 都是直接硬编码在 Java 代码里的—用字符串拼接构造用户消息,或者写一个 static final String 常量当系统提示词。这种做法在小规模项目里没什么问题,但随着 prompt 越来越多、越来越长,弊端就显现出来了: 想调一下措辞让模型回答更好?得改 Java 代码、重新编译、重新部署 多个方法里都有大段的 prompt 字符串,代码可读性很差 想统一修改 prompt 风格?得到处翻、到处改 这个问题其实在 Web 开发
5.7k5 分钟

# 一、题目描述(LeetCode 11.盛最多水的容器) 给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。 说明:你不能倾斜容器。 约束条件: n == height.length 2 <= n <= 10^5 0 <= height[i] <= 10^4 示例: 输入:height = [1,8
4.4k4 分钟

# 一、题目描述(LeetCode 283.移动零) 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 要求:必须在原数组上操作,不能拷贝额外的数组。 约束条件: 1 <= nums.length <= 10^4 -2^31 <= nums[i] <= 2^31 - 1 示例: 输入:nums = [0,1,0,3,12],输出:[1,3,12,0,0] 输入:nums = [0],输出:[0] # 二、两种解题思路 & Java代码
14k13 分钟

2026-06-09🌱上海: ☀️ 🌡️+82°F 🌬️SE6mph # Mu-ai-agent-4 # 前言 在前面的文章中,我们用 MessageChatMemoryAdvisor 让 AI 助手具备了 " 记住上下文 " 的能力—它能记住你之前问了什么,对话不再 " 断片 "。但当时用的是 InMemoryChatMemoryRepository,所有对话都存在内存里,应用一重启就全丢了。 这对于一个真正要上线的应用来说显然不行。这篇文章就来深入聊聊 Spring AI 的聊天记忆持久化:它是怎么设计的、为什么序列化 Message 对象会比
9.8k9 分钟

2026-06-07🌱上海: ☀️ 🌡️+79°F 🌬️N8mph # mu-ai-agent-3 # 前言 默认情况下,大模型返回的是一段纯文本字符串。但在实际开发中,我们往往需要把 AI 的输出转换成 Java 对象来使用 — 比如存入数据库、返回给前端、做进一步的业务处理。 Spring AI 提供了 entity() 方法来实现这个需求,底层由 BeanOutputConverter 驱动,能自动根据你的 Java 类生成 JSON Schema 并附加到 prompt 中,让模型返回符合格式的 JSON,再自动反序列化为对象。 这次围绕"面试指导"场景,测
9.9k9 分钟

2026-06-07🌱上海: ☀️ 🌡️+79°F 🌬️N8mph # Mu-ai-agent-2 # 前言 在 Spring AI 的 ChatClient 体系中,Advisor 是一套非常优雅的拦截器机制,类似于 Spring MVC 的 Interceptor 或 Servlet 的 Filter。它可以让你在 AI 请求发送前和响应返回后插入自定义逻辑,而不需要改动业务代码。 这次的需求是:在用户输入发给 AI 模型之前,检查是否包含敏感词,如果有则替换为 ***。通过实现一个 SensitiveWordAdvisor,顺便把 Advisor 链的底层原理摸了一遍。 # Ad
1.9k2 分钟

2026-06-05🌱上海: 🌤️ 🌡️+78°F 🌬️←12mph 开发中,有多种方式可以在应用程序中调用AI大模型。下面介绍4种主流的接入方式。 # SDK接入 引入POM依赖 <!-- Source: https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java --> <dependency> <groupId>com.alibaba</groupId> &