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