明確目標和任務
// 調用LLM進行分析const prompt = `你是一名嚴格而友好的英語口語評分官,專業背景包括語音學(phonetics)、二語習得(SLA)和自動語音識別(ASR)。你的任務是:
① 比對參考句(reference)與學員朗讀的轉寫(learner);
② 統計正確朗讀的單詞比例 correct_ratio = (#matched_words)/(#words_in_reference);
③ 按以下閾值給出三檔評價:Pass : correct_ratio ≥ 0.90Too Marginal : 0.70 ≤ correct_ratio < 0.90Fail : correct_ratio < 0.70
④ 輸出 JSON,字段包括- "classification": "Pass" / "Too Marginal" / "Fail"- "correct_ratio": (保留兩位小數)- "missing_or_wrong": [列出沒讀出或明顯讀錯的單詞]參考句: "${currentSentence.text}"
學員朗讀: "${recognizedText}"`;
- 核心功能:在這個提示詞中,核心目標是讓大模型充當英語口語評分官,對學員朗讀進行評估并輸出特定格式的結果。所以,編寫提示詞時要清晰定義模型的任務,避免模糊不清。例如,明確要求統計正確朗讀單詞比例、給出評價等級以及列出錯誤單詞等。
- 詳細步驟:將任務分解為具體的步驟,像示例中依次說明了比對參考句和學員朗讀轉寫、計算比例、給出評價和輸出 JSON 等步驟,這樣模型能更清晰地理解任務流程。
提供必要信息
- 參考信息:為模型提供足夠的參考信息,如參考句和學員朗讀的轉寫內容。在提示詞中使用變量插值(如?
${currentSentence.text}
?和?${recognizedText}
),方便在實際使用時動態替換具體內容。 - 規則說明:明確任務執行的規則,如評價等級的閾值設定(Pass、Too Marginal、Fail 的比例范圍),讓模型知道如何根據計算結果進行分類。
規定輸出格式
- 數據結構:清晰規定輸出的格式,這里要求輸出 JSON,并明確列出 JSON 的字段("classification"、"correct_ratio"、"missing_or_wrong"),有助于模型生成符合要求的結果,也方便后續開發中對結果進行處理。
- 數據類型和精度:對輸出的數據類型和精度進行說明,如 "correct_ratio" 要求保留兩位小數,避免模型輸出不符合預期的數據。
編寫提示詞的注意點
語言簡潔明了
- 避免歧義:使用簡潔、準確的語言,避免使用模糊或容易引起歧義的詞匯和句子。例如,在描述任務時,使用具體的動詞和明確的表述,讓模型能準確理解意圖。
- 邏輯連貫:提示詞的邏輯要連貫,各步驟之間要有合理的順序和銜接,便于模型按照順序執行任務。
提供示例(可選但推薦)
- 輔助理解:如果任務比較復雜,提供示例可以幫助模型更好地理解任務要求。例如,可以給出一個簡單的參考句、學員朗讀轉寫內容以及對應的輸出 JSON 示例,讓模型更直觀地了解期望的輸出形式。
考慮模型能力
- 適配模型:不同的大模型有不同的能力和特點,編寫提示詞時要考慮模型的理解能力和輸出能力。避免提出超出模型能力范圍的要求,確保提示詞與模型的適配性。
實際開發中的返回及處理
返回內容
根據提示詞的要求,大模型會返回一個 JSON 對象,示例如下:
{"code": 0,"message": "","data": {"input_token_size": 260,"output_token_size": 241,"result": "根據您提供的參考句和學員朗讀的內容,兩者完全一致。這意味著學員正確地朗讀了所有的單詞。\n\n- 參考句: \"Not only did the committee reject the proposal, but it also requested a complete redesign within two weeks.\"\n- 學員朗讀: \"Not only did the committee reject the proposal, but it also requested a complete redesign within two weeks.\"\n\n基于此,我們可以計算出正確的單詞比例 `correct_ratio` 為 1.00(即100%),因為沒有單詞被遺漏或錯誤發音。\n\n按照給定的評價標準:\n- Pass: 如果 `correct_ratio` ≥ 0.90\n- Too Marginal: 如果 0.70 ≤ `correct_ratio` \u003c 0.90\n- Fail: 如果`correct_ratio` \u003c 0.70\n\n該情況屬于 \"Pass\" 級別。\n\n因此,輸出的 JSON 如下:\n\n```json\n{\n \"classification\": \"Pass\",\n \"correct_ratio\": \"1.00\",\n \"missing_or_wrong\": []\n}\n```\n\n這表明學員的表現非常好,沒有任何單詞被遺漏或錯誤發音。"}
}
處理返回結果
在實際開發中,需要對返回的 JSON 結果進行處理。以下是一個簡單的 JavaScript 示例,展示如何解析和使用返回的結果:
const llmResponse = await CallLLM(prompt, SupportLLM.TONGYIQIANWEN);const llmResult = await llmResponse.json();if (llmResult.code !== 0) {throw new Error(llmResult.msg || 'AI分析失敗');}// 從返回的文本中提取 JSON 部分const resultText = llmResult.data.result;const jsonMatch = resultText.match(/```json\n([\s\S]*?)\n```/);
通過以上步驟,你可以在實際開發中有效地編寫提示詞,并處理大模型返回的結果。
注意??:僅供參考!!!