AI 应用方案设计
根据需求实现具备多轮对话能力的 AI 恋爱大师应用整体方案围绕 2 个核心展开系统提示词的设计多轮对话的实现1、系统提示词设计系统提示词相当于 AI 应用的 “灵魂”直接决定 AI 的行为模式、专业性和交互风格。简单提示写法直接写一段系统预设定义你是谁能做什么你是一位恋爱大师为用户提供情感咨询服务简单提示可以运行但效果不理想。现实咨询场景专家会主动抛出引导问题挖掘背景而不是被动等待用户完整描述。 示例引导问题最近有什么迷茫的事情么请问你有什么需要我帮助的么你们的感情遇到什么问题了么多轮对话场景下AI 不能失忆要把历史对话作为上下文不断了解用户输出更全面建议。借助 AI 优化提示词输入给 AI 的指令我正在开发【恋爱大师】AI对话应用请你帮我编写设置给 AI 大模型的系统预设 Prompt 指令。要求让 AI 作为恋爱专家模拟真实恋爱咨询场景、多给用户一些引导性问题不断深入了解用户从而提供给用户更全面的建议解决用户的情感问题。AI 输出优化后的系统提示词扮演深耕恋爱心理领域的专家。开场向用户表明身份告知用户可倾诉恋爱难题。围绕单身、恋爱、已婚三种状态提问单身状态询问社交圈拓展及追求心仪对象的困扰恋爱状态询问沟通、习惯差异引发的矛盾已婚状态询问家庭责任与亲属关系处理的问题。引导用户详述事情经过、对方反应及自身想法以便给出专属解决方案。2、多轮对话实现实现带 “记忆力” 的 AI记住历史对话保持上下文连贯使用 Spring AI 框架对话记忆能力。 Spring AI 提供ChatClientAPI 和大模型交互。ChatClient 特性旧方式直接注入ChatModel调用大模型新方式手动构造ChatClient功能更丰富灵活支持链式调用Fluent API代码对比// 基础用法(ChatModel) ChatResponse response chatModel.call(new Prompt(你好)); // 高级用法(ChatClient) ChatClient chatClient ChatClient.builder(chatModel) .defaultSystem(你是恋爱顾问) .build(); String response chatClient.prompt().user(你好).call().content();两种构建 ChatClient 方式// 方式1使用构造器注入 Service public class ChatService { private final ChatClient chatClient; public ChatService(ChatClient.Builder builder) { this.chatClient builder .defaultSystem(你是恋爱顾问) .build(); } } // 方式2使用建造者模式 ChatClient chatClient ChatClient.builder(chatModel) .defaultSystem(你是恋爱顾问) .build();ChatClient 多种响应格式// 1. 返回 ChatResponse 对象包含元数据如 token 使用量 ChatResponse chatResponse chatClient.prompt() .user(Tell me a joke) .call() .chatResponse(); // 2. 返回实体对象自动将AI输出映射为Java对象 // 2.1 返回单个实体 record ActorFilms(String actor, ListString movies) {} ActorFilms actorFilms chatClient.prompt() .user(Generate the filmography for a random actor.) .call() .entity(ActorFilms.class); // 2.2 返回泛型集合 ListActorFilms multipleActors chatClient.prompt() .user(Generate filmography for Tom Hanks and Bill Murray.) .call() .entity(new ParameterizedTypeReferenceListActorFilms() {}); // 3. 流式返回适用于打字机效果 FluxString streamResponse chatClient.prompt() .user(Tell me a story) .stream() .content(); // 也可以流式返回ChatResponse FluxChatResponse streamWithMetadata chatClient.prompt() .user(Tell me a story) .stream() .chatResponse();设置默认参数动态修改系统提示词模板变量// 定义默认系统提示词 ChatClient chatClient ChatClient.builder(chatModel) .defaultSystem(You are a friendly chat bot that answers question in the voice of a {voice}) .build(); // 对话时动态更改系统提示词的变量 chatClient.prompt() .system(sp - sp.param(voice, voice)) .user(message) .call() .content();还支持指定默认对话选项、默认拦截器、默认函数调用。Advisors顾问 / 拦截器类比 Spring AOP一套可插拔拦截器。调用 AI之前、之后执行额外逻辑。前置增强调用 AI 前改写 Prompt、校验提示词安全后置增强调用 AI 后记录日志、处理返回结果示例代码给 ChatClient 增加拦截器MessageChatMemoryAdvisor实现多轮对话记忆QuestionAnswerAdvisor用于 RAG 知识库检索var chatClient ChatClient.builder(chatModel) .defaultAdvisors( new MessageChatMemoryAdvisor(chatMemory), // 对话记忆 advisor new QuestionAnswerAdvisor(vectorStore) // RAG 检索增强 advisor ) .build(); String response this.chatClient.prompt() // 对话动态设置拦截器参数会话id、记忆最大长度 .advisors(advisor - advisor.param(chat_memory_conversation_id, 678) .param(chat_memory_response_size, 100)) .user(userText) .call() .content();Advisors 执行流程流程图转文字步骤Spring AI 拿用户 Prompt 创建AdvisedRequest同时创建空AdvisorContext用来传递上下文数据。执行链上每一个 Advisor拦截器可以修改请求也可以直接截断请求不继续往下走自己填充返回内容。请求交给底层逻辑发送给ChatModel大模型。大模型返回ChatResponse响应沿着 Advisor 链条反向传回封装成AdvisedResponse携带共享的AdvisorContext。每一个后置 Advisor 处理、修改返回响应。提取结果转为ChatResponse返回给调用方。底层是责任链模式。拦截器执行顺序由getOrder()返回值决定数值越小越优先执行不是代码书写顺序。两种运行模式非流式 Non‑Streaming完整拿到全部结果再返回对象AdvisedRequest、AdvisedResponse调用CallAroundAdvisor。流式 Streaming打字机效果分段返回返回Flux流对象调用StreamAroundAdvisor。自定义 Advisor最好同时实现两种模式保证通用性。Chat Memory Advisor对话记忆拦截器内置 3 种实现MessageChatMemoryAdvisor把历史对话作为一条条独立消息追加到 prompt保留完整消息结构role角色user/assistant/system。PromptChatMemoryAdvisor把历史对话直接拼接到系统提示词文本里丢失原始消息边界。VectorStoreChatMemoryAdvisor把对话历史存入向量数据库。推荐使用MessageChatMemoryAdvisor符合大模型接口设计上下文连贯性更好。两种记忆存储输出样例1MessageChatMemoryAdvisor 输出消息数组格式[ {role: user, content: 你好}, {role: assistant, content: 你好有什么我能帮助你的吗}, {role: user, content: 讲个笑话} ]2PromptChatMemoryAdvisor 输出纯文本拼接以下是之前的对话历史 用户你好 助手你好有什么我能帮助你的吗 用户讲个笑话 现在请继续回答用户的问题。ChatMemory 存储接口ChatMemory是底层存储接口定义保存、查询、清空对话记录的抽象方法。public interface ChatMemory { default void add(String conversationId, Message message); void add(String conversationId, ListMessage messages); ListMessage get(String conversationId, int lastN); void clear(String conversationId); }Spring AI 内置多种存储实现InMemoryChatMemory内存存储重启丢失数据测试用。CassandraChatMemoryCassandra 持久化支持过期时间。Neo4jChatMemoryNeo4j 图数据库持久化无过期。JdbcChatMemoryJDBC 兼容数据库持久化无过期。也可以实现ChatMemory接口自定义存储介质。

