Spring AI 从入门到精通-Prompt 工程

发布时间:2026/6/8 0:42:23

Spring AI 从入门到精通-Prompt 工程 5. Prompt 工程不是玄学是手艺5.1 什么是 PromptPrompt 是你发给 AI 的指令包。它不只是一句问题而是由多个 Message 组成的结构化数据PromptSystemMessage系统指令你是谁、怎么回答UserMessage用户输入实际问题AssistantMessage历史回答之前的对话ToolMessage工具结果函数调用返回5.2 SystemMessage给 AI 定人设StringreplychatClient.prompt().system( 你是一个经验丰富的 Java 面试官。 规则 1. 每次只问一个问题 2. 根据回答的深度追问 3. 不要直接给答案引导思考 4. 回答用中文 ).user(我想练习 Java 并发相关的面试题).call().content();5.3 模板变量动态 Prompt// 基本用法StringreplychatClient.prompt().user(u-u.text(列出 {count} 部由 {composer} 配乐的电影).param(count,5).param(composer,久石让)).call().content();// 多个参数Stringreply2chatClient.prompt().user(u-u.text(比较 {lang1} 和 {lang2} 在 {aspect} 方面的差异).param(lang1,Java).param(lang2,Kotlin).param(aspect,协程支持)).call().content();底层原理ChatClient内部用PromptTemplateStTemplateRenderer基于 StringTemplate 引擎做模板替换。默认用{}作为占位符如果你想在 Prompt 里放 JSON可以换分隔符StringreplychatClient.prompt().user(u-u.text(翻译下面的话text).param(text,Hello World)).templateRenderer(StTemplateRenderer.builder().startDelimiterToken().endDelimiterToken().build()).call().content();5.4 一个 Prompt 模板的实战案例假设你要做一个根据用户输入生成 SQL的功能ServicepublicclassSqlGenerator{privatefinalChatClientchatClient;publicSqlGenerator(ChatClient.Builderbuilder){this.chatClientbuilder.defaultSystem( 你是一个 SQL 生成器。根据用户的自然语言描述生成 SQL 语句。 规则 1. 只输出 SQL不要解释 2. 表名是 users(id, name, email, age, city, created_at) 3. 使用标准 SQL 语法 4. 默认 LIMIT 100 ).defaultOptions(OpenAiChatOptions.builder().temperature(0.0)// SQL 需要精确不要创意.build()).build();}publicStringgenerateSql(StringnaturalLanguage){returnchatClient.prompt().user(naturalLanguage).call().content();}}// 使用StringsqlsqlGenerator.generateSql(找出北京所有年龄大于 25 岁的用户按注册时间倒序);// 输出SELECT * FROM users WHERE city 北京 AND age 25 ORDER BY created_at DESC LIMIT 1005.5 Prompt 设计原则Head First 精华版说人话说清楚。不要模棱两可。列出 5 个比列一些好。给角色。你是一个 XX 专家能让 AI 切换知识库。给规则。明确告诉 AI 什么能做、什么不能做。给例子。Few-shot prompting 是提升质量的最快方式。给格式。如果期望 JSON就明确说输出 JSON不要有其他内容。分步骤。复杂任务分解成首先…然后…最后…。

相关新闻