Prompt 提示词模板
This content is not available in your language yet.
Feat AI 的 Prompt 提示词模板功能提供了一种灵活的方式来构建和管理 AI 模型的提示词。通过使用模板,您可以创建可重用的提示词结构,并在运行时动态填充参数。
Prompt 类
Section titled “Prompt 类”Prompt 类是提示词模板的核心,用于构建和管理 AI 模型的提示词模板。它支持参数化模板,可以在运行时替换模板中的占位符。
主要特性:
- 支持
{{parameter}}格式的参数占位符 - 可以根据参数映射构建最终的提示词
- 提供便捷的方法来判断模板是否包含参数
PromptTemplate 类
Section titled “PromptTemplate 类”PromptTemplate 类预定义了一些常用的提示词模板,可以直接使用或作为参考来创建自己的模板。
预定义的模板包括:
MAVEN_PROJECT_MERMAID: Maven 项目 Mermaid 图表提示词模板WECHAT_EDITOR: 微信公众号文章编辑器提示词模板PROJECT_CODER: 项目代码生成器提示词模板PROJECT_DOCUMENT_EDITOR: 项目文档编辑器提示词模板
创建简单的提示词模板
Section titled “创建简单的提示词模板”要创建一个简单的提示词模板,可以直接实例化 Prompt 类:
import tech.smartboot.feat.ai.chat.prompt.Prompt;
// 创建一个简单的提示词模板Prompt simplePrompt = new Prompt("你好,{{name}}!今天过得怎么样?");
// 使用参数构建最终提示词Map<String, String> params = new HashMap<>();params.put("name", "张三");String finalPrompt = simplePrompt.prompt(params);System.out.println(finalPrompt); // 输出: 你好,张三!今天过得怎么样?使用预定义的提示词模板
Section titled “使用预定义的提示词模板”Feat AI 提供了一些预定义的提示词模板,可以直接使用:
import tech.smartboot.feat.ai.chat.prompt.PromptTemplate;
// 使用预定义的微信公众号文章编辑器模板Prompt wechatPrompt = PromptTemplate.WECHAT_EDITOR;
// 构建参数Map<String, String> params = new HashMap<>();params.put("topic", "开源项目介绍");params.put("reference", "这是一个优秀的开源项目...");
// 生成最终提示词String finalPrompt = wechatPrompt.prompt(params);在提示词模板中,使用 {{parameter_name}} 的语法来定义参数占位符:
Prompt prompt = new Prompt("请为 {{product}} 产品撰写一份 {{type}} 类型的营销文案。");Prompt 类定义了一个特殊参数名称 CONTENT_PARAM_NAME(值为 “content”),当模板中没有其他参数时会自动使用:
// 没有参数占位符的模板Prompt prompt = new Prompt("请总结以下内容:");
// 在使用时会自动添加 \r\nUser: 前缀Map<String, String> params = new HashMap<>();params.put(Prompt.CONTENT_PARAM_NAME, "这是需要总结的内容...");String finalPrompt = prompt.prompt(params);// 结果: "请总结以下内容:\r\nUser:这是需要总结的内容..."预定义模板详解
Section titled “预定义模板详解”Maven 项目 Mermaid 图表模板
Section titled “Maven 项目 Mermaid 图表模板”该模板用于根据 Maven 项目文件生成架构图:
Prompt mavenPrompt = PromptTemplate.MAVEN_PROJECT_MERMAID;模板内容:
[任务目标]作为资深Java架构师,请严格根据文件内容分析项目依赖,并输出架构图
[文件内容]---BEGIN INPUT---{{file_list}}---END INPUT---
[输出规范]1. 必须返回符合 mermaid 要求的架构图描述2. mermaid 中核心模块搭配简短的中文描述,并标注更突出的显示样式3. 简化或者弱化单元测试模块微信公众号文章编辑器模板
Section titled “微信公众号文章编辑器模板”该模板用于生成微信公众号文章:
Prompt wechatPrompt = PromptTemplate.WECHAT_EDITOR;该模板包含详细的写作规范,引导 AI 生成符合微信推荐机制的文章。
项目代码生成器模板
Section titled “项目代码生成器模板”该模板用于根据需求生成代码:
Prompt coderPrompt = PromptTemplate.PROJECT_CODER;模板内容:
[任务目标]作为资深Java架构师,请严格根据参考源代码的设计,理解现有实现。并根据用户的需求描述,完成相应的代码实现。
[需求描述]---BEGIN INPUT---{{input}}---END INPUT---
[参考源代码]---BEGIN INPUT---{{reference}}---END INPUT---
[输出规范]1. 确保语法的准确性和代码的完整性。项目文档编辑器模板
Section titled “项目文档编辑器模板”该模板用于生成项目文档:
Prompt docPrompt = PromptTemplate.PROJECT_DOCUMENT_EDITOR;实际应用示例
Section titled “实际应用示例”使用 ChatModel 与 Prompt 模板结合
Section titled “使用 ChatModel 与 Prompt 模板结合”import tech.smartboot.feat.ai.FeatAI;import tech.smartboot.feat.ai.chat.ChatModel;import tech.smartboot.feat.ai.chat.ChatModelVendor;import tech.smartboot.feat.ai.chat.prompt.Prompt;import tech.smartboot.feat.ai.chat.prompt.PromptTemplate;
public class PromptDemo { public static void main(String[] args) { // 初始化 ChatModel ChatModel chatModel = FeatAI.chatModel(opts -> { opts.model(ChatModelVendor.GiteeAI.Qwen2_5_72B_Instruct) .system("你是一个专业的技术文档撰写专家。"); });
// 创建自定义提示词模板 Prompt prompt = new Prompt("请为 {{project}} 项目编写一份技术文档,涵盖以下要点:{{points}}");
// 使用模板发送请求 chatModel.chat(prompt, params -> { params.put("project", "Feat AI"); params.put("points", "1. 项目简介 2. 核心功能 3. 使用示例 4. API说明"); }, responseMessage -> { System.out.println("生成的文档:\n" + responseMessage.getContent()); }); }}流式响应与 Prompt 模板结合
Section titled “流式响应与 Prompt 模板结合”chatModel.chatStream(prompt, params -> { params.put("topic", "人工智能发展趋势"); params.put("reference", "近年来,人工智能技术发展迅速...");}, new StreamResponseCallback() { @Override public void onStreamResponse(String content) { System.out.print(content); }
@Override public void onCompletion(ResponseMessage responseMessage) { System.out.println("\n文档生成完成!"); }
@Override public void onFailure(Throwable throwable) { System.err.println("生成失败: " + throwable.getMessage()); }});
graph TD
A[创建 Prompt 模板] --> B[定义参数占位符]
B --> C[实例化 Prompt]
C --> D[准备参数映射]
D --> E[构建最终提示词]
E --> F[传递给 ChatModel]
F --> G[发送 AI 请求]
G --> H[接收响应]
1. 模板设计原则
Section titled “1. 模板设计原则”- 保持模板简洁明了,避免过于复杂的嵌套
- 使用有意义的参数名称,便于理解和维护
- 在模板中包含清晰的指令,引导 AI 生成期望的输出
2. 参数管理
Section titled “2. 参数管理”// 推荐:使用专门的方法来管理参数public Map<String, String> buildWechatArticleParams(String topic, String reference) { Map<String, String> params = new HashMap<>(); params.put("topic", topic); params.put("reference", reference); // 可以添加更多参数 return params;}3. 错误处理
Section titled “3. 错误处理”try { String finalPrompt = prompt.prompt(params); // 使用 finalPrompt 发送请求} catch (Exception e) { System.err.println("提示词构建失败: " + e.getMessage()); // 使用备用方案或默认提示词}4. 模板复用
Section titled “4. 模板复用”// 将常用模板定义为静态常量public class CustomPromptTemplates { public static final Prompt TECH_BLOG_POST = new Prompt( "请撰写一篇关于 {{technology}} 的技术博客文章," + "目标读者是 {{audience}}。文章应包括:{{sections}}" );
public static final Prompt CODE_REVIEW = new Prompt( "请对以下 {{language}} 代码进行审查," + "识别潜在的问题并提出改进建议:\n{{code}}" );}Feat AI 的 Prompt 提示词模板功能为构建和管理 AI 提示词提供了强大而灵活的工具。通过使用参数化模板和预定义模板,开发者可以:
- 提高提示词的可重用性和维护性
- 简化动态提示词的构建过程
- 利用预定义模板快速启动项目
- 更好地控制 AI 模型的输出格式和内容
通过合理使用这些功能,您可以显著提升与 AI 模型交互的效率和质量。