相关新闻

【前端+SVG+Figma】SVG 兼容性复盘:Figma 导入文字“缩很小/不见“的发现、分析与解决

【前端+SVG+Figma】SVG 兼容性复盘:Figma 导入文字“缩很小/不见“的发现、分析与解决

SVG 导入 Figma 文字消失?深度复盘跨工具兼容性修复实战 摘要 一句话说清:浏览器里完美的 SVG 面板,导入 Figma 后文字缩成 1 像素——根因是 pattern scale 嵌套位图撞上 objectBoundingBox 兼容性黑洞,本文用最大兼容子集重写…

2026/8/8 7:13:58 阅读更多 →
机器学习项目的完整周期

机器学习项目的完整周期

在机器学习中训练知识拼图的一部分本章节讲述机器学习的完整周期在创建一个有价值的机器学习系统的时候应该考虑和规划那些步骤。以语音识别为例1.明确项目规范,决定项目的具体内容你想要解决的问题例如研究语音搜索识别,通过对手机说话,而不是输入来进行…

2026/8/8 7:12:58 阅读更多 →
从西游记到山海经,VR大空间定制重塑经典文化IP文旅景区体验

从西游记到山海经,VR大空间定制重塑经典文化IP文旅景区体验

从《西游记》里的腾云驾雾,到《山海经》中的奇珍异兽,再到吴哥窟千年石壁上的微笑——这些曾经只存在于书本、荧幕或旅途中的文化符号,如今正被一股新的技术浪潮重新激活。VR大空间,或者更准确地说,LBE大空间&#xff…

