在 Spring AI 中,Prompt
和 PromptTemplate
是构建有效 AI 交互的核心工具,其作用及示例如下:
Prompt
的作用AiClient
的输入。SystemMessage
设定 AI 行为)、历史对话等。Prompt prompt = new Prompt("用一句话解释量子计算");
PromptTemplate
的作用Prompt
对象。根据用户选择的“编程语言”和“功能描述”,生成代码实现提示。
定义模板(使用 { }
占位符):
String template = """
你是一名资深{language}开发工程师。请根据以下功能描述,生成符合{language}最佳实践的代码:
##### 功能描述 #####
{description}
##### 要求 #####
1. 添加详细注释
2. 使用高效实现
""";
创建 PromptTemplate
:
PromptTemplate promptTemplate = new PromptTemplate(template);
注入变量,生成 Prompt
:
Map<String, Object> variables = new HashMap<>();
variables.put("language", "Python"); // 动态传入语言
variables.put("description", "读取CSV文件并计算某列的平均值"); // 动态功能
Prompt dynamicPrompt = promptTemplate.create(variables);
调用 AI:
AiResponse response = aiClient.generate(dynamicPrompt);
你是一名资深Python开发工程师。请根据以下功能描述,生成符合Python最佳实践的代码:
##### 功能描述 #####
读取CSV文件并计算某列的平均值
##### 要求 #####
1. 添加详细注释
2. 使用高效实现
概念 | 核心作用 | 生产价值 |
---|---|---|
Prompt |
封装 AI 输入(文本 + 元数据) | 统一请求格式,传递上下文 |
PromptTemplate |
动态生成提示词(变量替换) | 避免硬编码,支持个性化请求,提升复用性 |
协作关系 | PromptTemplate → 生成 Prompt → 输入 AiClient |
实现提示词与业务逻辑解耦 |
进阶追问:
“若需在模板中添加安全约束(如‘禁止生成暴力内容’),如何设计确保所有生成的提示词都包含此规则?”
期望答案:在系统消息层固定约束(如创建包含SystemMessage
的Prompt
基类),或通过 AOP 统一追加安全指令。