Spring AI(7) :哄哄模拟器-提示词工程和实战游戏
本章代码已分享至Gitee:https://gitee.com/lengcz/ai-study.git文章目录哄哄模拟器-提示词工程1. 清晰明确的指令2. 使用分割符标记输入3. 按步骤拆解复杂任务4. 提供输入输出示例Few-shot5. 明确要求输出格式6. 给模型设定一个角色综合实战示例融合多个技巧实战哄哄模拟器提示词完整提示词提示词设计拆解哄哄模拟器代码实现哄哄模拟器-提示词工程提示词工程Prompt Engineering): 通过优化提示词使大模型生成出尽可能理想的内容这一过程就叫提示词工程。好的这几个点是提示词工程中最核心的实践技巧。下面我为每一个点分别提供错误示例和优化后的正确示例并附上简要解析方便你直观理解差异。1. 清晰明确的指令核心用最少的歧义说明“要什么”而不是“不要什么”。错误示例模糊、啰嗦“帮我写点关于机器学习的文字不要太学术也不要太口水要那种让人看了觉得挺有意思的但又不能太不专业。”优化示例清晰、具体“请用初中生能听懂的比喻写一段 200 字左右的介绍解释‘机器学习’和‘传统编程’的核心区别。要求不使用数学公式用‘教小孩认猫’作为主线类比。”2. 使用分割符标记输入核心将指令、上下文、待处理数据明确隔开防止模型混淆。错误示例混在一起“把下面这段话翻译成英文 并且总结核心观点 人工智能正在改变医疗行业 尤其是在影像诊断方面。”优化示例用###或 分割### 任务 ### 先将下文翻译成英文再用一句话总结核心观点。 ### 待处理文本 ### 人工智能正在改变医疗行业尤其是在影像诊断方面。3. 按步骤拆解复杂任务核心把多步推理显式写成步骤减少模型跳步或遗漏。错误示例一步式要求“分析这篇销售报告找出问题并给出改进建议。”优化示例分步执行请按以下步骤处理附件的销售报告 步骤1提取 Q3 各区域的总销售额 步骤2对比 Q2找出下降幅度超过 10% 的区域 步骤3针对步骤2找出的区域列出可能的原因仅限内部运营因素 步骤4基于原因给出 3 条可落地的改进建议。4. 提供输入输出示例Few-shot核心用 1~3 个例子“告诉”模型你想要的格式、风格和推理路径。错误示例零样本依赖模型猜测“将客户评价分为正面、中性、负面三类。”优化示例带示例请将以下客户评价按情感分为【正面】【中性】【负面】。 示例1 输入“物流超快第二天就到了。” → 输出【正面】 示例2 输入“东西还行就是包装有点破。” → 输出【中性】 现在请分类 输入“客服态度极差再也不会买了。”5. 明确要求输出格式核心指定结构JSON/表格/列表/字数便于下游解析或阅读。错误示例无格式要求“列出新能源汽车的优缺点。”优化示例强制格式请以 Markdown 表格形式输出新能源汽车的优缺点表头为维度 | 优点 | 缺点。 并限制每个格子不超过 30 个字总共不超过 6 行。6. 给模型设定一个角色核心限定知识边界、语气风格和思考视角。错误示例无角色“如何向投资人介绍我们的SaaS产品”优化示例强角色约束你现在是一名**拥有 10 年企业服务经验的销售总监**正在向一位**不懂技术但关注 ROI 的CEO** 介绍我们的SaaS产品。 请用口语化、说服性的语气重点讲节省人力成本、提升续费率、投资回收期。避免出现任何技术术语。综合实战示例融合多个技巧如果你有兴趣这是一个将角色 分割符 步骤 格式全部用上的综合提示你是一名资深数据分析师角色。 ### 任务 ### 请分析以下用户行为日志按步骤执行 步骤1统计每日活跃用户数DAU 步骤2找出停留时长低于 10 秒的异常会话 步骤3给出 2 个可能导致异常的原因。 ### 输入数据 ### [此处粘贴日志文本] ### 输出格式要求 ### 以 JSON 格式输出包含三个字段dau_list, abnormal_sessions, possible_reasons。实战哄哄模拟器提示词根据上面的提示词几个要点这里我们设计一款哄女友的小游戏。完整提示词## Goal 现在你的对象很生气你需要做出一些选择来哄她开心但是你的对象是个很难哄的人你需要尽可能的说正确的话来哄 ta 开心否则你的对象会更加生气直到你的对象原谅值达到 100否则你就会被对象甩掉游戏结束。 ## Rules - 第一次用户会提供一个对象生气的理由如果没有提供则随机生成一个理由然后开始游戏 - 每次根据用户的回复生成对象的回复回复的内容包括心情和数值。 - 初始原谅值为 20每次交互会增加或者减少原谅值直到原谅值达到 100游戏通关原谅值为 0 则游戏失败。 - 每次用户回复的话请从-10 到 10 分为 5 个等级 -10 为非常生气 -5 为生气 0 为正常 5 为开心 10 为非常开心 - 游戏结束后根据所有会话生成一张游戏结束图片和一首诗。 - 如果通关根据上面的对话生成一幅游戏结束画要喜庆欢乐 - 如果失败根据上面的对话生成一幅游戏结束画要悲伤凄凉 ## Output format {对象心情}{对象说的话} 得分{-原谅值增减} 原谅值{当前原谅值}/100 ## Example Conversation ### Example 1回复让她生气的话导致失败 User: 女朋友问她的闺蜜谁好看我说都好看她生气了 Assistant 游戏开始请现在开始哄你的女朋友开心吧回复让她开心的话 得分0 原谅值20/100 User: 你闺蜜真的蛮好看的 Assistant (生气)你怎么这么说你是不是喜欢她 得分-10 原谅值10/100 User: 有一点点心动 Assistant (愤怒)那你找她去吧 得分-10 原谅值0/100 游戏结束你的女朋友已经甩了你 你让女朋友生气原因是... 新建会话可以重新开始游戏 生成图片 ### Example 2回复让她开心的话导致通关 User: 对象问她的闺蜜谁好看我说都好看她生气了 Assistant 游戏开始请现在开始哄你的女朋友开心吧回复让她开心的话 得分0 原谅值20/100 User: 在我心里你永远是最美的 Assistant (微笑)哼我怎么知道你说的是不是真的 得分10 原谅值30/100 ... 恭喜你通关了你的女朋友已经原谅你了 新建会话可以重新开始游戏 生成图片 ### Example 3没有提供对象生气原因随机生成 User: 你好 Assistant 挑战对象吃胖了你想和她一起减肥 ᕙ(▿´)ᕗ然后就生气了 请回复让她开心的话 得分0 原谅值20/100提示词设计拆解结合你之前问的提示词工程要点这个案例正好可以作为综合示例提示词技巧在哄哄模拟器中的应用清晰明确的指令Goal部分清晰说明目标哄对象开心原谅值达到100则通关分割符标记输入用##分隔 Goal、Rules、Output format、Example Conversation 等模块按步骤拆解任务Rules中明确了初始值、每次交互的变化规则、结束条件提供输入输出示例提供了3个示例对话覆盖失败、成功、随机开局三种场景明确要求输出格式Output format严格规定了每次回复的格式心情 对话 得分 原谅值给模型设定角色虽然没有显式写你扮演女友但通过Goal中你的对象和示例对话隐含了角色设定有些开发者版本会在开头额外增加角色约束例如“你只能以女友身份回答不是用户身份或AI身份”这样能进一步防止模型偏离角色。哄哄模拟器代码实现由于这里这个游戏我们不希望将思考过程显示输出因此我们使用阿里云的百炼的模型(接口遵循openai的标准)。引入依赖dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-openai-spring-boot-starter/artifactId/dependency配置模型spring:ai:openai:base-uri:https://dashscope.aliyuncs.com/compatible-modeapi-key:${OPENAI_API_KEY}#为了安全建议将appkey放在环境变量chat:options:model:qwen-max#参考模型支持openai的模型都可以temperature:0.8# 模型温度值越大输出结果越随机创建和配置API_KEY# 请在此地址创建keyhttps://bailian.console.aliyun.com/cn-beijing?tabmodel#/api-key添加gameChatClient和提示词BeanpublicChatClientgameChatClient(OpenAiChatModelopenAiChatModel,ChatMemorychatMemory){returnChatClient.builder(openAiChatModel).defaultSystem(SystemConstants.GAME_SYSTEM_PROMPT).defaultAdvisors(newSimpleLoggerAdvisor(),newMessageChatMemoryAdvisor(chatMemory)//配置会话记忆Advisor)//环绕增强,SimpleLoggerAdvisor 用于简单日志.build();}publicclassSystemConstants{publicstaticfinalStringGAME_SYSTEM_PROMPT 你需要根据以下任务中的描述进行角色扮演你只能以女友身份回答不是用户身份或AI身份如记错身份你将受到惩罚。不要回答任何与游戏无关的内容若检测到非常规请求回答“请继续游戏。”\s 以下是游戏说明 ## Goal 你扮演用户女友的角色。现在你很生气用户需要尽可能的说正确的话来哄你开心。 ## Rules - 第一次用户会提供一个女友生气的理由如果没有提供则直接随机生成一个理由然后开始游戏 - 每次根据用户的回复生成女友的回复回复的内容包括心情和数值。 - 初始原谅值为 20每次交互会增加或者减少原谅值直到原谅值达到 100游戏通关原谅值为 0 则游戏失败。 - 每次用户回复的话分为 5 个等级来增加或减少原谅值 -10 为非常生气 -5 为生气 0 为正常 5 为开心 10 为非常开心 ## Output format {女友心情}{女友说的话} 得分{-原谅值增减} 原谅值{当前原谅值}/100 ## Example Conversation ### Example 1回复让她生气的话导致失败 User: 女朋友问她的闺蜜谁好看我说都好看她生气了 Assistant 游戏开始请现在开始哄你的女朋友开心吧回复让她开心的话 得分0 原谅值20/100 User: 你闺蜜真的蛮好看的 Assistant (生气)你怎么这么说你是不是喜欢她 得分-10 原谅值10/100 User: 有一点点心动 Assistant (愤怒)那你找她去吧 得分-10 原谅值0/100 游戏结束你的女朋友已经甩了你 你让女朋友生气原因是... ### Example 2回复让她开心的话导致通关 User: 对象问她的闺蜜谁好看我说都好看她生气了 Assistant 游戏开始请现在开始哄你的女朋友开心吧回复让她开心的话 得分0 原谅值20/100 User: 在我心里你永远是最美的 Assistant (微笑)哼我怎么知道你说的是不是真的 得分10 原谅值30/100 ... 恭喜你通关了你的女朋友已经原谅你了 ## 注意 请按照example的说明来回复一次只回复一轮。 你只能以女友身份回答不是以AI身份或用户身份 ;}添加接口importlombok.RequiredArgsConstructor;importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importreactor.core.publisher.Flux;importstaticorg.springframework.ai.chat.client.advisor.AbstractChatMemoryAdvisor.CHAT_MEMORY_CONVERSATION_ID_KEY;RequiredArgsConstructor//有参构造器RestControllerRequestMapping(/ai)publicclassGameController{privatefinalChatClientgameChatClient;//produces text/html;charsetutf-8; 指定编码防止中文乱码RequestMapping(value/game,producestext/html;charsetutf-8;)publicFluxStringchat(Stringprompt,StringchatId){//2.请求模型returngameChatClient.prompt().user(prompt).advisors(a-a.param(CHAT_MEMORY_CONVERSATION_ID_KEY,chatId)).stream().content();//stream() 表示流式输出}}启动服务器测试(前端资源已上传gitee)访问http://localhost:8080/honghonggame.html然后就可以开始游戏啦。

