更新时间:2024-10-16 GMT+08:00
Prompt(提示词模板)
提示词模板模块提供模板格式化、自定义配置、few-shot管理功能。
- 模板格式化
import com.huaweicloud.pangu.dev.sdk.template.KV; import com.huaweicloud.pangu.dev.sdk.template.PromptTemplate; import org.junit.jupiter.api.Assertions; import java.util.HashMap; // 初始化Prompt模板对象 PromptTemplate promptTemplate = new PromptTemplate("Tell me a {{adjective}} joke about {{content}}"); // 支持Map<String, Object>格式匹配替换Prompt模板 String format1 = promptTemplate.format(new HashMap<String, Object>() { { put("adjective", "funny"); put("content", "chickens"); } }); Assertions.assertEquals("Tell me a funny joke about chickens", format1); // 支持KV格式匹配替换Prompt模板 String format2 = promptTemplate.format(KV.of("adjective", "funny"), KV.of("content", "chickens")); Assertions.assertEquals("Tell me a funny joke about chickens", format2);
- few-shot
// 构造Prompt模板 interface Antonyms { String FIND_ANTONYMS = "给定一个单词:{{word}},返回一个反义词:{{antonym}}"; }
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; // 构造示例 public interface ExampleSample { interface Antonyms { List<Map<String, Object>> antonyms = new ArrayList<Map<String, Object>>() { { add(new HashMap<String, Object>() { { put("word", "short"); put("antonym", "long"); } }); add(new HashMap<String, Object>() { { put("word", "energetic"); put("antonym", "lethargic"); } }); add(new HashMap<String, Object>() { { put("word", "windy"); put("antonym", "calm"); } }); } }; } }
import com.huaweicloud.pangu.dev.sdk.prompts.exampleselector.LengthBasedES; import com.huaweicloud.pangu.dev.sdk.template.PromptTemplate; import com.huaweicloud.pangu.dev.sdk.prompts.FewShotPromptTemplate; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; // 构造prompt模板 PromptTemplate promptTemplate = new PromptTemplate(Antonyms.FIND_ANTONYMS); // 构造fewshotPrompt模板: // 基于长度策略(长度限制50) // 传入prompt的开头 "参考以下示例,给出给定单词的反义词:" // 传入分隔符 "\n\n" // 传入prompt的结尾 "给定一个单词:{{word}},返回一个反义词:" FewShotPromptTemplate fewShotPromptTemplate = new FewShotPromptTemplate(new LengthBasedES(ExampleSample.Antonyms.antonyms, promptTemplate, 50), promptTemplate, "参考以下示例,给出给定单词的反义词:", "给定一个单词:{{word}},返回一个反义词:", "\n\n"); // 输入 Map<String, Object> inputs = new HashMap<String, Object>() { { put("word", "hard"); } }; // 根据输入匹配替换fewShotPromptTemplate,得到最终fewShotPrompt String prompt = fewShotPromptTemplate.format(inputs);
- 自定义prompt
// 按约定的格式准备prompt文件; // 文档结构和文件名参考提供的系统预置prompts文件 文档结构示例: …… prompts -- default -- documents -- stuff.pt
// 配置sdk配置项,指定prompt文件根路径,以 /home 目录下为例 sdk.prompt.path=/home/prompts/default
父主题: Java SDK