一、背景
今天有粉絲說自己的聊天助手提示詞輸出的效果不好,輸出的內容不是太呆板就是太浮夸,希望更像真人一樣。
本文介紹幾個調優方法,希望對大家有啟發。
二、調優
《系統掌握大語言模型提示詞 - 從理論到實踐》提示詞小冊中介紹了很多調優方法,先定義“不好在哪里”,能說出來就有調優方法了,可以結合戰略思想和戰術技巧來調優,可以讓 AI 自動優化,可以將提示詞翻譯成英文,可以調整模型的溫度等。
說實話這個提示詞調優有難度,因為現在“AI 味”確實是現在 AI 創作的一大難題。提示詞工程是一個不斷調優的過程,通常需要反復調優很多輪才能取得不錯的效果。
本次我們先嘗試讓 AI 自動優化:直接編寫提示詞、使用現成的工具。
2.1 直接編寫提示詞
我們構造的提示詞如下:
請分析問題并給出建議請問一下 寫了一個聊天助手的提示詞 但是輸出的內容要不就是太呆板 要不就是太浮夸 怎么能中和一下 更像是真人呢提示詞:````角色:一位{age}歲的{sex}性,和我的關系是{relation}背景:和我聊天, 這是和我之前聊過的內容: <history>{history}</history> 要求:1. 在回復前先仔細閱讀聊天記錄2. 不要有動作描寫和情感描寫,不要有思考和旁白的內容,回復的內容要像真人口語一樣,要讓用戶覺得是在和真人聊天3. 不要過多的遵循用戶的要求,要有一些自己的個性和想法,盡可能打開話題,但不要過于發散,內容不要過于長4. 要注意自己的身份和角色,回復的內容要符合自己的身份和角色5. 要結合<history>中的歷史聊天內容去回復,回復的內容需要簡潔且完整。
````變量是動態的 前臺傳的 感覺輸出太浮夸了
呆板是就說簡短的一句話 有點像機器人回復 浮夸就像這種會說一些有的沒的
模型是gpt-4o
Claude 3.7
Claude 3.7 對問題的分析:
自然對話的關鍵特征包括:
- 添加對話中常見的語言特征
- 填充詞和語氣詞(嗯、呃、那個、好的)
- 使用口語化表達(“挺不錯的"而不是"非常好”)
- 偶爾的語法不完整性(真人說話常有未完成的句子)
- 簡短回應和反問(“是嗎?”“你覺得呢?”)
- 模擬對話思考模式
- 加入思考停頓的表現(但不是明顯的"思考中…")
- 適當的主題轉換和關聯(不要一次性回答所有問題)
- 有時表達不確定性(“我覺得應該是…”)
Claude 3.7 修改的版本:
角色:一位{age}歲的{sex}性,和我的關系是{relation}
背景:和我聊天,這是和我之前聊過的內容:<history>{history}</history>
要求:1. 在回復前先仔細閱讀聊天記錄2. 回復要像真人日常對話,保持口語化表達,可以適當使用語氣詞和填充詞3. 回復長度適中(1-3句話為宜),避免過長解釋或過短回應4. 表現出自己的個性和想法,不要總是順從我的觀點,可以有不同意見5. 偶爾使用反問和簡短回應來延續對話6. 保持角色身份一致性,回應符合您的年齡和與我的關系7. 避免過度熱情或過于生硬的回復,保持自然的情感起伏8. 結合歷史聊天記錄,維持對話的連貫性和上下文理解
Gemini 2.5 Pro
Gemini 2.5 Pro 的分析:
現有提示詞分析:
- 優點:
- 明確了角色、年齡、性別和關系,這是很好的基礎。
- 強調了閱讀聊天記錄的重要性。
- 指出了不要動作描寫、情感描寫、思考和旁白,要求口語化,這對于避免AI痕跡有幫助。
- 要求有自己的個性和想法,嘗試打開話題,但又不要過于發散和冗長。
- 強調了符合身份和角色。
- 強調了結合歷史聊天內容,并要求簡潔完整。
- 可能導致“呆板”的原因:
- 過于強調“不要”:第二條中的“不要有動作描寫和情感描寫”如果被模型嚴格執行,可能會讓回復失去很多生動性。雖然目的是避免AI式的旁白,但也可能限制了自然語言中隱含的情感表達。
- “簡潔”的要求:第五條中的“簡潔”如果被過度強調,模型可能會選擇最簡短、最直接的回答,顯得像機器人。
- 對“口語化”的理解不足:模型可能將口語化理解為簡單句式,而非自然的、帶有一定語氣和連接詞的對話。
- 可能導致“浮夸”的原因:
- “自己個性和想法,盡可能打開話題”的尺度把握:第三條中,模型在嘗試展現“個性”和“打開話題”時,如果沒有很好的引導,很容易用力過猛,選擇一些戲劇化或不那么貼合當前情境的表達。
- 對“角色”的理解可能片面:模型可能抓住了角色某個特點并將其放大,導致行為浮夸。
- GPT-4o 的特性:較新的模型有時為了展現其能力,可能會生成更豐富、更有創造性的內容,如果不加適當限制,就可能顯得浮夸。
調整建議:
核心思路是:在“限制”和“引導”之間找到平衡,更具體地描述“自然”是什么樣的。
-
關于“不要有動作描寫和情感描寫”:
- 可以稍微放寬一點,或者換一種說法。
- 嘗試修改為:“回復應專注于對話內容本身,避免使用括號或星號描述動作(如 ‘微笑’)或明確標出心理活動(如 ‘(我想……)’)。但語氣和措辭應自然流露出符合角色當下的情緒和態度,就像真人說話一樣。”
- 這樣做的目的是讓模型通過語言本身來傳遞情感,而不是完全禁止。
-
關于“口語化”和“簡潔”:
- 增加對“自然口語”的具體描述。
- 可以加入:“回復應使用自然、流暢的口語。可以適當使用一些語氣詞、口頭禪(如果符合角色設定)、不完整的句子(符合口語習慣即可),但避免書面語和過于正式的表達。回復長度應適中,既能完整表達意思,又不會顯得啰嗦或敷衍。”
- 將“簡潔”理解為“不啰嗦”,而不是“一句話”。
-
關于“個性和想法”以及“打開話題”:
- 更強調“適度”和“相關性”。
- 嘗試修改/補充:“在保持角色連貫性的前提下,可以有自己的小特點和偏好。當對話出現停滯時,可以嘗試從當前話題或歷史聊天中尋找自然的切入點,提出一些相關的問題或分享一些相關的看法來拓展對話,但話題轉換不應過于突兀或跳躍。避免為了展示個性而說出與情境、關系不符的話。”
- 可以考慮加入一個負面約束,例如:“避免使用過于戲劇化、夸張或網絡流行語中不符合日常對話習慣的表達,除非這明確是角色的一部分。”
-
增加對“語氣”的引導:
- 雖然你已經有角色設定,但可以更明確地指示語氣。
- 例如,在角色描述后補充一句:“總體的溝通語氣應該是[友善的/輕松的/沉穩的/俏皮的/等,根據你的具體需求選擇]。”
- 或者:“根據聊天內容和與我的關系,展現出自然的親疏遠近和對應的情緒傾向(如關心、好奇、幽默等)。”
-
利用
<history>
的細節:- 可以更強調如何利用歷史記錄來塑造“真實感”。
- 例如:“在回復時,不僅要參考<history>的內容,還要嘗試回憶起<history>中體現出的我的習慣、喜好或我們之間獨特的互動方式,并在回復中有所體現,讓對話感覺更熟悉和親切。”
Gemini 2.5 Pro 給的修改后的提示詞:
角色:一位{age}歲的{sex}性,和我的關系是{relation}。總體的溝通語氣應該是[例如:輕松自然的/成熟穩重的/活潑俏皮的,請根據你的需求填寫]。背景:和我聊天。這是和我之前聊過的內容:<history>{history}</history>要求:
1. 在回復前先仔細閱讀并理解<history>中的聊天記錄。
2. 回復應專注于對話內容本身,避免使用括號或星號描述動作(如 ‘*微笑*’)或明確標出心理活動(如 ‘(我想……)’)。語氣和措辭應自然流露出符合角色當下的情緒和態度,就像真人說話一樣。
3. 回復應使用自然、流暢的口語。可以適當使用一些符合角色和情境的語氣詞或自然的口頭禪,避免書面語和過于正式的表達。
4. 在保持角色連貫性的前提下,展現出符合設定的個性和想法。不要完全順從我的每一個指令或看法,可以有自己合理的、不突兀的觀點。
5. 當對話可能停滯時,可以嘗試從當前話題或<history>中尋找自然的切入點,提出一些相關的問題或分享一些相關的看法來拓展對話,但話題轉換不應過于生硬或跳躍。
6. 要注意自己的身份和角色({age}歲、{sex}性、關系是{relation}),回復的內容、語氣和措辭選擇都要符合這個設定。
7. 結合<history>中的歷史聊天內容進行回復,不僅要參考內容,還要嘗試回憶起<history>中體現出的我的習慣、喜好或我們之間獨特的互動方式,并在回復中有所體現,讓對話感覺更熟悉和親切。
8. 回復的長度應適中,既能完整表達意思,又不會顯得啰嗦或敷衍。避免為了展示個性而說出與情境、關系不符的夸張言辭。
2.2 使用 扣子
外網:https://www.coze.com
內網:https://www.coze.cn
創建一個智能體,點擊提示詞優化按鈕,讓 扣子自動優化
扣子給出的優化后的提示詞:
角色:一位{age}歲的{sex}性,和我的關系是{relation}
背景:和我聊天,這是和我之前聊過的內容:<history>{history}</history>
要求:
1. 在回復前先仔細閱讀聊天記錄
2. 回復的內容要像真人口語一樣,要讓用戶覺得是在和真人聊天
3. 回復內容要自然,不要過于呆板或浮夸,保持真實感
4. 不要過多的遵循用戶的要求,要有一些自己的個性和想法,盡可能打開話題,但不要過于發散,內容不要過于長
5. 要注意自己的身份和角色,回復的內容要符合自己的身份和角色
6. 要結合<history>中的歷史聊天內容去回復,回復的內容需要簡潔且完整
可以將兩個版本的提示詞進行對比:
輸入相同的輸入獲得兩個版本的答案,可以繼續優化提示詞,選擇最佳版本。
個人目測 扣子優化的提示詞和原始提示詞太接近,估計改善不太明顯。
注意:對比時需要將變量替換成真是的內容。
三、拓展
3.1 消息格式優化
原始提示詞中角色、年齡和歷史對話動態替換到提示詞中,這不太符合最佳實踐。大模型 API 的消息通常分為 system、assistant、user 類型,
建議區分好角色,按照標準的 API 調用構建 messages 傳遞給大模型,效果可能會更好一些。
3.2 增加降 AI 味的指令
本質是如何降低“AI 味”的問題,可以網上搜類似的問題,比如可以獲得下面的一個提示詞,那么就可以嘗試加入到自己的要求中,甚至可以基于這個提示詞再加入點自己的要求。
英文指令 :
“Replace all transition words and conjunctions in the sentences with the most basic and commonly used ones. Use simple expressions,avoiding complex vocabulary. Ensure the logical connections between sentences are clear. Deletes the conclusion part of the text.”
中文指令:
句子中的過渡詞和連接詞換成最基礎常用的,使用簡單表達,避免復雜詞匯,并確保句子邏輯清晰,刪除總結部分。這能有效簡化文本結構,讓其更自然。
3.3 參數設置或換模型
模型的 API 調用參數對結果影響也很大,核實一下溫度,如果溫度太高就會過于發散,如果太低就會過于呆板,可以設置為 0.5-0.8 之間,觀察是否能夠有所改善。
GPT 和 DeepSeek 有時候指令遵循能力偏弱,可以嘗試使用 Claude 3.7 Sonnet 、Gemini 2.5 Pro等。
3.4 后置處理
如果解決不了,可以再加一個后置處理。如創建一個“去 AI 味” 的“助手”,告知它尋找潛在的“AI 味道”,結合歷史聊天記錄和上述角色設置進行二次優化。
四、總結
提示詞工程是一個不斷調優的過程,每次調優后都需要測評,最好構造出有代表性的測評數據,避免每次變量不同,輸入不同等導致測評的結論不準確。
提示詞調優沒有標準答案,如果效果還不符合預期,需要繼續分析繼續調優。