超實用!SpringAI提示詞的四種神級用法
提示詞(Prompt)是輸入給大模型(LLM)的文本指令,用于明確地告訴大模型你想要解決的問題或完成的任務,也是大語言模型理解用戶需求并生成準確答案的基礎。因此 prompt 使用的好壞,直接決定了大模型生成結果的質量(是否符合預期)。
那問題來了,在 Spring AI/Spring AI Alibaba 如何用好提示詞?以及提示詞的使用方式有哪些呢?接下來本文一起來盤點一下。
1.簡單提示詞使用
最簡單的設置固定系統提示詞和用戶提示詞的用法如下:
@RequestMapping("/chat")
public String chat(String msg) {
String result = chatClient.prompt()
.system("你是一個問答助手") // 設置系統提示詞
.user(msg) // 設置用戶提示詞
.call().content();
System.out.println("結果:" + result);
return result;
}
2.動態提示詞
所謂的動態提示詞指的是需要進行動態參數替換的提示詞,它的基本使用如下:
@RequestMapping("/chat")
public String chat(String topic) {
PromptTemplate promptTemplate =
new PromptTemplate("你是一個{role},講一個關于{topic}的故事");
Prompt prompt = promptTemplate.create(Map.of("role", "講故事的助手",
"topic", topic));
return chatModel.call(prompt).getResult().getOutput().getText();
}
3.從文件中讀取動態提示詞
動態提示詞如果比較短,我們可以像上面一樣寫到代碼里面,如果比較長,我們可以把它單獨放的某個文件模版中進行讀取使用,具體實現如下:
// 從文件中讀取提示詞
@Value("classpath:type-system-prompt-txt")
private Resource systemPrompt;
@RequestMapping("/chat")
public String chat(String msg) {
return chatClient.prompt()
.system(systemPrompt)
.user(msg)
.call()
.content();
}
}
4.Lambda表達式提示詞
當提示詞比較短的時候,除了可以使用 PromptTemplate 設置提示詞之外,我們還可以使用 Lambda 表達式來實現動態提示詞的設置,具體使用如下:
@RequestMapping("/chat")
public User chat(String name) {
return chatClient.prompt()
.user(msg -> msg.text("我叫{name},今年18歲,愛好打羽毛球。")
.param("name", name))
.call()
.entity(User.class); // 結果化輸出
}
小結
提示詞是用戶和大模型交互的直接手段,所以在程序中用好提示詞是至關重要的。本文提供了 4 種提示詞的使用方式,開發者可以根據具體的業務場景,選擇合適的提示詞使用方式來完成 AI 應用開發。一起實操起來吧~