:角色約束輸出格式三件套與實(shí)戰(zhàn)指南)
簡(jiǎn)介這份《ChatGPT中文調(diào)教指南》面向希望系統(tǒng)掌握提示詞技巧的中文用戶無論是初次接觸大模型的職場(chǎng)人還是想提升日常效率的內(nèi)容創(chuàng)作者、開發(fā)者與研究者都能從中找到可直接套用的實(shí)戰(zhàn)范例。資源以單個(gè)PDF文檔形式打包壓縮包約694KB內(nèi)容圍繞中文環(huán)境下的對(duì)話調(diào)教展開涵蓋學(xué)術(shù)論文寫作、創(chuàng)意小說、商業(yè)文案、翻譯潤(rùn)色、數(shù)據(jù)分析、技術(shù)文檔、簡(jiǎn)歷求職信、SEO優(yōu)化、社交媒體運(yùn)營(yíng)等豐富場(chǎng)景并給出充當(dāng)Linux終端、英語翻譯改進(jìn)者、面試官、文字冒險(xiǎn)游戲等角色扮演式提示模板幫助讀者理解如何通過精準(zhǔn)指令讓模型輸出所需結(jié)果。目前已有700余人學(xué)習(xí)下載適合作為提示詞入門與進(jìn)階的參考手冊(cè)便于對(duì)照模仿、快速遷移到自身工作流中。1. 一份把 ChatGPT 當(dāng)“可編程工具”用的中文提示詞合集很多人第一次用 ChatGPT 寫東西都是直接甩一句“幫我寫篇論文”或者“給我翻譯一下”然后對(duì)著那坨四平八穩(wěn)、毫無個(gè)性的輸出發(fā)呆。問題不在模型在于你沒給它“角色”和“約束”。這份《ChatGPT 中文調(diào)教指南》本質(zhì)上就是一本提示詞模板庫(kù)它把“充當(dāng) Linux 終端”“擔(dān)任面試官”“作為專業(yè) DBA”“充當(dāng)花哨的標(biāo)題生成器”這類場(chǎng)景化的指令整理成了可以直接抄的素材。它解決的不是“ChatGPT 能干什么”這種科普問題而是“我到底該怎么開口才能讓它輸出我要的格式和內(nèi)容”。適合誰適合每天要寫文案、做翻譯、調(diào) SQL、設(shè)計(jì)接口文檔但又不想每次都從零構(gòu)思提示詞的從業(yè)者。你把它當(dāng)成一個(gè)“提示詞范文庫(kù)”來用比當(dāng)成教程讀效率高得多。2. 提示詞模板的底層邏輯角色、約束、輸出格式三件套2.1 為什么“充當(dāng) XX”比“幫我做 XX”有效語言模型在預(yù)訓(xùn)練階段見過大量“角色扮演”的文本當(dāng)你明確說“我想讓你充當(dāng)一名 Android 開發(fā)工程師面試官”模型會(huì)激活與“面試官”這個(gè)身份相關(guān)的語言模式提問方式、追問節(jié)奏、對(duì)候選人的評(píng)估口吻。而“幫我面試一個(gè)人”這種指令太模糊模型只能給你一段泛泛的面試建議而不是真的開始面試。這份指南里幾乎每一條模板都遵循同一個(gè)結(jié)構(gòu)先定義角色再給出行為約束最后指定輸出格式。比如“充當(dāng) Linux 終端”那條角色是終端約束是“只在一個(gè)唯一的代碼塊內(nèi)回復(fù)終端輸出不要寫解釋”輸出格式是代碼塊。這三者缺一不可。你只給角色不給約束模型會(huì)忍不住加一句“好的以下是命令輸出”你只給約束不給角色模型不知道用什么語氣和知識(shí)范圍來回應(yīng)。我一般會(huì)把這三件套理解成“給模型畫一個(gè)框”角色決定它從哪個(gè)知識(shí)庫(kù)里取素材約束決定它不能做什么輸出格式?jīng)Q定你拿到的東西能不能直接進(jìn)下游流程。很多新手覺得提示詞是玄學(xué)其實(shí)拆開看就是這三樣?xùn)|西的排列組合。2.2 從“寫小說”到“充當(dāng) SQL 終端”模板的分類與復(fù)用指南里的模板大致可以分成四類每類的復(fù)用方式不一樣類別代表模板復(fù)用方式創(chuàng)作生成類寫小說、充當(dāng)詩(shī)人、花哨標(biāo)題生成器替換主題詞和風(fēng)格描述角色模擬類面試官、心理醫(yī)生、脫口秀演員替換角色身份和對(duì)話開場(chǎng)白工具模擬類Linux 終端、SQL 終端、正則生成器直接使用只改輸入數(shù)據(jù)專業(yè)顧問類產(chǎn)品經(jīng)理、IT 架構(gòu)師、DBA替換業(yè)務(wù)背景和具體需求工具模擬類最省事因?yàn)榧s束已經(jīng)寫死了你只需要把命令或查詢語句換掉。創(chuàng)作生成類最需要調(diào)因?yàn)椤皩懸槐緭碛谐鋈艘饬辖Y(jié)局的推理小說”這種指令模型每次給你的東西質(zhì)量波動(dòng)很大你得在模板基礎(chǔ)上追加“不要出現(xiàn)尸體”“結(jié)局不要用夢(mèng)境解釋”這類負(fù)向約束。專業(yè)顧問類最容易被誤用。很多人直接復(fù)制“擔(dān)任產(chǎn)品經(jīng)理”那段然后說“幫我寫個(gè) PRD”結(jié)果模型輸出的 PRD 章節(jié)齊全但內(nèi)容空洞。原因是模板里雖然規(guī)定了章節(jié)標(biāo)題但沒給業(yè)務(wù)上下文。我一般會(huì)在模板后面補(bǔ)一段“背景是做一個(gè)面向中小企業(yè)的庫(kù)存管理 SaaS核心用戶是倉(cāng)庫(kù)管理員他們最痛的是盤點(diǎn)時(shí)找不到貨。”有了這段模型輸出的用戶故事和 KPI 才不是套話。2.3 把模板改造成可復(fù)用的提示詞片段直接復(fù)制粘貼模板只能解決一次性需求。如果你每天都要用“充當(dāng)英語翻譯和改進(jìn)者”這個(gè)角色每次都復(fù)制那一大段話很累。我的做法是把模板拆成變量存成一個(gè)文本片段用的時(shí)候只改變量。比如翻譯類模板可以拆成角色英語翻譯、拼寫校對(duì)和修辭改進(jìn)者 約束 - 識(shí)別輸入語言翻譯成英語 - 將簡(jiǎn)單詞匯替換為優(yōu)美高雅的表達(dá) - 僅回答更正和改進(jìn)的部分不寫解釋 輸出格式純文本無 Markdown 輸入{{待翻譯句子}}這樣你每次只需要填{{待翻譯句子}}。如果你用支持自定義指令的工具可以把這段存成快捷指令輸入/translate 今天天氣不錯(cuò)就直接觸發(fā)。再比如“充當(dāng)表格生成器”那條模板里寫死了“回復(fù)我十二生肖表”。你可以把它改成通用表格生成器角色表格生成器 約束 - 只回復(fù) Markdown 表格 - 不附帶任何解釋 - 表格行數(shù)由我指定 輸出格式Markdown 表格 輸入{{表名}}{{行數(shù)}}這樣你就能用它生成任何表格而不是只能生成十二生肖表。改模板的關(guān)鍵是把具體例子替換成變量占位符把“首先回復(fù)我 XX”這種一次性指令刪掉。3. 高頻場(chǎng)景實(shí)戰(zhàn)翻譯、SQL、面試官與內(nèi)容創(chuàng)作3.1 翻譯與潤(rùn)色從“英翻中”到“英英詞典”指南里翻譯相關(guān)的模板有三條充當(dāng)英語翻譯和改進(jìn)者、充當(dāng)英翻中、充當(dāng)英英詞典。這三條對(duì)應(yīng)三種不同的翻譯需求很多人混著用結(jié)果拿到的輸出不符合預(yù)期?!俺洚?dāng)英語翻譯和改進(jìn)者”適合你寫了一段英文但不確定是否地道想讓模型幫你改得更優(yōu)雅。它的約束是“僅回答更正和改進(jìn)的部分”所以你不會(huì)拿到一整段重新翻譯的文本而是拿到修改點(diǎn)。比如你輸入 “how are you ?”它可能回復(fù) “How are you?” 并指出首字母大寫和空格問題?!俺洚?dāng)英翻中”適合把英文內(nèi)容翻譯成中文約束是“不要帶翻譯腔要自然流暢地道”。這條模板的關(guān)鍵在于“不要帶翻譯腔”這個(gè)負(fù)向約束。如果你不加這句模型很容易輸出“你好嗎”這種雖然正確但生硬的翻譯。加上之后它可能會(huì)輸出“最近怎么樣”更符合中文口語習(xí)慣。“充當(dāng)英英詞典”適合查單詞輸出格式是“中文翻譯 英文釋義 一個(gè)例句”。這條模板的約束是“檢查所有信息是否準(zhǔn)確保持簡(jiǎn)潔”。我實(shí)測(cè)下來它對(duì)常用詞的解釋比較可靠但遇到專業(yè)術(shù)語或俚語時(shí)英文釋義部分偶爾會(huì)編。所以我會(huì)追加一句“如果不確定釋義請(qǐng)標(biāo)注‘不確定’而不是猜測(cè)?!边@三條模板可以組合使用。我一般的工作流是先用英英詞典查生詞再用英翻中處理段落最后用翻譯和改進(jìn)者潤(rùn)色自己寫的英文郵件。三步走下來比單獨(dú)用任何一個(gè)模板效果都好。3.2 SQL 與數(shù)據(jù)庫(kù)讓模型扮演專業(yè) DBA“作為專業(yè) DBA”這條模板在指南里給了一個(gè)具體的表結(jié)構(gòu)CREATE TABLE user ( id int NOT NULL AUTO_INCREMENT, name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT COMMENT 名字, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;然后需求是“根據(jù)用戶的名字查詢用戶的 id”。這條模板的價(jià)值在于它展示了如何把表結(jié)構(gòu)和需求一起喂給模型。很多人只給需求不給表結(jié)構(gòu)模型只能給你一個(gè)泛泛的SELECT id FROM user WHERE name xxx但不知道你的表名、字段名、字符集。給了表結(jié)構(gòu)之后模型能生成完全可執(zhí)行的 SQL還能根據(jù)索引情況給優(yōu)化建議。我一般會(huì)把這條模板擴(kuò)展成多輪對(duì)話。第一輪給表結(jié)構(gòu)和簡(jiǎn)單查詢第二輪追加“如果 name 字段沒有索引查詢 100 萬行數(shù)據(jù)時(shí)怎么優(yōu)化”第三輪再問“如果我要按名字模糊搜索怎么寫 SQL 和索引”。這樣模型會(huì)沿著同一個(gè)數(shù)據(jù)庫(kù)上下文深入而不是每次重新開始。注意一點(diǎn)模型生成的 SQL 語法正確但不一定符合你數(shù)據(jù)庫(kù)的版本特性。比如它可能給你SELECT TOP 10 * FROM Products這是 SQL Server 的語法MySQL 里要用LIMIT 10。所以拿到 SQL 后先在你的測(cè)試庫(kù)跑一遍別直接上生產(chǎn)。3.3 面試官與模擬對(duì)話用約束控制交互節(jié)奏“擔(dān)任面試官”這條模板的約束寫得很細(xì)“不要一次寫出所有的問題”“只對(duì)我進(jìn)行采訪”“問我問題等待我的回答”“不要寫解釋”。這幾條約束的目的是把模型從“問答機(jī)器”變成“對(duì)話參與者”。如果你不加“不要一次寫出所有問題”模型會(huì)一口氣列 10 個(gè)面試題然后你只能一個(gè)個(gè)回答失去了模擬面試的交互感。加上之后它會(huì)問一個(gè)問題等你回答再根據(jù)你的回答追問。這才是面試的真實(shí)節(jié)奏。我一般會(huì)在這條模板后面追加“如果我的回答過于簡(jiǎn)短請(qǐng)追問細(xì)節(jié)如果我的回答有明顯錯(cuò)誤請(qǐng)指出并繼續(xù)下一個(gè)問題?!边@樣模型不只是走流程還會(huì)根據(jù)你的表現(xiàn)調(diào)整難度。類似的交互類模板還有“文字冒險(xiǎn)游戲”“下五子棋”“扮演脫口秀喜劇演員”。這類模板的共同點(diǎn)是它們都要求模型維護(hù)一個(gè)狀態(tài)棋盤、故事進(jìn)度、對(duì)話歷史并且根據(jù)你的輸入更新狀態(tài)。用這類模板時(shí)最好在每輪對(duì)話開頭提醒模型“當(dāng)前棋盤狀態(tài)是 XX”或“故事進(jìn)展到 XX”否則模型可能會(huì)忘記之前的上下文。3.4 內(nèi)容創(chuàng)作與 SEO模板的邊界在哪里指南里內(nèi)容創(chuàng)作相關(guān)的模板最多寫小說、寫新聞稿、寫廣告文案、寫旅游文案、寫醫(yī)療文案、寫兒童讀物。這些模板的寫法大同小異都是“角色 主題 風(fēng)格要求”。但實(shí)際用下來不同領(lǐng)域的輸出質(zhì)量差異很大。小說和故事類模板效果最好因?yàn)槟P驮陬A(yù)訓(xùn)練時(shí)見過大量敘事文本你給一個(gè)“出人意料結(jié)局的推理小說”的指令它能編出一個(gè)結(jié)構(gòu)完整的故事。但醫(yī)療文案和金融分析類模板就要小心模型可能會(huì)生成看似專業(yè)但實(shí)際不準(zhǔn)確的內(nèi)容。比如“充當(dāng) AI 輔助醫(yī)生”那條它給的診斷建議不能作為醫(yī)療依據(jù)。我一般會(huì)把內(nèi)容創(chuàng)作類模板分成“創(chuàng)意型”和“事實(shí)型”。創(chuàng)意型小說、詩(shī)歌、廣告語可以放心用輸出不滿意就重新生成。事實(shí)型醫(yī)療、法律、金融只能用來做初稿或思路整理所有事實(shí)性內(nèi)容必須人工核實(shí)。SEO 類模板有個(gè)隱藏坑模型不知道你的目標(biāo)關(guān)鍵詞搜索量和競(jìng)爭(zhēng)度。你讓它“優(yōu)化 SEO”它只能給你一些通用建議比如“在標(biāo)題中包含關(guān)鍵詞”“使用 H2 標(biāo)簽”。真正有效的 SEO 優(yōu)化需要結(jié)合關(guān)鍵詞工具和競(jìng)品分析模型只能幫你寫 meta description 和文章結(jié)構(gòu)。4. 避坑與排查模板用不對(duì)的五個(gè)典型翻車現(xiàn)場(chǎng)4.1 模型不按格式輸出代碼塊里混入解釋現(xiàn)象你用了“充當(dāng) Linux 終端”模板要求“只在一個(gè)唯一的代碼塊內(nèi)回復(fù)終端輸出”但模型還是在代碼塊外面加了“好的以下是輸出”或者代碼塊里面混入了# 這是命令輸出這樣的注釋。原因模型在訓(xùn)練時(shí)見過大量“代碼塊 解釋”的文本它的默認(rèn)行為就是加解釋。你的約束雖然寫了“不要寫解釋”但模型可能認(rèn)為“好的”不算解釋。解決把約束寫得更絕對(duì)。不要寫“不要寫解釋”寫“你的回復(fù)必須且只能包含一個(gè)代碼塊代碼塊之外不允許有任何字符包括空格和換行”。另外可以在輸入末尾加一句“如果你理解了請(qǐng)只回復(fù)‘已就緒’不要回復(fù)其他內(nèi)容”。這樣模型會(huì)用“已就緒”確認(rèn)而不是直接開始輸出。4.2 角色扮演中途“出戲”模型開始用第三人稱現(xiàn)象你讓模型“扮演唐三藏”前幾輪對(duì)話它還用“貧僧”自稱聊了五六輪之后突然變成“唐三藏可能會(huì)說……”或者“作為 AI我不能……”原因模型的上下文窗口有限對(duì)話輪次多了之后早期的角色設(shè)定被稀釋了。另外如果用戶輸入的內(nèi)容觸發(fā)了模型的安全對(duì)齊機(jī)制它會(huì)主動(dòng)跳出角色。解決每 3 到 5 輪對(duì)話后在輸入末尾追加一句“請(qǐng)繼續(xù)保持唐三藏的角色用‘貧僧’自稱不要跳出角色”。如果模型已經(jīng)出戲重新發(fā)一條“你現(xiàn)在的角色是唐三藏請(qǐng)用唐三藏的語氣重新回答上一個(gè)問題”。4.3 翻譯模板輸出“翻譯腔”嚴(yán)重現(xiàn)象用了“充當(dāng)英翻中”模板要求“不要帶翻譯腔”但輸出還是“這是一個(gè)好主意我認(rèn)為我們應(yīng)該去做它”這種英文語序的中文。原因模型在翻譯時(shí)會(huì)優(yōu)先保證語義準(zhǔn)確然后才考慮流暢度。如果你的輸入句子結(jié)構(gòu)復(fù)雜它可能先直譯再潤(rùn)色潤(rùn)色不徹底就留下了翻譯腔。解決在模板里加一個(gè)“兩步走”約束“第一步直譯并標(biāo)注出不符合中文習(xí)慣的部分第二步只輸出潤(rùn)色后的中文不要輸出直譯部分?!边@樣模型會(huì)先識(shí)別問題再修改比直接要求“不要翻譯腔”更有效。4.4 SQL 模板生成的語句在目標(biāo)數(shù)據(jù)庫(kù)跑不通現(xiàn)象模型生成了SELECT TOP 10 * FROM Products ORDER BY Id DESC但你的數(shù)據(jù)庫(kù)是 MySQL不支持TOP。原因模型在訓(xùn)練時(shí)見過各種數(shù)據(jù)庫(kù)的 SQL 方言它默認(rèn)可能偏向 SQL Server 或 PostgreSQL。你的模板里沒有指定數(shù)據(jù)庫(kù)類型。解決在模板開頭加一句“我的數(shù)據(jù)庫(kù)是 MySQL 8.0請(qǐng)使用 MySQL 語法”。如果已經(jīng)生成了錯(cuò)誤語句把報(bào)錯(cuò)信息貼回去讓模型修正。我一般會(huì)在模板里寫死“使用 LIMIT 而不是 TOP使用 NOW() 而不是 GETDATE()”。4.5 表格生成器輸出的表格列數(shù)不對(duì)現(xiàn)象你要求“生成一個(gè) 5 列的表格”模型輸出了 6 列或者 4 列。原因模型對(duì)“列”的理解可能和你不一致。比如你說“5 列”它可能把序號(hào)列也算進(jìn)去或者把表頭不算進(jìn)去。解決在模板里明確定義列名和列順序。不要只說“5 列”要說“表格包含以下列姓名、年齡、城市、職業(yè)、郵箱按這個(gè)順序排列不要添加序號(hào)列”。這樣模型沒有發(fā)揮空間輸出就穩(wěn)定了。5. 進(jìn)階技巧把模板串成工作流用變量和校驗(yàn)兜底單條模板只能解決單點(diǎn)問題。真正提效的做法是把多條模板串成一個(gè)工作流。比如你要寫一篇技術(shù)博客可以這樣串第一步用“充當(dāng)花哨的標(biāo)題生成器”生成 5 個(gè)候選標(biāo)題。第二步用“充當(dāng) SEO 優(yōu)化師”從 5 個(gè)標(biāo)題里選一個(gè)關(guān)鍵詞覆蓋最好的。第三步用“充當(dāng)技術(shù)文檔撰寫者”寫大綱。第四步用“充當(dāng)英語翻譯和改進(jìn)者”潤(rùn)色每一段。第五步用“充當(dāng)表格生成器”把參數(shù)整理成表格。這個(gè)流程里每一步的輸出都是下一步的輸入。我一般會(huì)把每一步的提示詞存成單獨(dú)的文本片段用的時(shí)候按順序調(diào)用。如果你用 API可以把這些片段寫成 system prompt然后用代碼把上一步的輸出拼到下一步的 user prompt 里。# 偽代碼串行調(diào)用多個(gè)提示詞模板 templates { title: 你是一個(gè)花哨的標(biāo)題生成器根據(jù)關(guān)鍵詞生成 5 個(gè)標(biāo)題{keywords}, outline: 你是一個(gè)技術(shù)文檔撰寫者根據(jù)標(biāo)題寫大綱{title}, polish: 你是一個(gè)英語翻譯和改進(jìn)者潤(rùn)色以下段落{paragraph} } def workflow(keywords): titles call_llm(templates[title].format(keywordskeywords)) best_title titles.split(\n)[0] # 簡(jiǎn)化處理實(shí)際可以用模型選 outline call_llm(templates[outline].format(titlebest_title)) polished call_llm(templates[polish].format(paragraphoutline)) return polished這段代碼的關(guān)鍵是call_llm函數(shù)它負(fù)責(zé)把模板和變量拼成完整的提示詞發(fā)給模型拿回結(jié)果。參數(shù)說明templates字典存模板format方法填變量workflow函數(shù)按順序調(diào)用。實(shí)際使用時(shí)你需要在每一步加校驗(yàn)比如標(biāo)題生成后檢查是否有 5 個(gè)大綱生成后檢查是否有三級(jí)標(biāo)題。校驗(yàn)這一步很多人省掉結(jié)果模型某一步輸出格式不對(duì)后面全亂。我一般會(huì)在每一步后面加一個(gè)“格式檢查”提示詞“請(qǐng)檢查以下內(nèi)容是否符合 XX 格式如果不符合請(qǐng)修正后重新輸出?!边@樣即使模型某一步跑偏也能自動(dòng)拉回來。還有一個(gè)技巧是“反向提示”。當(dāng)你不知道怎么寫約束時(shí)先讓模型生成一版然后問它“你剛才的輸出有哪些地方可能不符合我的要求”模型會(huì)自己列出問題你再把這些問題的反面寫成約束。比如它說“我可能加了不必要的解釋”你就加一條“不要加任何解釋”。這比你自己想約束快得多。從那以后我每次用新模板都先跑一輪“生成 自檢 修正”確認(rèn)輸出穩(wěn)定了再存成快捷指令。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取