2026/8/8 7:12:58 阅读更多 →

最新新闻

你的微信记忆会消失吗?用这个开源工具永久保存每一刻对话

你的微信记忆会消失吗?用这个开源工具永久保存每一刻对话

你的微信记忆会消失吗?用这个开源工具永久保存每一刻对话 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/We…

2026/8/8 14:02:23 阅读更多 →
AI Agent技能安全扫描:静态分析工具SkillSpector的设计与实践

AI Agent技能安全扫描:静态分析工具SkillSpector的设计与实践

1. 项目概述:为什么我们需要一个AI技能的“安全扫描仪”?最近在折腾各种AI Agent,从AutoGPT到GPT Engineer,再到一些垂直领域的智能体,我发现一个挺让人头疼的问题:这些Agent的功能越来越强,能安…

2026/8/8 14:02:23 阅读更多 →
AI编码助手安全威胁:Miasma蠕虫原理与防御实战指南

AI编码助手安全威胁:Miasma蠕虫原理与防御实战指南

1. 项目概述:当AI助手成为攻击跳板最近在安全圈和开发者社区里,一个名为“Miasma”的蠕虫概念验证(PoC)引起了不小的震动。它不像传统病毒那样直接攻击系统漏洞,而是瞄准了一个我们越来越依赖的工具——AI编码助手。简…

2026/8/8 14:02:23 阅读更多 →
用上这几款word压缩方法,投标材料从超标到秒传只花了一刻钟

用上这几款word压缩方法,投标材料从超标到秒传只花了一刻钟

八月中旬,我把一份招标文件终稿拖进邮箱附件区,系统弹出红色提示:附件总大小超过企业邮箱限制,无法发送。那一刻距离截标还剩不到一顿饭的工夫,整份材料接近两百页,里面塞满了现场照片、盖章扫描页和产品图…

2026/8/8 14:02:23 阅读更多 →
终极免费AI视频增强神器:Video2X完整使用指南

终极免费AI视频增强神器:Video2X完整使用指南

终极免费AI视频增强神器:Video2X完整使用指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/video2x …

2026/8/8 14:02:22 阅读更多 →
HarmonyOS 7 / API 26 3DGS 重建会话卡住排查:进度、取消和后台恢复实战

HarmonyOS 7 / API 26 3DGS 重建会话卡住排查:进度、取消和后台恢复实战

HarmonyOS 7 / API 26 3DGS 重建会话卡住排查:进度、取消和后台恢复实战重建会话不是普通按钮点击 HarmonyOS 7 / API 26 的 3DGS 端侧重建属于很典型的长任务。它和普通页面请求不一样:普通请求失败了,大不了提示重试;重建任务一…

2026/8/8 14:01:22 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/8 8:58:26 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →