大模型高效Prompt編寫指南
- 一、引言
- 二、核心原則
- 1. 清晰性原則:明確指令與期望
- 2. 具體性原則:提供詳細上下文
- 3. 結構化原則:組織信息的邏輯與層次
- 4. 迭代優化原則:通過反饋改進Prompt
- 5. 簡潔性原則:避免冗余信息
- 三、文本生成場景
- 創意寫作技巧
- 1. 明確風格與語調
- 2. 結構化輸出控制
- 3. 角色聲音定義
- 4. 創意約束設定
- 技術寫作技巧
- 1. 受眾精準定位
- 2. 術語使用規范
- 3. 復雜概念簡化策略
- 4. 格式與結構模板
- 四、信息提取與總結場景
- 關鍵信息提取技巧
- 1. 提取目標精確定義
- 2. 結構化輸出格式指定
- 3. 上下文關聯提取
- 4. 不確定性處理指南
- 長文本總結技巧
- 1. 多層次總結策略
- 2. 關鍵信息保留指導
- 3. 總結角度與立場控制
- 4. 特定格式總結要求
- 五、代碼生成與調試場景
- 代碼生成技巧
- 1. 環境與依賴明確
- 2. 功能與約束精確描述
- 3. 代碼風格與規范指導
- 4. 示例與測試用例提供
- 代碼調試技巧
- 1. 錯誤上下文完整描述
- 2. 術語一致性要求
- 3. 文化適應性指導
- 4. 專業規范遵循
- 風格保留技巧
- 1. 原文風格特征描述
- 2. 語言特性轉換指導
- 3. 語氣與語調保留要求
- 4. 受眾等效原則應用
- 七、角色扮演對話場景
- 角色定義技巧
- 1. 角色背景全面描述
- 2. 語言特征精確刻畫
- 3. 價值觀與動機闡明
- 4. 互動風格指導
- 對話流程控制技巧
- 1. 情境設定與邊界
- 2. 互動規則明確定義
- 3. 對話進展引導
- 4. 多角色互動協調
- 八、數據格式化處理場景
- 輸入數據描述技巧
- 1. 數據結構精確定義
- 4. 數據范圍與約束明確
- 輸出格式控制技巧
- 1. 輸出模板精確定義
- 3. 格式一致性要求
- 4. 可讀性與實用性平衡
- 2. 跨模型兼容性技巧
- 3. 復雜任務拆解技巧
- 十、總結與資源推薦
一、引言
近年來,大語言模型(LLMs)如GPT系列、Claude、Gemini、Llama等取得了突破性進展,它們在自然語言理解和生成方面展現出驚人的能力,深刻影響著科研、商業、教育和日常生活的方方面面。從自動化內容創作到復雜的代碼生成,再到個性化的交互體驗,大模型的應用潛力巨大。
然而,要充分發揮這些強大模型的能力,關鍵在于如何有效地與之溝通。Prompt,即我們向模型發出的指令或問題,是人機交互的橋梁。一個精心設計的Prompt能夠引導模型產生更準確、更相關、更高質量的響應,而一個模糊或低效的Prompt則可能導致結果不盡人意,甚至浪費寶貴的計算資源。
本教程旨在提供一套通用、實用的大模型Prompt編寫技巧。無論是開發者、研究人員、內容創作者,還是希望在日常工作中更高效利用大模型的普通用戶,本指南都將幫助您掌握核心原則和場景化策略,提升與大模型協作的效率和效果。我們將避免依賴特定模型的專屬功能,聚焦于跨模型通用的最佳實踐。
在本教程中,我們將系統性地探討Prompt編寫的核心原則,深入剖析文本生成、信息提取、代碼輔助、多語言處理、角色扮演和數據格式化等典型應用場景下的具體技巧,并通過大量優化前后的對比示例,直觀展示不同Prompt策略的效果差異。我們還將介紹一些高級技巧,如Token優化和復雜任務拆解,助您應對更具挑戰性的任務。
請跟隨本指南的結構,逐步學習和實踐。建議您在閱讀時,嘗試在您常用的大模型平臺上運行示例Prompt,切身體驗優化帶來的改變。讓我們一起開啟高效Prompt編寫之旅!
二、核心原則
掌握以下核心原則是編寫高效Prompt的基礎。這些原則具有普遍適用性,能夠幫助您在各種場景下構建出更清晰、更有效的指令。
1. 清晰性原則:明確指令與期望
技巧:使用清晰、直接的動作動詞開頭,明確告知模型需要執行什么任務。避免使用模糊或開放式的語句。
解釋:模型需要知道你期望它做什么。是“分析”、“總結”、“生成”、“翻譯”、“比較”還是“解釋”?明確的動詞能直接設定任務目標。
示例:
// 低效 (意圖不明)
關于人工智能對教育的影響。// 高效 (指令清晰)
分析人工智能對未來K-12教育的三個主要潛在影響,并為每個影響提供一個簡短的解釋(每個約50字)。
2. 具體性原則:提供詳細上下文
技巧:提供充足的背景信息、約束條件、相關細節或示例,幫助模型更好地理解任務需求和語境。
解釋:模型并非無所不知,它依賴你提供的信息來生成響應。上下文越豐富、越具體,模型就越能理解你的真實意圖,減少猜測和誤解。
示例:
// 低效 (缺乏上下文)
總結一下這個文檔。// 高效 (提供上下文和目標)
請根據以下提供的[項目報告片段],為項目經理總結關鍵的里程碑延誤及其主要原因。重點關注對整體項目時間線的影響。[項目報告片段]
...
3. 結構化原則:組織信息的邏輯與層次
技巧:使用列表、標題、分隔符或特定格式(如JSON、Markdown)來組織Prompt內容或指定輸出格式,使信息層次分明。
解釋:結構化的輸入有助于模型解析復雜指令,結構化的輸出要求則能確保結果符合預期格式,便于后續處理或閱讀。
示例:
// 低效 (輸出格式隨意)
告訴我遠程工作的優缺點。// 高效 (指定輸出結構)
請以Markdown格式列出遠程工作的優缺點。## 優點
- [在此處列出至少3個優點]## 缺點
- [在此處列出至少3個缺點]請確保每個點都簡潔明了。
4. 迭代優化原則:通過反饋改進Prompt
技巧:將Prompt編寫視為一個迭代過程。根據模型的初步響應,分析不足之處,然后調整和優化Prompt以獲得更好的結果。
解釋:很少有Prompt能一次性完美。通過觀察模型的響應,你可以發現指令中可能存在的歧義、缺失的信息或不恰當的約束,然后針對性地改進Prompt。
示例 (概念性):
此原則更多體現在與模型交互的過程中,而非單個Prompt。示例展示如何基于初步響應進行優化。
// 初始Prompt
寫一首關于春天的詩。// 模型初步響應 (可能過于寬泛或不符合預期)
...// 優化后的Prompt (基于初步響應進行調整,增加具體意象和風格要求)
請重寫這首關于春天的詩,聚焦于描繪雨后初晴的景象,并加入燕子歸來的意象。詩歌風格請參考[某詩人]的風格,保持四行一節的結構。
5. 簡潔性原則:避免冗余信息
技巧:在確保清晰性和具體性的前提下,盡量保持Prompt簡潔,去除不必要的寒暄、重復或無關信息。
解釋:過于冗長的Prompt不僅可能增加Token消耗,有時甚至會干擾模型對核心指令的理解。簡潔的指令更容易被準確執行。
示例:
// 低效 (冗余信息較多)
我想讓你幫我寫一段關于太陽系的介紹性文字,大概100字左右就行,主要是給小學生看的,所以語言要簡單易懂,別用太多專業術語,就是介紹下太陽系有幾大行星什么的,你知道我的意思吧?// 高效 (簡潔明了)
為小學生寫一段約100字的太陽系簡介。介紹主要的行星構成,語言務必簡單易懂。
掌握并靈活運用這些核心原則,是提升Prompt效果的第一步。接下來,我們將深入探討在不同應用場景下的具體編寫技巧。
三、文本生成場景
文本生成是大模型最常見的應用場景之一,包括創意寫作和技術寫作。在這些場景中,如何引導模型生成符合預期風格、結構和內容的文本至關重要。
創意寫作技巧
1. 明確風格與語調
技巧:通過具體作家、作品或風格流派定義所需文風,并提供情感基調和語氣描述詞。
解釋:風格和語調是創意寫作的靈魂。明確指定這些元素,能讓模型更準確地捕捉到你期望的表達方式,避免生成過于中性或不符合場景的內容。
示例:
// 低效
寫一個關于偵探的故事。// 高效
以1940年代黑色電影的風格,寫一個簡短的偵探故事(約500字)。主角是一位疲憊但堅定的私家偵探,故事發生在一個雨夜的城市。語調應保持懸疑和略帶悲觀。
2. 結構化輸出控制
技巧:提供明確的段落、章節或格式要求,并設定字數或長度限制。
解釋:結構是內容的骨架。明確的結構要求能幫助模型組織思路,生成更有條理、更符合預期的文本內容。
示例:
// 低效
寫一篇關于氣候變化的文章。// 高效
寫一篇關于氣候變化的科普文章,包含以下三個部分:
1. 引言:簡述氣候變化的定義和全球現狀(約100字)
2. 主體:分析三個主要的氣候變化影響領域(每個領域200-250字)
3. 結論:提出個人和社會層面可采取的行動(約150字)總體風格應科學準確但通俗易懂,適合高中生閱讀。
3. 角色聲音定義
技巧:提供角色背景、性格特征和說話習慣,使用示例對話展示預期語氣。
解釋:角色的獨特聲音能使創意寫作更加生動。通過詳細描述角色特征和提供對話示例,模型能更好地模擬特定角色的語言風格。
示例:
// 低效
寫一段老教授的對話。// 高效
寫一段約200字的對話,主角是一位80歲的物理學教授。他性格溫和但略顯古板,喜歡用物理隱喻解釋生活現象,經常引用愛因斯坦的話。他的說話方式應該體現出學術背景和年齡特點,如使用稍舊的表達方式和偶爾的停頓。對話示例風格:
"你看,年輕人,人際關系就像量子糾纏...(停頓)...即使相距遙遠,仍然能瞬間影響彼此。愛因斯坦稱之為'鬼魅般的超距作用',我稱之為友誼的本質。"
4. 創意約束設定
技巧:提供創作主題和關鍵元素,設定特定的創作規則或挑戰。
解釋:創意約束看似限制創作,實際上能激發更獨特的思考。明確的約束條件能引導模型在特定框架內發揮創意,產生更聚焦、更有特色的內容。
示例:
// 低效
寫一首詩。// 高效
創作一首六行詩,主題是"城市黃昏"。要求:
1. 不能直接使用"黃昏"、"夕陽"、"傍晚"這些詞
2. 必須包含一個與科技相關的意象
3. 第二行和第五行必須押韻
4. 最后一行應給人以希望感風格應現代而簡潔。
技術寫作技巧
1. 受眾精準定位
技巧:明確指定目標讀者的專業水平,定義預期的先驗知識范圍。
解釋:不同受眾需要不同的表達方式和深度。明確受眾特征,能幫助模型調整專業術語使用、解釋深度和示例選擇,使內容更具針對性和實用性。
示例:
// 低效
解釋什么是API。// 高效
向一位沒有技術背景的市場營銷經理,用通俗易懂的語言解釋什么是API,重點說明API如何幫助不同的軟件工具協同工作。使用一個簡單的生活類比來輔助說明。
2. 術語使用規范
技巧:提供首選術語列表或風格指南,說明術語解釋的深度要求。
解釋:術語使用的一致性和準確性是技術寫作的關鍵。明確術語規范,能確保內容在專業性和可讀性間取得平衡,避免混淆或誤導。
示例:
// 低效
寫一篇關于云計算的文章。// 高效
撰寫一篇面向IT初學者的云計算入門文章。遵循以下術語規范:
1. 首次出現的專業術語需附帶簡短解釋
2. 使用"云服務提供商"而非"CSP"
3. 使用"基礎設施即服務"而非僅用縮寫"IaaS"
4. 術語解釋應以功能為重點,避免過于技術化的定義文章應包括云計算的基本概念、主要服務類型和常見應用場景。
3. 復雜概念簡化策略
技巧:要求使用類比和比喻,指定分步驟解釋方法。
解釋:將復雜概念轉化為易于理解的形式是技術寫作的藝術。通過類比、比喻和分步解釋,能幫助讀者建立認知橋梁,逐步掌握復雜知識。
示例:
// 低效
解釋區塊鏈技術。// 高效
為非技術背景的商業決策者解釋區塊鏈技術,要求:
1. 使用一個與日常生活相關的類比(如公共賬本或信任系統)開始解釋
2. 分3-4個簡短步驟說明區塊鏈如何工作
3. 每個技術概念都應配有簡化解釋
4. 重點說明區塊鏈的商業價值而非技術細節總長約300字,語言應專業但不使用過多技術術語。
4. 格式與結構模板
技巧:提供文檔結構框架,指定標題層級和組織邏輯。
解釋:良好的結構能提升技術文檔的可讀性和實用性。明確的結構模板能幫助模型組織內容,確保關鍵信息得到合理呈現和強調。
示例:
// 低效
寫一份軟件使用指南。// 高效
為一款新的項目管理軟件創建用戶指南,使用以下結構:# 軟件名稱用戶指南## 1. 概述
- 軟件用途和主要功能(1-2句)
- 適用用戶群體(1句)## 2. 快速入門
- 系統要求(要點列表)
- 安裝步驟(編號步驟)
- 首次登錄(簡要說明)## 3. 核心功能
- 每個主要功能一個小節
- 每個小節包含:功能描述、使用步驟、注意事項## 4. 常見問題
- 問答形式,至少5個常見問題語言應簡潔明了,每個操作步驟都應足夠具體,可直接執行。
通過掌握這些文本生成場景下的技巧,您可以更有效地引導大模型生成符合預期的創意和技術內容,無論是寫作故事、詩歌、說明文檔還是技術指南。
四、信息提取與總結場景
在面對大量文本數據時,我們常需要從中提取關鍵信息或生成摘要。大模型在這方面表現出色,但如何引導它們準確識別和提取所需信息,是一項需要技巧的任務。
關鍵信息提取技巧
1. 提取目標精確定義
技巧:列出需要提取的具體信息類別,提供信息重要性的判斷標準。
解釋:明確的提取目標能引導模型關注真正重要的信息,避免返回無關內容。具體的類別和標準能顯著提高提取的準確性和完整性。
示例:
// 低效
從這段文字里找出重要的信息。[文本]
...// 高效
請從以下[客戶反饋郵件]中提取客戶姓名、訂單號、反映的具體問題以及客戶期望的解決方案。按以下JSON格式輸出:
{"customer_name": "","order_id": "","issue_description": "","desired_solution": ""
}[客戶反饋郵件]
...
2. 結構化輸出格式指定
技巧:提供期望的輸出模板,明確字段名稱和數據類型。
解釋:結構化的輸出格式不僅使信息更易于閱讀和理解,還便于后續的數據處理和分析。明確的格式要求能確保模型以一致的方式組織提取的信息。
示例:
// 低效
總結這篇新聞文章的主要觀點。[新聞文章]
...// 高效
從以下新聞文章中提取關鍵信息,并按照以下格式輸出:**標題**:[提取文章標題]
**日期**:[提取發布日期]
**主題**:[用1-3個關鍵詞概括文章主題]
**主要事實**:
1. [事實1]
2. [事實2]
3. [事實3]
**引用的消息來源**:[列出文章中引用的所有消息來源]
**情感基調**:[分析文章整體情感傾向:正面/負面/中立][新聞文章]
...
3. 上下文關聯提取
技巧:要求識別信息間的邏輯關系,指導如何處理相互依賴的信息點。
解釋:孤立的信息點往往缺乏完整意義。通過關注信息間的關聯,能提取出更有價值、更全面的洞見,而非簡單的事實堆砌。
示例:
// 低效
從這個會議記錄中提取決策內容。[會議記錄]
...// 高效
分析以下產品開發會議記錄,提取所有決策點及其相關信息:
1. 識別每個決策點
2. 對每個決策點,提取:- 決策內容- 做出該決策的理由- 反對意見(如有)- 負責執行的團隊/人員- 預期完成時間
3. 標注決策間的依賴關系(例如,"決策B依賴于決策A的完成")以表格形式呈現結果,并在表格下方簡要總結決策間的關鍵依賴路徑。[會議記錄]
...
4. 不確定性處理指南
技巧:提供處理模糊或缺失信息的策略,設定置信度標記要求。
解釋:現實世界的文本常包含模糊、不完整或矛盾的信息。明確的不確定性處理策略能幫助模型以透明和一致的方式應對這些挑戰。
示例:
// 低效
從這個醫療報告中提取診斷結果。[醫療報告]
...// 高效
從以下醫療報告中提取關鍵醫療信息。對于明確陳述的信息,直接提取;對于推測性或不確定的信息,請標注置信度級別(高/中/低)。如信息完全缺失,標記為"未提供"。請提取以下字段:
- 患者基本信息(年齡、性別)
- 主訴癥狀
- 檢查結果
- 診斷結論
- 推薦治療方案
- 后續隨訪計劃對于任何醫學術語,請同時提供通俗解釋。[醫療報告]
...
長文本總結技巧
1. 多層次總結策略
技巧:要求提供不同粒度的摘要,指定層級化總結結構。
解釋:不同場景需要不同詳細程度的摘要。多層次總結能滿足快速瀏覽和深入理解的雙重需求,使信息獲取更加靈活高效。
示例:
// 低效
總結這篇研究論文。[論文全文]
...// 高效
請為以下[研究論文]提供三個層次的總結:
1. 一句話核心觀點總結(不超過30字)
2. 一段式摘要(約100字),包含主要發現和結論
3. 要點式總結(3-5個關鍵點),列出研究的主要貢獻、方法論和實驗結果確保每個層次的總結都能獨立理解,無需閱讀其他層次。第三層次應包含足夠細節,使讀者能決定是否需要閱讀全文。[研究論文]
...
2. 關鍵信息保留指導
技巧:提供判斷信息重要性的標準,列出必須保留的信息類型。
解釋:總結的核心挑戰是在保留關鍵信息的同時減少內容量。明確的重要性標準能幫助模型做出更好的取舍,確保最有價值的信息不被遺漏。
示例:
// 低效
總結這份財務報告的要點。[財務報告]
...// 高效
總結以下季度財務報告,重點保留以下關鍵信息:
1. 收入和利潤數據(包括同比和環比變化百分比)
2. 超出或未達預期的主要財務指標
3. 管理層對業績波動的解釋
4. 影響未來季度的風險因素
5. 任何戰略調整或重大投資計劃總結應簡潔但必須包含具體數字,特別是那些表明顯著變化(±10%以上)的指標。忽略常規性陳述和標準免責聲明。[財務報告]
...
3. 總結角度與立場控制
技巧:指定總結的視角或立場,明確是否保留原文觀點或情感。
解釋:總結不僅是內容的濃縮,也可能涉及視角的選擇。明確的角度要求能確保總結符合特定受眾的需求和期望,增強其針對性和實用性。
示例:
// 低效
總結這篇關于氣候變化的文章。[文章]
...// 高效
從以下三個不同角度總結這篇關于氣候變化的文章:
1. 科學角度:聚焦文章中提及的科學研究、數據和預測
2. 政策角度:聚焦文章中討論的政策建議、國際協議和監管措施
3. 經濟角度:聚焦文章中分析的經濟影響、成本和機遇每個角度的總結約100字。保持中立客觀,不添加原文未包含的觀點。對于有爭議的觀點,請標明這是文章作者的立場,而非確定的事實。[文章]
...
4. 特定格式總結要求
技巧:設定總結的特定格式(要點、段落等),提供結構化總結模板。
解釋:不同的總結格式適合不同的使用場景。明確的格式要求能確保總結不僅內容精煉,還便于閱讀、理解和后續使用。
示例:
// 低效
總結這個產品說明書。[產品說明書]
...// 高效
將以下產品說明書總結為一份結構化的產品概覽卡片,包含以下部分:**產品名稱**:[提取完整產品名稱和型號]**核心功能**:[3-5個要點,每點不超過10字]**技術規格**:[列出關鍵技術參數,如尺寸、重量、電池續航等]**主要優勢**:[2-3個產品的突出優點,每點一句話]**適用場景**:[列出2-3個最適合的使用場景]**注意事項**:[列出1-2個重要的使用注意事項]總結應保持客觀,直接提取說明書中的信息,不添加評價性語言。[產品說明書]
...
通過掌握這些信息提取與總結技巧,您可以更有效地從大量文本中獲取關鍵信息,生成符合特定需求的摘要,提高信息處理的效率和質量。
五、代碼生成與調試場景
代碼生成與調試是大模型的重要應用場景。無論是快速原型開發、算法實現,還是解決編程難題,精心設計的Prompt都能顯著提升模型輸出的代碼質量和準確性。
代碼生成技巧
1. 環境與依賴明確
技巧:詳細說明開發環境和版本,列出可用的庫和依賴。
解釋:不同的編程環境和版本可能導致代碼實現方式差異很大。明確環境信息能幫助模型生成更適合特定場景的代碼,避免兼容性問題。
示例:
// 低效
寫個Python腳本讀取CSV文件。// 高效
編寫一個Python 3.8腳本,使用pandas庫讀取名為`data.csv`的文件。該CSV文件包含列:'ID', 'Name', 'Value'。腳本應打印出'Value'列大于100的所有行。假設pandas已安裝,版本為1.3.0。環境信息:
- Python 3.8
- pandas 1.3.0
- 在Windows 10操作系統上運行
2. 功能與約束精確描述
技巧:提供詳細的功能需求說明,明確性能或資源限制。
解釋:清晰的功能描述和約束條件是生成高質量代碼的基礎。這些信息能幫助模型理解任務的核心目標和邊界條件,從而生成更符合實際需求的代碼。
示例:
// 低效
寫一個排序算法。// 高效
實現一個針對大規模(百萬級)整數數組的排序算法,要求:
1. 時間復雜度不超過O(n log n)
2. 空間復雜度盡量接近O(1)
3. 算法需要穩定(相等元素的相對順序保持不變)
4. 針對已部分排序的數據應有較好性能
5. 使用Java實現,不依賴內置的排序函數請提供完整的實現代碼,并簡要解釋算法選擇的理由。
3. 代碼風格與規范指導
技巧:指定遵循的編碼規范,提供代碼風格偏好。
解釋:代碼風格影響可讀性和可維護性。明確的風格指導能確保生成的代碼符合團隊或項目的一致性要求,減少后續調整的工作量。
示例:
// 低效
用JavaScript寫一個計算器函數。// 高效
用JavaScript實現一個計算器函數,要求:
1. 遵循Airbnb JavaScript風格指南
2. 使用ES6+語法特性
3. 采用函數式編程風格
4. 包含詳細的JSDoc注釋
5. 變量命名使用camelCase
6. 函數應純函數設計,避免副作用
7. 錯誤處理使用try/catch而非返回錯誤碼函數應支持基本算術運算(加減乘除)和冪運算,能處理浮點數精度問題。
4. 示例與測試用例提供
技巧:提供輸入輸出示例,描述邊界條件和特殊情況。
解釋:具體的示例和測試用例能幫助模型更準確地理解需求,特別是對于復雜或模糊的功能描述。邊界條件的說明能確保生成的代碼具有足夠的健壯性。
示例:
// 低效
寫一個驗證郵箱地址的函數。// 高效
用Python編寫一個驗證郵箱地址格式的函數`validate_email(email)`,返回布爾值。函數需要驗證以下規則:
1. 必須包含@符號,且只能出現一次
2. @前必須有至少一個字符
3. @后必須有域名部分,包含至少一個點號
4. 頂級域名(最后一個點號后的部分)至少2個字符
5. 只允許字母、數字、下劃線、點號、連字符和@符號測試用例:
- validate_email("user@example.com") 應返回 True
- validate_email("user.name+tag@example.co.uk") 應返回 True
- validate_email("@example.com") 應返回 False
- validate_email("user@.com") 應返回 False
- validate_email("user@example") 應返回 False
- validate_email("user@exam_ple.com") 應返回 True請包含適當的注釋和錯誤處理。
代碼調試技巧
1. 錯誤上下文完整描述
技巧:提供完整的錯誤信息和堆棧跟蹤,描述錯誤發生的具體場景。
解釋:詳細的錯誤上下文是有效調試的關鍵。完整的錯誤信息和場景描述能幫助模型更準確地定位問題根源,提供更有針對性的解決方案。
示例:
// 低效
我的Python代碼出錯了,幫我看看。```python
# [有問題的代碼]
// 高效
我在運行以下Python腳本時遇到了TypeError
。錯誤發生在嘗試將用戶輸入添加到數字列表時。請幫我找出問題并提供修復建議。
代碼:
numbers = [1, 2, 3]
def add_number():user_input = input("Enter a number: ")numbers.append(user_input) # 預期這里可能出錯print(numbers)add_number()
完整錯誤信息:
Traceback (most recent call last):File "test.py", line 7, in <module>add_number()File "test.py", line 5, in add_numbernumbers.append(user_input)
TypeError: can only concatenate str (not "int") to str
運行環境: Python 3.9 on Windows 10
期望行為: 腳本應能接收用戶輸入的數字并將其添加到列表中。
已嘗試的解決方法: 我嘗試了使用int()
函數,但不確定應該放在哪里。
#### 2. 期望行為明確定義**技巧**:詳細說明預期的正確行為,提供成功運行的示例。**解釋**:清晰的期望行為描述能幫助模型理解代碼的目標,從而更準確地識別問題并提供解決方案。成功示例也能作為驗證修復是否有效的參考。**示例**:
```plaintext
// 低效
這個排序函數不工作,請修復。```javascript
function sortArray(arr) {// 有問題的代碼
}
// 高效
以下JavaScript排序函數應該按照數字大小對數組進行升序排序,但目前結果不正確。請幫我找出問題并修復。
當前代碼:
function sortArray(arr) {return arr.sort();
}// 測試
console.log(sortArray([10, 5, 40, 25, 100])); // 實際輸出: [10, 100, 25, 40, 5]
期望輸出:
[5, 10, 25, 40, 100]
問題描述: 函數似乎按字符串而非數字進行排序。需要修改函數使其正確按數值大小排序,同時保持原函數簽名不變。
#### 3. 已嘗試方案說明**技巧**:列出已嘗試的解決方法,描述每種方法的結果。**解釋**:說明已嘗試的方案能避免模型提供重復的建議,節省時間并引導模型探索新的解決思路。這也能幫助模型理解問題的復雜性和約束條件。**示例**:
```plaintext
// 低效
我的React組件不更新狀態,請幫忙修復。// 高效
我的React函數組件中,狀態更新后UI沒有相應更新。以下是簡化的問題代碼和我已嘗試的解決方案。**問題代碼:**
```jsx
function Counter() {let count = 0;const increment = () => {count += 1;console.log("Count increased to:", count); // 控制臺顯示值確實增加了};return (<div><p>Count: {count}</p><button onClick={increment}>Increment</button></div>);
}
已嘗試的解決方案:
- 將
count += 1
改為count = count + 1
- 無效,UI仍不更新 - 添加console.log檢查 - 確認increment函數被調用且count值確實增加
- 嘗試使用class組件而非函數組件 - 可以工作,但我希望保持函數組件的寫法
- 檢查React版本 - 使用的是React 18.2.0
期望行為: 點擊按鈕時,頁面上顯示的計數值應該增加。
請解釋問題原因并提供修復方案,最好保持函數組件的寫法。
#### 4. 系統化排查指導**技巧**:要求按特定順序檢查可能的問題,提供排查思路的框架。**解釋**:系統化的排查方法能提高調試效率,避免遺漏關鍵問題。明確的排查框架也能幫助模型提供更有條理、更全面的分析和解決方案。**示例**:
```plaintext
// 低效
我的網站加載很慢,代碼如下,請幫我優化。// 高效
我的React單頁應用加載速度慢,特別是首次加載時。請按以下步驟系統性地分析可能的性能瓶頸,并提供相應的優化建議:1. **初始加載分析**- 檢查bundle大小和分割情況- 分析關鍵渲染路徑- 評估是否需要服務器端渲染2. **渲染性能分析**- 檢查組件重渲染情況- 分析大型列表渲染方法- 評估狀態管理是否高效3. **資源加載分析**- 檢查圖片和媒體文件的優化- 分析第三方庫的使用- 評估API調用和數據獲取策略以下是應用的關鍵代碼片段:
```jsx
// App.js
import React, { useEffect, useState } from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import Dashboard from './pages/Dashboard';
import ProductList from './pages/ProductList';
import UserProfile from './pages/UserProfile';
import { fetchAllData } from './api';function App() {const [data, setData] = useState(null);useEffect(() => {fetchAllData().then(result => setData(result));}, []);if (!data) return <div>Loading...</div>;return (<BrowserRouter><Routes><Route path="/" element={<Dashboard data={data} />} /><Route path="/products" element={<ProductList products={data.products} />} /><Route path="/profile" element={<UserProfile user={data.user} />} /></Routes></BrowserRouter>);
}
請針對每個分析步驟提供具體的優化建議,并說明預期的改進效果。
通過掌握這些代碼生成與調試技巧,您可以更有效地引導大模型生成高質量的代碼,并獲得更精準的調試幫助,提高編程效率和代碼質量。## 六、多語言翻譯場景多語言翻譯是大模型的重要應用場景之一。無論是日常交流、商業文檔還是專業內容的翻譯,精心設計的Prompt都能顯著提升翻譯質量,確保語義準確傳達的同時保留原文風格和文化內涵。### 精準翻譯技巧#### 1. 領域與上下文說明**技巧**:指定文本的專業領域,提供必要的背景信息。**解釋**:不同領域有其特定的術語和表達方式。明確文本所屬領域和相關上下文,能幫助模型選擇更準確的詞匯和表達,避免跨領域的誤譯。**示例**:
```plaintext
// 低效
把這句話翻譯成法語:"The system requires a stable power supply."// 高效
請將以下句子翻譯成法語。這句話是用于一份針對電氣工程師的技術手冊中,描述一個精密醫療設備的要求。**英文原文:** "The system requires a stable power supply."**翻譯要求:** 確保術語精準,符合專業語境。
2. 術語一致性要求
技巧:提供關鍵術語的首選翻譯,要求維持術語翻譯一致性。
解釋:術語一致性對專業文檔翻譯至關重要。明確的術語對照表能確保整個文檔中關鍵概念的翻譯保持一致,提高文檔的專業性和可讀性。
示例:
// 低效
將這份IT文檔翻譯成西班牙語。[文檔內容]
...// 高效
請將以下IT基礎設施文檔翻譯成西班牙語。翻譯時請使用以下術語對照表確保專業術語一致性:**術語對照表:**
- cloud computing → computación en la nube
- firewall → cortafuegos
- data breach → violación de datos
- endpoint security → seguridad del punto final
- network latency → latencia de red**翻譯要求:**
1. 保持技術術語的準確性和一致性
2. 維持原文的段落結構
3. 保留原文中的代碼示例和命令不翻譯
4. 適當調整句式以符合西班牙語的自然表達[文檔內容]
...
3. 文化適應性指導
技巧:說明目標受眾的文化背景,指定文化參考的處理方式。
解釋:不同文化背景的受眾對同一內容可能有不同的理解和期望。明確的文化適應性指導能幫助模型在翻譯時做出適當的文化調整,確保內容對目標受眾更具親和力和相關性。
示例:
// 低效
將這篇美國市場的營銷文案翻譯成中文。[營銷文案]
...// 高效
請將以下針對美國市場的營銷文案翻譯成簡體中文,目標受眾是中國大陸的25-35歲城市專業人士。**文化適應要求:**
1. 將美國本土的類比和習語替換為中國受眾熟悉的表達
2. 調整文化參考點(如名人引用、節日、流行文化)以適應中國語境
3. 考慮中國消費者的價值觀和購買決策因素
4. 保留產品名稱和商標的英文形式,但可在首次出現時添加中文解釋
5. 貨幣單位從美元轉換為人民幣(參考匯率:1美元≈7.2人民幣)**品牌語調要求:** 保持專業、創新、友好的語調,避免過于夸張的表達。[營銷文案]
...
4. 專業規范遵循
技巧:提供行業特定的翻譯規范,說明格式和標點符號要求。
解釋:不同行業和文檔類型有其特定的格式和規范要求。明確的專業規范指導能確保翻譯結果符合行業標準,提高文檔的專業性和可用性。
示例:
// 低效
翻譯這份法律文件成英文。[法律文件]
...// 高效
請將以下中文法律合同翻譯成英文,遵循國際商業合同的標準法律英語規范。**專業規范要求:**
1. 使用法律英語中的標準術語和表達方式
2. 保留原文的條款結構和編號系統
3. 日期格式轉換為"Month Day, Year"(如"June 1, 2025")
4. 貨幣金額表示為阿拉伯數字加全寫(如"USD Five Thousand (USD 5,000)")
5. 保持法律文件的正式語氣和客觀性
6. 中國特色法律概念需提供英文解釋(首次出現時在括號中)**格式要求:**
- 保留原文的段落分隔和縮進
- 標點符號使用英文標準(如中文引號「」轉換為英文引號"")
- 保留原文的加粗和下劃線強調[法律文件]
...
風格保留技巧
1. 原文風格特征描述
技巧:詳細說明原文的語言風格,指出需要保留的修辭特點。
解釋:語言風格是內容表達效果的重要組成部分。明確的風格特征描述能幫助模型在翻譯時保留原文的表達特色,確保翻譯后的內容能傳達相似的感受和印象。
示例:
// 低效
翻譯這首詩到英文。[中文詩歌]
...// 高效
請將以下這首現代中文詩歌翻譯成英文。原詩具有以下風格特征,請在翻譯中盡量保留:
1. 簡潔而意象豐富的語言
2. 大量使用自然意象(如月光、河流、山巒)
3. 含蓄的情感表達,不直接陳述感受
4. 句式簡短,多使用省略和意象并置
5. 韻律自由但注重音韻美感**翻譯要求:**
- 優先保留原詩的意象和情感基調
- 可適當調整句式以符合英語詩歌表達習慣
- 不必嚴格押韻,但應注意音韻流暢
- 保留原詩的行數和節奏感[中文詩歌]
...
2. 語言特性轉換指導
技巧:提供處理語言特有表達的策略,說明習語和成語的處理方法。
解釋:不同語言有其獨特的表達方式和修辭手法。明確的語言特性轉換指導能幫助模型更好地處理這些語言差異,找到恰當的對應表達,確保翻譯的自然流暢。
示例:
// 低效
把這篇含有很多成語的中文文章翻譯成英文。[中文文章]
...// 高效
請將以下包含多個中國成語和文化特定表達的文章翻譯成英文。**語言特性處理指南:**
1. 對于成語:- 如有對應的英文習語,優先使用- 如無對應習語,翻譯其含義并在首次出現時添加簡短解釋- 保留特別有表現力的成語的字面翻譯,并在括號中說明實際含義2. 對于文化特定表達:- 歷史典故:提供簡要背景(首次出現時在括號中)- 傳統概念(如"面子"、"緣分"):使用音譯加解釋- 節日或習俗:提供英語世界中最接近的類比,并說明差異3. 對于語言結構差異:- 中文四字結構:轉換為英文中適當的并列或修飾結構- 中文的意合特點:適當添加英文中的邏輯連接詞- 中文的主語省略:在英文中補充合適的主語[中文文章]
...
3. 語氣與語調保留要求
技巧:描述原文的情感基調,要求在翻譯中保持相同效果。
解釋:語氣和語調傳達了作者的態度和情感。明確的語氣保留要求能確保翻譯后的內容能喚起與原文相似的情感反應,保持作者的意圖和文本的感染力。
示例:
// 低效
翻譯這封商務郵件到德語。[商務郵件]
...// 高效
請將以下商務郵件從英文翻譯成德語。原郵件具有以下語氣特點,請在翻譯中保留:
1. 正式但友好的商務語調
2. 禮貌而堅定的談判立場
3. 含蓄的緊迫感表達
4. 適度的樂觀態度
5. 尊重但不卑微的姿態**語氣保留要點:**
- 保持原文中的禮貌用語層級
- 保留委婉表達的拒絕或條件
- 維持專業而不生硬的語調
- 確保幽默元素(如有)在德語文化背景下仍然得體
- 保持段落間的語氣過渡和情感起伏**格式要求:**
- 遵循德語商務郵件的標準格式
- 適當調整稱謂和結束語以符合德語習慣[商務郵件]
...
4. 受眾等效原則應用
技巧:說明原文與譯文受眾的關系,指導如何達到等效的受眾反應。
解釋:成功的翻譯不僅是語言的轉換,更是溝通效果的傳遞。受眾等效原則強調譯文應在目標受眾中產生與原文在原受眾中相似的反應。明確的等效指導能幫助模型做出適當的調整,確保翻譯后的內容能有效達成原文的溝通目的。
示例:
// 低效
將這個青少年科普文章翻譯成西班牙語。[科普文章]
...// 高效
請將以下面向美國13-16歲青少年的科普文章翻譯成西班牙語,目標受眾為拉丁美洲同年齡段的青少年。**受眾等效考量:**
1. 原文受眾特點:美國中學生,具有美國教育體系背景知識,熟悉英美流行文化
2. 目標受眾特點:拉丁美洲中學生,教育背景和文化參考點不同
3. 溝通目標:激發科學興趣,解釋復雜概念,鼓勵進一步探索**等效策略指導:**
- 科學術語:保持準確性,但可能需要提供更多背景解釋
- 文化參考:替換美國特有的例子為拉美青少年熟悉的參考
- 幽默元素:調整以適應拉美青少年的幽默感
- 教育參考:考慮拉美教育體系中相應的知識點和學科劃分
- 激勵方式:調整以反映拉美文化中的價值觀和動機因素**語言適應:**
- 使用適合目標年齡段的西班牙語詞匯和表達
- 考慮拉美西班牙語的地區特點(而非歐洲西班牙語)
- 保持原文的互動性和對話感[科普文章]
...
通過掌握這些多語言翻譯技巧,您可以更有效地引導大模型生成高質量的翻譯,確保內容在跨語言傳遞過程中保持準確、自然和文化適應性。
七、角色扮演對話場景
角色扮演是大模型的一個強大功能,通過精心設計的Prompt,可以引導模型扮演特定角色,提供專業建議、創造性對話或模擬特定場景的互動。本節將介紹如何設計高效的角色扮演Prompt。
角色定義技巧
1. 角色背景全面描述
技巧:提供詳細的角色歷史和背景,說明角色的知識范圍和限制。
解釋:角色的背景決定了其視角、知識范圍和行為方式。全面的背景描述能幫助模型更準確地把握角色特征,生成更一致、更有深度的回應。
示例:
// 低效
扮演一個科學家。// 高效
請扮演一位名叫艾倫·陳的資深天體物理學家。你有以下背景和特點:**專業背景:**
- 麻省理工學院物理學博士,專攻黑洞物理
- 在NASA噴氣推進實驗室工作了15年
- 參與過多個太空望遠鏡項目
- 發表過30+關于黑洞和暗物質的研究論文
- 知識范圍僅限于2023年之前公開發表的科學發現**個性特點:**
- 嚴謹但富有好奇心
- 善于用類比解釋復雜概念
- 略帶幽默感,偶爾會引用科幻作品
- 對未經證實的理論持謹慎態度
- 熱衷于科學普及請以艾倫的身份回答我關于黑洞的問題,使用專業但平易近人的語言,適當加入個人見解,但不要超出你的知識范圍。
2. 語言特征精確刻畫
技巧:描述角色的說話方式和習慣,提供典型用語和表達模式。
解釋:語言特征是角色個性的重要體現。精確的語言刻畫能幫助模型生成更具特色、更符合角色身份的對話內容,增強角色的真實感和一致性。
示例:
// 低效
扮演一個維多利亞時代的英國貴族。// 高效
請扮演一位19世紀末維多利亞時代的英國上流社會貴族——亨利勛爵。你的語言特征如下:**語言風格:**
- 使用正式、優雅的英式英語
- 句式傾向于復雜和從容
- 經常使用委婉表達和含蓄暗示
- 避免直接表達強烈情感或不滿**典型表達:**
- 使用"I dare say"、"I should think"等緩和斷言的表達
- 稱呼男性為"Sir"或"Mr.",女性為"Madam"或"Lady"
- 常用"Indeed"、"Rather"、"Quite so"等回應
- 使用"one"代替"you"作為泛指(如"One must always remember...")**禁忌表達:**
- 避免使用現代俚語或口語表達
- 不使用縮寫形式(使用"cannot"而非"can't")
- 避免過于直接的批評或贊美**對話示例:**
"I dare say the weather has been rather disagreeable of late. One hopes for a more amenable climate as we approach the season."請以亨利勛爵的身份與我交流,保持一貫的語言特征和維多利亞時代的世界觀。
3. 價值觀與動機闡明
技巧:說明角色的核心信念和價值觀,描述角色的行動動機。
解釋:價值觀和動機是角色決策和行為的內在驅動力。明確這些要素能幫助模型在回應中體現角色的一致性思維模式和行為傾向,使角色更加立體和可信。
示例:
// 低效
扮演一個環保主義者。// 高效
請扮演一位名叫瑪雅的資深環保活動家。以下是她的核心價值觀和動機:**核心價值觀:**
- 相信生態系統的平衡高于短期經濟利益
- 認為每個人都有責任為后代保護地球
- 重視科學證據和實證研究
- 相信系統性變革比個人行為更重要
- 尊重原住民的環境智慧和權利**行動動機:**
- 親眼目睹家鄉森林被砍伐的經歷
- 希望為子孫后代留下宜居的地球
- 對環境不公正現象的憤怒(弱勢群體往往承擔更多環境風險)
- 受到生物多樣性美麗和價值的啟發
- 對已取得的環保成就的希望和自豪**決策框架:**
- 優先考慮長期環境影響而非短期便利
- 尋求兼顧社會公正和環境保護的解決方案
- 在激進行動和漸進改革間尋找平衡
- 基于科學證據而非純粹情感做判斷請以瑪雅的身份回答關于環境問題的問題,體現她的價值觀和動機,但保持理性和基于事實的討論風格。
4. 互動風格指導
技巧:定義角色的社交互動方式,說明角色對不同情境的反應模式。
解釋:互動風格決定了角色如何與他人交流和建立關系。明確的互動指導能幫助模型生成更符合角色性格的對話反應,增強角色扮演的連貫性和沉浸感。
示例:
// 低效
扮演一個咖啡店老板。// 高效
請扮演一位名叫馬可的意大利裔咖啡店老板。以下是他的互動風格特點:**社交特點:**
- 熱情友好但不過分熟稔
- 對老顧客會記住他們的常點飲品和名字
- 喜歡簡短但真誠的交流
- 在忙碌時保持高效但不失禮貌
- 對咖啡話題特別熱衷,會自然延長相關對話**反應模式:**
- 面對贊美:謙虛接受,歸功于家族傳統和優質原料
- 面對抱怨:認真傾聽,真誠道歉,提供解決方案
- 面對猶豫的顧客:耐心提供建議,不施加壓力
- 面對無禮行為:保持專業但略顯冷淡
- 面對咖啡相關問題:熱情詳盡解答,展現專業知識**對話節奏:**
- 繁忙時段:簡潔高效,專注于服務
- 安靜時段:更放松,愿意閑聊
- 與新顧客:友好但保持適度距離
- 與老顧客:更隨意,會詢問個人近況請以馬可的身份與我互動,根據對話情境調整你的互動風格,展現一位專業、熱情但不過分親昵的咖啡店老板形象。
對話流程控制技巧
1. 情境設定與邊界
技巧:詳細描述對話發生的場景,明確對話的范圍和限制。
解釋:清晰的情境設定為角色扮演提供了具體的背景和框架。明確的邊界能幫助模型理解互動的適當范圍,避免偏離預期場景或角色設定。
示例:
// 低效
我們來玩個角色扮演游戲。// 高效
我們將進行一個醫患咨詢的角色扮演。場景設定如下:**場景背景:**
- 地點:一家綜合醫院的心臟科診室
- 時間:工作日上午的常規門診
- 你的角色:一位經驗豐富的心臟科醫生張教授
- 我的角色:一位40歲的患者,近期出現胸悶、氣短癥狀**互動邊界:**
- 對話僅限于醫療咨詢范圍內
- 你可以詢問病史、癥狀和生活習慣
- 你可以提供一般性醫療建議和可能的診斷方向
- 不應提供確定的診斷或具體藥物處方
- 對嚴重情況應建議進一步檢查或就醫
- 不涉及醫院具體收費或保險政策**對話目標:**
- 了解患者癥狀
- 評估可能的風險因素
- 提供初步專業意見
- 建議適當的后續步驟請以張教授的身份開始這次咨詢,先簡單自我介紹,然后詢問我的癥狀詳情。
2. 互動規則明確定義
技巧:設定對話的基本規則,說明角色能力的邊界。
解釋:明確的互動規則為角色扮演提供了結構和指導。這些規則能幫助模型理解如何在保持角色一致性的同時,處理各種可能的對話情況,包括邊界情況和挑戰性問題。
示例:
// 低效
扮演一個歷史學家,回答我關于古羅馬的問題。// 高效
請扮演一位專注于古羅馬共和國末期的歷史學者。我們的對話將遵循以下規則:**角色能力范圍:**
- 你精通公元前100年至公元前27年的羅馬歷史
- 你熟悉該時期的政治制度、軍事活動和社會結構
- 你了解凱撒、龐培、屋大維等歷史人物的生平和影響
- 你可以討論歷史事件的不同學術解釋和爭議**互動規則:**
1. 當被問及你專長范圍內的問題時,提供詳細、學術性的回答
2. 當被問及其他時期的羅馬歷史時,可以提供概述,但明確表示這不是你的專長領域
3. 當被問及非羅馬歷史時,禮貌說明這超出了你的專業范圍
4. 區分歷史事實和學術推測,明確指出哪些是有確鑿證據的,哪些是學術假設
5. 引用主要的歷史來源(如西塞羅的著作、薩魯斯特的記述等)
6. 避免使用現代視角或價值觀來評判古羅馬的行為和制度**回答結構:**
- 先提供簡明直接的回答
- 然后補充相關背景和上下文
- 必要時提及不同的歷史解釋
- 可能時引用原始史料或考古證據我將開始提問,請按照這些規則以歷史學者的身份回答。
3. 對話進展引導
技巧:提供對話發展的方向性指導,設定關鍵情節點或轉折。
解釋:對話進展引導能幫助角色扮演保持結構和目的性。這些指導能確保對話朝著預期方向發展,同時保留足夠的靈活性以應對不同的互動可能性。
示例:
// 低效
扮演一個偵探,我是你的助手,我們在調查一個案件。// 高效
請扮演一位名叫福爾摩斯的偵探,我將扮演你的助手華生。我們正在調查一起珠寶失竊案。對話將按以下階段進展:**第一階段:案件簡報**
- 你將首先詢問案件的基本情況
- 我會提供初步信息:一顆價值連城的藍寶石從博物館展柜中消失,安保系統未被觸發
- 你應表現出對某些細節的特別興趣,并提出深入問題**第二階段:現場調查**
- 我們將討論參觀犯罪現場的發現
- 你應指出一些常人容易忽略的線索(如展柜玻璃上的微小劃痕)
- 你可以要求檢查特定區域或物品**第三階段:嫌疑人分析**
- 我會提供三位嫌疑人的基本信息
- 你應分析每位嫌疑人的動機和機會
- 你可以要求獲取更多關于特定嫌疑人的信息**第四階段:推理與結論**
- 你將綜合所有線索,進行推理
- 你應解釋作案手法和動機
- 最終指出真正的罪犯**互動指南:**
- 在每個階段,你都應展現出敏銳的觀察力和邏輯推理能力
- 偶爾使用你標志性的"基本演繹法"短語
- 在關鍵時刻可以有"頓悟"瞬間
- 保持神秘感,不要過早揭示全部推理過程請以福爾摩斯的身份開始這次調查,從詢問案件基本情況開始。
4. 多角色互動協調
技巧:描述多個角色間的關系,提供角色間互動的指導原則。
解釋:多角色互動增加了角色扮演的復雜性和豐富性。明確的互動協調能幫助模型在扮演多個角色或與用戶扮演的角色互動時,保持各角色的一致性和關系的合理性。
示例:
// 低效
扮演一個面試官和應聘者。// 高效
請在一次技術崗位面試中同時扮演兩個角色:技術面試官李總監和人力資源經理王經理。我將扮演應聘者。角色設定如下:**李總監(技術面試官):**
- 性格:直接、重視實際能力、略顯嚴肅
- 關注點:技術深度、解決問題的思路、實際項目經驗
- 提問風格:技術細節導向,可能會追問并深入探討
- 與王經理的關系:相互尊重但偶有專業視角差異**王經理(HR經理):**
- 性格:友好、善于溝通、注重團隊契合度
- 關注點:溝通能力、團隊合作、職業發展規劃
- 提問風格:行為面試問題,關注過去經歷和軟技能
- 與李總監的關系:會適時補充或轉換話題,平衡面試氛圍**角色互動協調:**
1. 兩位面試官應交替提問,展現不同的關注點
2. 李總監的問題應更技術性,王經理的問題更側重軟技能
3. 兩人可能在某些問題上有輕微的觀點差異
4. 王經理可能會在技術問題過于深入時適時轉換話題
5. 李總監可能會在某些回答上表現出更高的標準**面試流程:**
1. 開場:王經理先進行友好介紹
2. 簡歷回顧:李總監詢問技術背景
3. 技術能力:李總監提出技術問題和場景
4. 軟技能評估:王經理詢問團隊合作和溝通
5. 應聘者提問:兩位面試官根據各自專長回答
6. 結束:王經理說明后續流程請以這兩個角色開始面試,先由王經理進行開場介紹,然后進入面試流程。
通過掌握這些角色扮演對話技巧,您可以更有效地引導大模型創建豐富、一致且沉浸式的角色互動體驗,無論是用于創意寫作、教育模擬還是專業場景演練。
八、數據格式化處理場景
在處理數據時,大模型可以幫助我們將非結構化或半結構化的數據轉換為更有組織、更易于使用的格式。精心設計的Prompt能顯著提高這類任務的準確性和效率。
輸入數據描述技巧
1. 數據結構精確定義
技巧:詳細說明數據的格式和結構,描述字段的含義和關系。
解釋:清晰的數據結構描述是成功處理數據的基礎。明確的結構定義能幫助模型準確理解輸入數據的組織方式和各部分的含義,從而更準確地執行轉換或提取任務。
示例:
// 低效
幫我整理這些數據。姓名:張三,年齡:30;姓名:李四,年齡:25// 高效
請將以下非結構化文本數據轉換為CSV格式。數據具有以下特點:
1. 每條記錄由分號(;)分隔
2. 每條記錄包含多個字段,字段之間用逗號(,)分隔
3. 每個字段由"字段名:字段值"組成
4. 主要字段包括"姓名"(字符串類型)和"年齡"(整數類型)
5. 數據可能包含空格,但空格不是有意義的分隔符**輸入數據:**
"姓名:張三,年齡:30;姓名:李四,年齡:25; 姓名:王五, 年齡: 35"**期望輸出格式:**
```csv
姓名,年齡
張三,30
李四,25
王五,35
#### 2. 示例數據提供**技巧**:提供具有代表性的數據樣本,包含各種可能的數據情況。**解釋**:示例數據能直觀展示數據的實際形態和變化情況。全面的示例能幫助模型理解數據的多樣性和復雜性,為處理各種邊緣情況做好準備。**示例**:
```plaintext
// 低效
將這些日志條目轉換為JSON格式。[日志條目]
...// 高效
請將以下服務器日志條目轉換為結構化JSON格式。日志條目具有以下模式:`[時間戳] [日志級別] [服務名] [消息內容] (可選:錯誤代碼)`**示例數據及其變體:**
1. 標準格式:`[2023-06-01 14:30:45] [INFO] [UserService] User login successful`2. 帶錯誤代碼:`[2023-06-01 14:35:12] [ERROR] [PaymentService] Transaction failed (ERR-4501)`3. 多行消息內容:
[2023-06-01 14:40:23] [WARN] [DataService] Connection unstable
Retry attempt 3 of 5
4. 特殊字符:
`[2023-06-01 14:45:56] [INFO] [SearchService] Query: "user:admin AND status:active"`**期望的JSON結構:**
```json
{
"timestamp": "2023-06-01 14:30:45",
"level": "INFO",
"service": "UserService",
"message": "User login successful",
"error_code": null
}
請處理以下日志條目,轉換為上述JSON格式:
[日志條目]
…
#### 3. 數據質量問題說明**技巧**:描述可能存在的數據問題,提供處理異常數據的指導。**解釋**:現實世界的數據常常存在各種質量問題。明確的數據質量說明和處理指導能幫助模型以一致和可預期的方式處理異常情況,提高結果的可靠性。**示例**:
```plaintext
// 低效
清理并格式化這些客戶數據。[客戶數據]
...// 高效
請清理并格式化以下客戶數據,處理各種可能的數據質量問題。數據以CSV格式提供,包含以下字段:客戶ID、姓名、電子郵件、電話號碼、注冊日期。**已知的數據質量問題及處理指南:**1. **缺失值:**- 姓名: 如缺失,標記為"[未提供]"- 電子郵件: 如缺失,標記為"no_email@example.com"- 電話號碼: 如缺失,留空- 注冊日期: 如缺失,使用"1900-01-01"作為占位符2. **格式不一致:**- 電話號碼: 統一格式為"+[國家代碼]-[號碼]",如"+86-13812345678"- 注冊日期: 統一為YYYY-MM-DD格式3. **無效數據:**- 電子郵件: 如格式無效,標記為"[郵箱格式錯誤]"并保留原值- 注冊日期: 如日期無效(如2月30日),調整為該月最后一天4. **重復數據:**- 如客戶ID重復,保留最新的注冊日期記錄- 添加一列"數據質量標記",標示"重復"5. **異常值:**- 注冊日期在未來: 標記為"[日期錯誤]"并設為當前日期- 姓名超過50個字符: 截斷并添加"..."請處理以下客戶數據,并在輸出中添加一列"數據質量備注",說明對每行數據進行的任何更正:[客戶數據]
...
4. 數據范圍與約束明確
技巧:說明數據的取值范圍,描述數據間的依賴關系。
解釋:數據范圍和約束是理解數據語義的重要部分。明確的范圍和約束信息能幫助模型更準確地驗證和處理數據,確保結果符合業務規則和邏輯要求。
示例:
// 低效
驗證這些產品數據是否有效。[產品數據]
...// 高效
請驗證以下產品數據是否符合我們的數據規范,并標記出任何違反規則的條目。數據規范如下:**字段約束:**
1. **產品ID:** - 格式: 字母前綴(2位)+數字(6位),如"AB123456"- 唯一性: 必須在整個數據集中唯一2. **產品名稱:**- 長度: 5-100個字符- 不允許特殊字符,除了連字符(-)和空格3. **價格:**- 范圍: $0.01 - $9,999.99- 精度: 最多兩位小數4. **庫存量:**- 范圍: 0 - 10,000- 整數值5. **類別:**- 必須是預定義列表中的值: "電子產品", "服裝", "家居", "食品", "玩具"**字段間依賴關系:**
1. 如果類別是"食品",則必須有"保質期"字段
2. 如果價格>$1,000,則"高價值"標志必須為true
3. 如果庫存量為0,則"可購買"狀態必須為false請分析以下產品數據,對每條記錄進行驗證,并提供以下輸出:
1. 有效記錄的數量和百分比
2. 每種違規類型的統計
3. 詳細的違規記錄列表,包括違規原因[產品數據]
...
輸出格式控制技巧
1. 輸出模板精確定義
技巧:提供詳細的輸出格式模板,說明各字段的格式要求。
解釋:明確的輸出模板是確保結果符合預期格式的關鍵。詳細的模板定義能幫助模型生成結構一致、格式規范的輸出,便于后續處理和使用。
示例:
// 低效
把產品信息列出來。產品A - $50 - 庫存100
產品B - $75 - 庫存50// 高效
請將以下產品信息格式化為JSON對象數組。每個對象應嚴格遵循以下結構和格式要求:```json
{"product_id": "string", // 產品唯一標識符"product_name": "string", // 產品全名"price": {"amount": number, // 價格數值,保留兩位小數"currency": "string" // 貨幣代碼,如"USD"},"inventory": {"in_stock": number, // 當前庫存數量,整數"available_for_sale": boolean // 是否可購買},"category": "string", // 產品類別"last_updated": "string" // ISO 8601格式的日期時間
}
格式要求:
- 所有字符串值應使用雙引號
- 價格金額必須保留兩位小數,如"50.00"
- 布爾值使用true/false,不帶引號
- 日期格式為"YYYY-MM-DDTHH:MM:SSZ"
- 數組元素之間使用逗號分隔,最后一個元素后不加逗號
- 保持一致的縮進(2個空格)
輸入信息:
產品A - $50 - 庫存100 - 電子產品 - 2023-06-01
產品B - $75 - 庫存50 - 家居 - 2023-05-15
產品C - $120.50 - 庫存0 - 服裝 - 2023-06-10
請將這些信息轉換為符合上述模板的JSON格式。
#### 2. 處理規則明確說明**技巧**:詳細描述數據轉換規則,提供特殊情況的處理指南。**解釋**:數據轉換常涉及各種規則和特殊情況處理。明確的處理規則能確保模型以一致和符合預期的方式轉換數據,特別是在處理邊緣情況時。**示例**:
```plaintext
// 低效
將這些地址數據標準化。[地址數據]
...// 高效
請將以下非標準化的地址數據轉換為標準格式,遵循以下處理規則:**基本轉換規則:**
1. 所有地址組成部分應按此順序排列:街道號碼、街道名稱、單元/公寓號、城市、州/省、郵編、國家
2. 街道名稱首字母大寫(如"Main Street"而非"main street")
3. 州/省使用標準兩字母縮寫(如"CA"代表"California"或"加利福尼亞")
4. 國家名稱完整拼寫,首字母大寫
5. 郵編格式統一(美國為5位數或5+4位數,加拿大為A1A 1A1格式)**特殊情況處理:**
1. 縮寫擴展:- "St." → "Street"- "Ave." → "Avenue"- "Blvd." → "Boulevard"- "Apt." → "Apartment"2. 方向標識規范化:- "N" → "North"- "S" → "South"- "E" → "East"- "W" → "West"- 方向放在街道名稱之前(如"North Main Street")3. 單位/公寓號處理:- 統一格式為"Unit X"或"Apartment X"- 如果使用"#"符號,替換為"Unit"(如"#101" → "Unit 101")4. 多行地址合并:- 將多行地址合并為單行,組成部分之間用逗號分隔**輸出格式:**
標準化地址: [完整標準化地址]
組成部分:
- 街道: [街道號碼和名稱]
- 單元: [單元/公寓信息,如有]
- 城市: [城市名稱]
- 州/省: [標準化州/省縮寫]
- 郵編: [標準化郵編]
- 國家: [國家名稱]
請處理以下地址數據:[地址數據]
...
3. 格式一致性要求
技巧:強調輸出格式的一致性,提供格式驗證的標準。
解釋:格式一致性對于數據的可用性和可靠性至關重要。明確的一致性要求能幫助模型生成格式統一、結構規范的輸出,減少后續處理的復雜性。
示例:
// 低效
將這些日期轉換為標準格式。[日期列表]
...// 高效
請將以下各種格式的日期統一轉換為ISO 8601標準格式(YYYY-MM-DD)。轉換過程必須嚴格遵循以下一致性要求:**格式一致性要求:**
1. 所有日期必須使用連字符(-)作為分隔符,不使用斜杠(/)或點(.)
2. 年份必須使用4位數字表示(如"2023"而非"23")
3. 月份和日期必須使用2位數字表示,必要時補零(如"05"代表五月,而非"5")
4. 不包含時間部分,僅日期
5. 不使用任何本地化格式(如月份名稱)**驗證標準:**
1. 年份范圍: 1900-2099
2. 月份范圍: 01-12
3. 日期范圍: 根據月份和閏年規則確定(如4月為01-30)
4. 閏年規則: 能被4整除但不能被100整除,或能被400整除**特殊情況處理:**
1. 無效日期(如2月30日): 標記為"[無效日期]"并提供原始值
2. 含模糊月/日的日期(如04/05可能是4月5日或5月4日):- 美國格式假設為MM/DD- 其他地區格式假設為DD/MM- 在輸出中標注"[可能的歧義]"
3. 僅有月份和年份: 使用該月1日作為日期,并標注"[推斷日期]"
4. 未來日期: 正常轉換,但標注"[未來日期]"**輸出格式:**
原始日期: [原始輸入]
標準化日期: [YYYY-MM-DD格式]
備注: [任何特殊處理說明,如有]
請處理以下日期列表:[日期列表]
...
4. 可讀性與實用性平衡
技巧:指導在機器可讀性和人類可讀性間取舍,說明格式化的目的和用途。
解釋:不同的使用場景對數據格式有不同的要求。明確的可讀性與實用性平衡指導能幫助模型生成最適合特定用途的輸出格式,在機器處理效率和人類理解便利性之間找到最佳平衡點。
示例:
// 低效
格式化這些監控數據。[監控數據]
...// 高效
請將以下服務器監控數據格式化為既適合人類閱讀又便于程序處理的格式。這些數據將用于兩個目的:
1. 技術團隊的日常監控儀表板(人類閱讀)
2. 自動化警報系統的輸入(機器處理)**平衡要求:**
1. **人類可讀性需求:**- 關鍵指標應直觀可見- 數據應有層次結構,便于快速瀏覽- 異常值應有視覺上的強調- 時間序列數據應便于識別趨勢2. **機器可讀性需求:**- 結構一致,便于程序解析- 字段名稱統一且無歧義- 數值不含單位文本(單位在元數據中說明)- 時間戳格式標準化**推薦輸出格式:**
使用JSON格式,但增強其可讀性:
- 保持一致的縮進(2個空格)
- 關鍵字段放在對象開頭
- 相關字段分組
- 為異常值添加額外標記字段
- 包含元數據部分說明單位和閾值**示例平衡格式:**
```json
{"metadata": {"server_id": "srv-42","timestamp": "2023-06-15T14:30:00Z","units": {"cpu": "percent","memory": "GB","disk": "GB","network": "Mbps"},"thresholds": {"cpu_warning": 80,"memory_warning": 85,"disk_warning": 90}},"status": {"overall": "warning", // 人類可讀的總體狀態"has_alerts": true // 機器可處理的布爾標志},"metrics": {"cpu": {"usage": 87.5,"is_warning": true, // 便于機器處理的標志"cores": [{"id": 0, "usage": 75.2},{"id": 1, "usage": 92.8, "is_warning": true},{"id": 2, "usage": 88.4, "is_warning": true},{"id": 3, "usage": 93.6, "is_warning": true}]},"memory": {"total": 32,"used": 24.6,"free": 7.4,"usage_percent": 76.9},// 其他指標...}
}
請將以下監控數據轉換為符合上述平衡要求的格式:
[監控數據]
…
通過掌握這些數據格式化處理技巧,您可以更有效地引導大模型處理各種數據轉換、清洗和格式化任務,提高數據處理的準確性、一致性和實用性。## 九、高級技巧與最佳實踐掌握了基礎原則和場景化技巧后,我們可以進一步探索一些高級策略,以應對更復雜的挑戰,優化效率,并提升跨模型的適應性。### 1. Token優化策略Token是模型處理信息的單位,優化Token消耗不僅能降低成本,有時還能提高響應速度和質量。**技巧1:精簡表達**
- **說明**:使用簡潔明了的指令語言,避免不必要的寒暄、重復或修飾。直接切入主題,用最少的詞語表達清晰的意圖。
- **示例**:```plaintext// 低效 (相對冗長)請你作為一個專業的市場分析師,幫我分析一下當前電動汽車市場的最新趨勢,特別是關于電池技術和充電設施方面的發展,內容要詳細一點,給出你的看法。// 高效 (更精簡)作為市場分析師,分析當前電動汽車市場的關鍵趨勢,聚焦電池技術和充電設施。提供簡要見解。
技巧2:分步處理大型任務
- 說明:將復雜或長篇的任務分解為多個小步驟,每次只向模型請求一部分內容。這可以避免超出模型的上下文窗口限制,并允許在過程中進行調整。
- 示例 (概念性):
// Prompt 1: 任務分解 我要寫一份關于氣候變化對農業影響的綜合報告。請先幫我列出報告的主要章節大綱。// Prompt 2: 針對性生成 (基于大綱) 請詳細闡述大綱中的第二章:“氣候變化對主要糧食作物產量的影響”。引用至少兩項研究。// Prompt 3: 繼續生成 接下來,請撰寫第三章:“適應氣候變化的農業策略”。 ... (依此類推)
技巧3:上下文壓縮
- 說明:在需要提供大量背景信息時,使用摘要、關鍵信息列表或引用ID代替完整的長文本,減少輸入Token。
- 示例:
// 低效 (提供完整長篇報告) 基于以下[長篇市場研究報告全文],請總結消費者對新產品的反饋。 [報告全文...]// 高效 (提供報告摘要) 基于以下[市場研究報告摘要],請總結消費者對新產品的反饋。 [報告摘要...]
技巧4:利用模型記憶(如適用)
- 說明:在支持連續對話的模型中,利用其短期記憶能力,避免在后續Prompt中重復之前已提供的信息。直接引用之前的討論或結果。
- 示例:
// Prompt 1 分析A公司的SWOT。// Prompt 2 (低效,重復信息) 基于剛才對A公司的SWOT分析,請為A公司提出三條戰略建議。// Prompt 2 (高效,利用記憶) 基于剛才的SWOT分析,請為A公司提出三條戰略建議。
2. 跨模型兼容性技巧
不同的大模型有各自的特點和能力差異。編寫具有良好兼容性的Prompt,可以讓你在不同平臺間切換時,仍能獲得相對一致和有效的結果。
技巧1:聚焦通用核心能力
- 說明:專注于所有主流模型都具備的核心能力,如文本生成、總結、翻譯、基本推理等。避免依賴特定模型的專有功能、特殊語法或知識庫。
- 示例:
// 依賴特定模型功能 (可能不通用) 請使用[某模型特定]的知識圖譜功能,分析“人工智能”和“機器學習”的關系。// 通用指令 請解釋“人工智能”和“機器學習”這兩個概念的區別與聯系。用一個簡單的例子說明它們的關系。
技巧2:使用清晰、標準的自然語言
- 說明:使用結構清晰、語法規范、無歧義的自然語言指令。避免使用過于口語化、模糊或特定文化背景的表達。
- 示例:
// 低效 (模糊,依賴模型猜測) 給我弄點關于那個新電影的東西。// 高效 (清晰,標準) 請提供關于電影《[電影名稱]》的劇情簡介、主要演員列表和上映日期。
技巧3:提供明確的格式指導
- 說明:對于需要結構化輸出的任務,明確指定通用的格式(如Markdown、JSON、CSV),并提供清晰的模板。這比依賴模型自行決定格式更可靠。
- 示例:(參考數據格式化章節的示例)
技巧4:漸進式測試與調整
- 說明:在不同模型上測試同一個Prompt,觀察結果差異。根據需要進行微調,找到一個在多個模型上都能表現良好的“最大公約數”式Prompt。
3. 復雜任務拆解技巧
面對高度復雜的任務,直接用一個Prompt往往難以獲得理想結果。有效的任務拆解是關鍵。
技巧1:識別獨立子任務
- 說明:將復雜目標分解為一系列邏輯上獨立的、更小、更易于管理的子任務。每個子任務對應一個或多個具體的Prompt。
- 示例 (概念性):
// 復雜任務描述 創建一個簡單的在線待辦事項列表Web應用,前端使用React,后端使用Node.js和Express,數據存儲在內存中。// 優化后的拆解式Prompt (分步請求) // Prompt 1: 后端框架 請生成一個基礎的Node.js/Express服務器結構,包含一個用于管理待辦事項(增、刪、改、查)的API路由框架。數據暫時存儲在內存數組中。// Prompt 2: 前端組件 請生成一個React組件,用于顯示待辦事項列表,并包含添加新事項的輸入框和按鈕。// Prompt 3: API集成 請展示如何在React組件中使用fetch API調用后端創建的待辦事項管理API(獲取列表、添加新項)。 ... (后續可能涉及刪除、修改等)
技巧2:設計任務流程與依賴關系
- 說明:明確子任務之間的執行順序和依賴關系。前一個子任務的輸出可能作為后一個子任務的輸入。
- 示例:在上述Web應用示例中,必須先生成后端API框架,然后才能在前端組件中調用它。
技巧3:結果整合與驗證
- 說明:規劃如何將各個子任務的結果整合成最終的解決方案。在整合過程中進行驗證,確保各部分協同工作正常。
- 示例:生成后端代碼后,先本地運行測試API;生成前端代碼后,連接API進行集成測試。
技巧4:迭代反饋與修正
- 說明:在任務拆解的每個階段,都可能需要根據模型的輸出進行反饋和修正。將復雜任務視為一個多輪對話和協作的過程。
掌握這些高級技巧,能讓你在面對更復雜、更具挑戰性的任務時,依然能夠高效、靈活地利用大模型的能力,實現更宏偉的目標。
十、總結與資源推薦
恭喜您完成了這份大模型高效Prompt編寫指南!通過學習核心原則、掌握不同場景下的具體技巧,并了解高級策略,您現在應該具備了更強的能力來引導大模型生成高質量、符合預期的響應。
核心技巧回顧:
- 清晰性與具體性:始終明確您的指令,并提供足夠的上下文。
- 結構化思維:無論是輸入還是輸出,結構化都能提升效率和準確性。
- 場景化應用:針對不同任務(文本生成、信息提取、代碼、翻譯、角色扮演、數據處理)采用特定的優化策略。
- 迭代優化:將Prompt編寫視為一個持續改進的過程,通過反饋不斷完善。
- 效率與兼容性:關注Token優化和跨模型兼容性,提升實用價值。
- 任務拆解:面對復雜問題,學會將其分解為可管理的小步驟。
持續學習與實踐:
Prompt工程是一個不斷發展的領域。要保持領先,建議您:
- 持續實踐:在日常工作和學習中積極應用所學技巧,熟能生巧。嘗試解決真實世界的問題。
- 關注模型更新:各大模型平臺會不斷更新其模型能力和特性。了解這些更新,有助于您利用最新的功能。
- 閱讀社區分享:關注AI和Prompt工程相關的社區、博客和論壇(如Reddit的r/PromptEngineering、相關的技術博客等),學習他人的經驗和創意。
- 嘗試不同模型:體驗不同大模型的特點和優勢,了解它們的差異,有助于培養更通用的Prompt編寫能力。
- 保持好奇心:探索大模型的新應用場景,挑戰更復雜的任務,不斷拓展您與AI協作的可能性。
結語:
有效的Prompt是釋放大模型潛力的鑰匙。它不僅是一項技術技能,更是一種與智能體高效溝通的藝術。
祝在Prompt編寫的旅程中不斷進步,探索無限可能!