Prompt` 和 `PromptTemplate` 的作用是什么?举例说明 `PromptTemplate` 动态生成提示词

在 Spring AI 中,PromptPromptTemplate 是构建有效 AI 交互的核心工具,其作用及示例如下:


1. Prompt 的作用

  • 封装输入:将用户问题、指令和上下文包装为结构化请求,作为 AiClient 的输入。
  • 包含元数据:可附加角色信息(如 SystemMessage 设定 AI 行为)、历史对话等。
  • 示例
    Prompt prompt = new Prompt("用一句话解释量子计算");
    

2. PromptTemplate 的作用

  • 动态生成提示词:通过模板引擎将变量注入预定义模板,生成最终 Prompt 对象。
  • 避免硬编码:解耦业务逻辑与提示文本,提升可维护性。
  • 标准化格式:确保提示词结构清晰(如包含指令、示例、约束)。

3. 示例:动态生成提示词

场景

根据用户选择的“编程语言”和“功能描述”,生成代码实现提示。

步骤
  1. 定义模板(使用 { } 占位符):

    String template = """
        你是一名资深{language}开发工程师。请根据以下功能描述,生成符合{language}最佳实践的代码:
        ##### 功能描述 #####
        {description}
        ##### 要求 #####
        1. 添加详细注释
        2. 使用高效实现
    """;
    
  2. 创建 PromptTemplate

    PromptTemplate promptTemplate = new PromptTemplate(template);
    
  3. 注入变量,生成 Prompt

    Map<String, Object> variables = new HashMap<>();
    variables.put("language", "Python");   // 动态传入语言
    variables.put("description", "读取CSV文件并计算某列的平均值"); // 动态功能
    
    Prompt dynamicPrompt = promptTemplate.create(variables);
    
  4. 调用 AI

    AiResponse response = aiClient.generate(dynamicPrompt);
    
生成的最终提示词
你是一名资深Python开发工程师。请根据以下功能描述,生成符合Python最佳实践的代码:
##### 功能描述 #####
读取CSV文件并计算某列的平均值
##### 要求 #####
1. 添加详细注释
2. 使用高效实现

✅ 关键考察点

概念 核心作用 生产价值
Prompt 封装 AI 输入(文本 + 元数据) 统一请求格式,传递上下文
PromptTemplate 动态生成提示词(变量替换) 避免硬编码,支持个性化请求,提升复用性
协作关系 PromptTemplate → 生成 Prompt → 输入 AiClient 实现提示词与业务逻辑解耦

进阶追问
“若需在模板中添加安全约束(如‘禁止生成暴力内容’),如何设计确保所有生成的提示词都包含此规则?”
期望答案:在系统消息层固定约束(如创建包含 SystemMessagePrompt 基类),或通过 AOP 统一追加安全指令。

你可能感兴趣的:(prompt,人工智能)