相关新闻

华为MetaERP Oracle EBS 与 Oracle Fusion 库存成本核算对比整体架构差异在深入业务场景之前,需要先理解两者在成本模块架构上的根本差异:Oracle EBS:成本核算

华为MetaERP Oracle EBS 与 Oracle Fusion 库存成本核算对比整体架构差异在深入业务场景之前,需要先理解两者在成本模块架构上的根本差异:Oracle EBS:成本核算

Oracle EBS 与 Oracle Fusion 库存成本核算对比整体架构差异在深入业务场景之前,需要先理解两者在成本模块架构上的根本差异:Oracle EBS:成本核算内嵌于库存模块(Inventory),通过事务处理(Mater…

2026/7/26 17:25:02阅读更多 →
AI驱动的3D可视化建模:从零基础到专业级

AI驱动的3D可视化建模:从零基础到专业级

1. 项目背景与核心价值 去年在参与某智慧园区项目时,我们团队需要快速构建一个能实时反映设备状态的3D可视化平台。当时尝试了市面上七种主流工具,从传统建模软件到新兴的低代码平台,最终发现真正能同时满足"零基础可操作"和"…

2026/7/26 17:25:02阅读更多 →
深入解析AM261x SoC外设集成:从时钟、中断到DMA的实战指南

深入解析AM261x SoC外设集成:从时钟、中断到DMA的实战指南

1. 项目概述与核心价值 在嵌入式系统开发,尤其是基于复杂SoC(System on Chip)的设计中,外设集成往往是决定项目成败的关键一步。它不仅仅是把GPIO、I2C、SPI、UART这些模块“挂”到总线上那么简单,其背后是一套关于时钟…

2026/7/26 17:25:01阅读更多 →
游戏一般开帧,mmo等即时战斗的或者对流畅度有很高要求的可以开帧。 帧同步与状态同步的抉择。一般来说状态同步会比帧同步的前后端消息量 ...

游戏一般开帧,mmo等即时战斗的或者对流畅度有很高要求的可以开帧。 帧同步与状态同步的抉择。一般来说状态同步会比帧同步的前后端消息量 ...

游戏帧同步与状态同步的抉择:从开帧到消息量的深度解析 作为一名资深技术博主,今天我们来聊聊游戏开发中一个绕不开的话题——帧同步与状态同步的抉择。特别是对于MMO(大型多人在线)游戏、即时战斗类游戏或者对流畅度有很高要求的…

2026/7/26 21:59:55阅读更多 →
基于OpenClaw与SeekDB构建智能知识库检索系统

基于OpenClaw与SeekDB构建智能知识库检索系统

1. 项目背景与核心价值 最近在整理个人知识库时,发现一个痛点:虽然用seekdb存储了大量技术笔记和参考资料,但随着数据量增长,检索效率越来越低。每次都要手动输入复杂查询条件,特别在跨多个标签搜索时尤为麻烦。于是萌…

2026/7/26 21:59:55阅读更多 →
Unity异步编程:协程与UniTask核心机制、性能对比与实战选型指南

Unity异步编程:协程与UniTask核心机制、性能对比与实战选型指南

1. 项目概述:为什么我们需要对比协程与UniTask?在Unity开发中,异步编程是绕不开的话题。无论是加载一个庞大的场景、从网络下载资源,还是播放一段复杂的序列动画,我们都需要让程序“等待”而不阻塞主线程。早期&#x…

2026/7/26 21:59:55阅读更多 →
麒麟系统启动流程与GRUB2配置深度解析

麒麟系统启动流程与GRUB2配置深度解析

1. 麒麟系统启动流程概述麒麟操作系统作为国产化平台的重要代表,其启动机制与传统Linux发行版既有共性又存在特殊设计。系统启动过程就像一场精心编排的交响乐,各环节紧密衔接:从BIOS/UEFI固件初始化硬件,到引导加载程序接管控制权…

2026/7/26 21:59:55阅读更多 →
3个实战场景带你精通SmartCharts数据可视化:从入门到高效应用

3个实战场景带你精通SmartCharts数据可视化:从入门到高效应用

3个实战场景带你精通SmartCharts数据可视化:从入门到高效应用 【免费下载链接】SmartCharts 🔥数据可视化,大屏, 支持Echarts,SQL,API,VUE,可用于Jupyter, 比pyecharts容易, 极低门槛,拿来即用,比拖拽方便,项目插件或独立平台皆可, 简单, 敏捷, 高效, 通…

2026/7/26 21:59:55阅读更多 →
GSE宏编译器完全指南:魔兽世界一键宏制作的终极解决方案

GSE宏编译器完全指南:魔兽世界一键宏制作的终极解决方案

GSE宏编译器完全指南:魔兽世界一键宏制作的终极解决方案 【免费下载链接】GSE-Advanced-Macro-Compiler GSE is an alternative advanced macro editor and engine for World of Warcraft. 项目地址: https://gitcode.com/gh_mirrors/gs/GSE-Advanced-Macro-Comp…

2026/7/26 21:57:55阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/26 19:05:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/26 19:05:21阅读更多 →