為什么現(xiàn)在已經(jīng)幾乎沒什么人戴墨鏡了?
小米邀請張震岳拍攝 YU7 廣告片,如何評價其中 4+2 的設(shè)定,和騎友真實出行場景有哪些差異?
成為頭號玩家吧!| 《頭號追擊》公測CG宣傳片,7月24日正式上線!
在AI產(chǎn)品落地過程中,提示詞(Prompt)的質(zhì)量直接決定了模型輸出的效果。本文系統(tǒng)介紹了如何利用Markdown、XML和JSON三種結(jié)構(gòu)化格式,設(shè)計清晰、可維護(hù)、可擴(kuò)展的“生產(chǎn)級”提示詞。
為什么要撰寫結(jié)構(gòu)化提示詞?
當(dāng)提示詞變得復(fù)雜,包含多重指令、大量上下文和具體示例時,一個扁平的、無結(jié)構(gòu)的文本塊會讓模型難以區(qū)分不同信息的優(yōu)先級。就像給員工下達(dá)一個冗長且毫無重點的口頭指令,很容易導(dǎo)致誤解和執(zhí)行偏差。
結(jié)構(gòu)化提示詞通過使用明確的分隔符、標(biāo)簽或語法,將提示詞分解為邏輯清晰的模塊。這帶來了幾個核心優(yōu)勢:
減少歧義:清晰地標(biāo)示出哪些是指令、哪些是上下文、哪些是用戶輸入,讓模型準(zhǔn)確理解每個部分的意圖。
提升指令遵循能力:當(dāng)任務(wù)被分解并結(jié)構(gòu)化呈現(xiàn)時,模型能更好地按步驟執(zhí)行,輸出結(jié)果更符合預(yù)期。
增強(qiáng)可維護(hù)性:結(jié)構(gòu)化的提示詞更易于團(tuán)隊成員理解、修改和復(fù)用,降低了長期維護(hù)的成本。
結(jié)構(gòu)化格式為何有效:從模型訓(xùn)練原理理解
要理解為什么Markdown、XML和JSON等格式對LLM特別有效,我們需要回歸到模型訓(xùn)練的本質(zhì)。LLM是通過學(xué)習(xí)海量互聯(lián)網(wǎng)文本數(shù)據(jù)中的統(tǒng)計規(guī)律來工作的。這些訓(xùn)練數(shù)據(jù)中,有相當(dāng)大一部分本身就是高度結(jié)構(gòu)化的。
數(shù)據(jù)基礎(chǔ):互聯(lián)網(wǎng)充滿了用HTML和XML構(gòu)建的網(wǎng)頁、用Markdown編寫的論壇帖子和文檔、以及在API通信中廣泛使用的JSON數(shù)據(jù)。
模式學(xué)習(xí):在訓(xùn)練過程中,模型已經(jīng)內(nèi)隱地學(xué)習(xí)到了這些結(jié)構(gòu)化標(biāo)記(如
、、”key”:“value”)所蘊(yùn)含的語義模式。例如,模型知道
標(biāo)簽內(nèi)的文本通常是標(biāo)題,標(biāo)簽內(nèi)的內(nèi)容是示例,而JSON的鍵值對結(jié)構(gòu)則代表了清晰的數(shù)據(jù)關(guān)系。
激活已知模式:因此,當(dāng)我們在提示詞中使用這些格式時,我們并非在教模型一種新語言,而是在“激活”它早已熟知的模式。這使得我們的指令意圖能夠被更準(zhǔn)確地捕捉,其效果遠(yuǎn)勝于一段普通的自然語言描述。這就像與一個熟悉圖表的人交流時,使用圖表會比純文字描述更高效。
Markdown:清晰易讀的首選
Markdown是一種輕量級標(biāo)記語言,因其簡潔、直觀的語法而廣受歡迎,是聯(lián)系撰寫結(jié)構(gòu)化提示詞的入門選擇。
優(yōu)勢:
高可讀性:使用#表示標(biāo)題,-或*表示列表,**text**表示加粗,使得提示詞的邏輯層次一目了然,無論是對人還是對AI都非常友好。
易于編寫和維護(hù):語法簡單,無需復(fù)雜的工具即可編寫。
提升指令遵循:研究和實踐表明,將指令格式化為項目符號列表(bulletpoints)能顯著提高LLM的指令遵循準(zhǔn)確率。
案例:使用Markdown重構(gòu)一個復(fù)雜的寫作任務(wù)
重構(gòu)前(非結(jié)構(gòu)化提示詞):
我需要你寫一個關(guān)于宇航員發(fā)現(xiàn)新行星的短篇故事。故事里要有一個會說話的外星人,一場太空戰(zhàn)斗,以及一個結(jié)局反轉(zhuǎn),揭示這一切都只是一個游戲。請把故事控制在500字以內(nèi)。
這個提示詞將所有要求混雜在一起,模型需要自行梳理。
重構(gòu)后(使用Markdown的結(jié)構(gòu)化提示詞):
通過使用Markdown的標(biāo)題和列表,我們將任務(wù)、角色、情節(jié)和約束條件清晰地分離開來,極大地降低了模型的理解難度,從而能夠生成更符合要求的高質(zhì)量內(nèi)容。
用XML重構(gòu)提示詞:實現(xiàn)語義結(jié)構(gòu)化
XML(ExtensibleMarkupLanguage)作為一種設(shè)計用于傳輸和存儲數(shù)據(jù)的標(biāo)記語言,核心優(yōu)勢在于自描述性和層次化結(jié)構(gòu)。
優(yōu)勢:
語義清晰:XML的標(biāo)簽結(jié)構(gòu)讓AI能夠更好地理解不同部分的作用和重要性。相比于純文本,XML提供了明確的語義邊界。
層次分明:復(fù)雜的提示詞往往包含多個層次的信息,XML的嵌套結(jié)構(gòu)完美契合這一需求。
易于解析:現(xiàn)代AI模型對XML格式有很好的理解能力,能夠準(zhǔn)確識別和處理結(jié)構(gòu)化信息。
如何用XML撰寫提示詞
XML指令使用“標(biāo)簽”進(jìn)行組織,每個指令部分都用一個開放標(biāo)簽(例如,)和一個相應(yīng)的閉合標(biāo)簽包裹起來。閉合標(biāo)簽在名稱前包含一個正斜杠。
這種結(jié)構(gòu)類似于打包搬家時的箱子,主標(biāo)簽是最大的箱子,而像“角色”、“目標(biāo)”和“任務(wù)”這樣的子部分則是嵌套在其中的較小的箱子。這種分層方法允許清晰的組織和模塊化,人類和AI都能輕松閱讀和處理。
基本結(jié)構(gòu)設(shè)計原則:
使用語義化的標(biāo)簽名稱
保持層次結(jié)構(gòu)的邏輯性
將不同類型的信息分離到不同標(biāo)簽中
使用屬性來添加元數(shù)據(jù)
建議在撰寫時通過縮進(jìn)嵌套標(biāo)簽來保持結(jié)構(gòu)化外觀。
JSON:連接AI與外部工具
JSON(JavaScriptObjectNotation)是一種輕量級的數(shù)據(jù)交換格式,在提示詞工程中,它主要用于實現(xiàn)一個強(qiáng)大的功能:函數(shù)調(diào)用(FunctionCalling)。
什么是函數(shù)調(diào)用?函數(shù)調(diào)用是一種讓LLM與外部工具或API進(jìn)行交互的能力。
當(dāng)用戶的請求需要模型自身知識庫之外的信息時,如實時天氣、公司內(nèi)部數(shù)據(jù)庫數(shù)據(jù)、執(zhí)行某個軟件操作。模型不會直接回答,而是會生成一個特定格式的JSON對象。這個JSON對象精確地描述了需要調(diào)用哪個函數(shù),以及需要傳遞什么參數(shù)。
通過在提示詞中明確要求LLM生成符合特定JSONSchema的輸出,能夠解決系統(tǒng)集成的“最后一公里“難題。
核心優(yōu)勢
可靠的機(jī)器解析:應(yīng)用后端可以直接將LLM返回的JSON字符串反序列化為對象或數(shù)據(jù)結(jié)構(gòu),無需任何脆弱的文本解析邏輯。這讓AI的輸出變得像調(diào)用一個傳統(tǒng)的、確定性的API一樣可靠。
無縫的系統(tǒng)集成:結(jié)構(gòu)化的JSON輸出可以直接用于填充數(shù)據(jù)庫、調(diào)用其他API、驅(qū)動前端UI渲染,或作為復(fù)雜工作流(AgenticWorkflows)中下一步的輸入。
精確的數(shù)據(jù)結(jié)構(gòu)定義:定義JSONSchema本身也是在向模型施加一種強(qiáng)大的邏輯約束,迫使其思考如何將分析結(jié)果填充到預(yù)設(shè)的字段中,這反過來也提升了輸出內(nèi)容的質(zhì)量和完整性。
示例數(shù)據(jù)提供:通過JSON格式的示例,模型能夠更好地理解期望的輸出格式。
工作流程
定義工具:在提示詞中,使用JSONSchema的格式向模型描述可用的外部函數(shù)(工具),包括函數(shù)名、功能描述和參數(shù)列表。
模型決策:模型分析用戶輸入,判斷是否需要調(diào)用某個已定義的函數(shù)來回答問題。
生成JSON:如果需要,模型會輸出一個包含函數(shù)名和參數(shù)的JSON對象。
應(yīng)用執(zhí)行:你的應(yīng)用程序代碼接收到這個JSON,解析它,并實際執(zhí)行相應(yīng)的API調(diào)用或函數(shù)。
返回結(jié)果:將函數(shù)執(zhí)行的結(jié)果返回給模型。
最終回復(fù):模型基于函數(shù)返回的結(jié)果,生成最終的自然語言回復(fù)給用戶。
案例:通過JSON實現(xiàn)工具調(diào)用
第一步:向模型描述工具,一般在提示詞中我們會提供一個工具列表。
說明這個工具是:
用來干什么的
需要調(diào)用這個工具的用戶輸入長什么樣
以及成功調(diào)用這個工具需要用到哪些字段
第二步:用戶提問用戶輸入:“張三的電話號碼和郵箱是什么”
第三步:模型生成JSON(函數(shù)調(diào)用)
模型不會直接回答,而是會返回一個tool_calls對象,其中包含以下JSON:
說明調(diào)用了人員查詢工具,輸入的字段為人名張三
第四步及之后:應(yīng)用程序代碼會調(diào)用真實的API,并將返回的人員信息
模型最后會根據(jù)返回信息生成對用戶的友好回復(fù):“張三的電話是13794785945,郵箱是zhangsan@123.com”
對于產(chǎn)品經(jīng)理和業(yè)務(wù)人員來說,理解函數(shù)調(diào)用至關(guān)重要。
它意味著LLM不再是一個封閉的知識庫,而是可以被授權(quán)訪問和操作任何外部數(shù)據(jù)和系統(tǒng)的“智能中樞”,這極大地擴(kuò)展了AI應(yīng)用的想象空間和商業(yè)價值。
偽白月光純愛文,《當(dāng)真》by阿阮有酒,高冷傲嬌金主×真狼狗偽綠茶
《海鹽味》作者:阿阮有酒 / 曖昧拉扯的神!看完太過癮了!
「重生文」《重生回來男朋友有對象了怎么辦?》by阿阮有酒