:AI藝術與ChatGPT提示工程實戰(zhàn))
簡介《AI藝術與ChatGPT提示工程指南》圍繞提示工程與AI藝術創(chuàng)作展開面向對ChatGPT對話式提示和Midjourney等繪圖工具感興趣的初學者及進階讀者幫助其從零理解提示的構成與設計邏輯。全書從提示工程基礎講起依次討論負提示與零提示、ReAct提示、Midjourney等工具的AI藝術提示設計、迭代式提示細化以及語言與意象在提示中的作用并附Leonardo應用案例與示例提示兼顧方法框架與實操參考。資源包為1個PDF文件約2.31MB體積輕便便于在電腦或移動端隨時查閱。目前已有69人學習適合希望系統(tǒng)梳理提示工程知識、提升AI藝術出圖與對話質量的讀者按章節(jié)研讀和查閱。1. 同一句提示跑十次出十個結果問題多半不在模型有人把「賽博朋克城市超好看」丟進 Midjourney十次出十張風格不一的圖于是判斷模型不穩(wěn)定。拆開看這句提示里主體只有一個模糊名詞沒有風格錨點、沒有鏡頭語言、沒有負向約束模型每次都在合法解空間里隨機采樣。這份《AI藝術與ChatGPT提示工程指南》講的就是把「碰運氣」變成可重復流程提示工程的三層骨架、零提示與負提示的邊界、ReAct 任務鏈、Midjourney 與 Leonardo 的出圖參數(shù)以及 ChatGPT 多輪對話里的迭代式細化。適合已經(jīng)能用工具出圖、但結果不可控的人也適合要把提示交給團隊復用的從業(yè)者。下面按「骨架—任務鏈—出圖參數(shù)—排查—驗收」的順序拆。2. 提示的三層骨架主體、修飾符、固化劑怎么分工原書第一章把提示拆成幾個可命名的部件主體subject、修飾符modifier、固化劑solidifier再加上變體提示和負提示。這個拆法看著樸素落地時非常管用因為它把「寫一句好提示」變成了「填幾個槽位」。我一般會先把一句自然語言提示按這三層切開再決定哪一層需要動、哪一層必須鎖死。切開之后你會發(fā)現(xiàn)大部分翻車都發(fā)生在修飾符互相打架而不是主體寫錯。2.1 主體提示把「想要什么」壓縮成一個可檢索的名詞短語主體是提示里承擔核心語義的那部分可以是人、地點、物體也可以是一個動作場景。原書強調定義主體時要同時想清楚兩件事你要達到什么目標以及看結果的人會怎么理解它。這兩句話翻譯成操作就是主體必須能被模型映射到訓練數(shù)據(jù)里存在的視覺或語義概念不能是一個只有你自己懂的抽象詞。我習慣用一個「三問壓縮法」處理主體。第一問這個東西的最小可識別名詞是什么第二問它處于什么狀態(tài)或環(huán)境第三問哪些限定詞是必須保留、刪掉就變味的。比如「一個很酷的機器人」經(jīng)過三問會變成「a rusted industrial robot with exposed hydraulic joints, standing in a flooded factory」主體從形容詞堆砌變成了可渲染的實體加環(huán)境。# subject_slots.py # 主體拆成三個槽位避免把狀態(tài)和環(huán)境混進名詞里 SUBJECT { entity: a rusted industrial robot, # 最小可識別名詞 state: exposed hydraulic joints, one arm missing, # 狀態(tài)限定 context: standing in a flooded factory, # 環(huán)境限定 } def build_subject(slots): # 用逗號連接順序固定為實體→狀態(tài)→環(huán)境 return , .join(v for v in slots.values() if v) print(build_subject(SUBJECT)) # 輸出a rusted industrial robot, exposed hydraulic joints, one arm missing, standing in a flooded factory這段代碼的價值不在拼字符串而在強制你把「實體」和「狀態(tài)」分開。實體槽位負責讓模型認出畫什么狀態(tài)槽位負責控制差異環(huán)境槽位負責構圖背景。參數(shù)上entity盡量控制在 5 個詞以內超過之后模型對前置詞的注意力會被稀釋state一次只寫一到兩個特征寫三個以上容易出現(xiàn)肢體錯亂context決定畫面縱深室內場景建議帶上材質或光源線索。主體寫完之后要做一次「可檢索性檢查」把主體短語單獨丟進搜索引擎或圖庫如果能搜到大量同類圖說明模型大概率認識如果搜出來全是無關內容說明這個詞是你自造的需要換成更通用的說法。這個動作花不了一分鐘但能省掉后面反復抽卡的時間。2.2 修飾符提示用形容詞和限定詞收窄輸出空間修飾符是加在主體上的額外詞或短語作用是提供上下文、清晰度和特異性。原書舉的例子很典型把「全球變暖」改成「全球變暖的原因和解決方案」輸出就從泛泛而談變成了兩面分析。修飾符的本質是給模型一個更窄的采樣區(qū)間而不是給它更多形容詞。落到 AI 藝術出圖上我通常把修飾符分成四個槽位風格、媒介材質、光照色彩、鏡頭構圖。每個槽位只放一個主取值最多加一個補充取值。四個槽位全填滿提示長度大約在 25 到 40 個詞之間這個區(qū)間對 Midjourney 和 Leonardo 都比較友好。槽位作用示例取值常見錯誤風格定整體調性cinematic concept art、editorial illustration同時寫三種風格互相稀釋媒介材質定表面質感oil on canvas、35mm film scan、brushed aluminum和風格槽位語義重復光照色彩定氛圍cold dawn light、warm 2700K lamp light光源方向前后矛盾鏡頭構圖定視角與景別wide shot、macro、low angle與主體尺度沖突比如微距拍建筑修飾符最容易翻車的地方是「堆」。有人覺得多寫幾個風格詞總有一個能命中實際結果是模型把幾種風格平均成一個四不像。我的血淚經(jīng)驗是風格槽位只留一個主詞想試第二種風格就另開一條變體提示不要在同一個提示里做風格融合。真要融合也要寫成「A 為主B 只影響材質」這種帶主次的表述。# modifier_slots.py # 四個修飾符槽位每個槽位一個主值加一個可選補充值 MODIFIERS { style: [cinematic concept art, muted color palette], medium: [35mm film scan, visible grain], light: [cold dawn light, volumetric fog], camera: [wide shot, shallow depth of field], } def flatten_modifiers(mods): # 按槽位順序展開保證每次拼裝語序一致 result [] for slot in (style, medium, light, camera): result.extend(mods.get(slot, [])) return , .join(result) print(flatten_modifiers(MODIFIERS))flatten_modifiers里把槽位順序寫死是為了讓提示可復現(xiàn)。Midjourney 和多數(shù)文生圖工具對前置詞更敏感風格放在最前面、鏡頭放在最后出來的畫面穩(wěn)定性明顯好于隨機順序。參數(shù)上每個槽位列表長度建議不超過 2總修飾符數(shù)量控制在 8 個以內超過 10 個之后新增的詞基本是在互相搶權重畫質不會提升構圖反而更容易散。2.3 固化劑與變體讓輸出穩(wěn)定在可復用模板上固化劑是原書里容易被忽略的一節(jié)它指的是提示末尾那組用來「錨住」質量的詞比如 high detail、consistent composition、neutral color grading。這些詞單獨看很虛但它們在提示結構里承擔的是收尾和穩(wěn)定作用相當于給模型的輸出畫一條底線。我一般把固化劑控制在 3 到 5 個詞放在提示最后不參與風格競爭。變體提示則是在主體和固化劑不變的前提下只替換一個修飾符槽位。這樣每次只動一個變量你才能判斷到底是哪個詞導致了畫面變化。很多人做迭代式細化時一次改三四個詞最后出圖變好了也不知道是誰的功勞變差了也找不到原因這就是典型的黑匣子式調參。# 提示模板庫的目錄結構按主體分目錄按版本存文件 prompts/ ├── lighthouse/ │ ├── v01_subject.txt # 只寫主體 │ ├── v02_modifiers.txt # 加修飾符 │ ├── v03_solidifier.txt # 加固化劑 │ └── runs.csv # 每次跑圖的參數(shù)與人工評分 └── robot_factory/ ├── v01_subject.txt └── runs.csv目錄結構看著簡單但它解決的是「提示寫完就丟」的問題。每個主體一個目錄版本號遞增runs.csv記錄種子、參數(shù)和評分。下次要復現(xiàn)某張圖直接按版本號找文件不用翻聊天記錄。參數(shù)命名上v01到v03對應骨架搭建的三個階段后面做變體就從v03a、v03b分支不要覆蓋原文件。固化劑還有一個用法是跨工具遷移。Midjourney 和 Leonardo 的語法不同但「高質量、構圖完整、色彩克制」這組語義是通用的。我會把這組詞單獨存一個solidifier.txt換工具時只改參數(shù)和負向詞固化劑直接復用。這樣同一套審美底線能在不同工具之間保持一致不至于換個平臺就完全變味。3. 從零提示到 ReAct把單輪指令升級成任務鏈零提示、負提示、ReAct 是原書里跨度最大的三節(jié)分別對應「不給例子」「給反向約束」「給多步推理結構」。這三樣不是越高級越好而是各有適用邊界。用錯場景的代價很直接零提示處理格式任務會得到一堆自由發(fā)揮負提示堆太多會擠占正向語義ReAct 用在單步問答上純屬浪費 token。3.1 零提示的適用邊界與觸發(fā)條件零提示就是不給示例、不給拆解直接把任務丟給模型。它適合三類場景開放式頭腦風暴、通用文案改寫、格式要求寬松的問答。比如「給這個產(chǎn)品寫五條賣點」零提示往往比給一堆示例更自然因為示例會限制模型的表達多樣性。但零提示有兩個明確的失效邊界。第一是格式嚴格的任務比如要求輸出固定字段的 JSON、固定列數(shù)的表格零提示下模型會自由增減字段。第二是專業(yè)術語密集的任務模型不知道你所在團隊的縮寫含義零提示會按大眾語料去猜。這兩個邊界不需要復雜方案加一條格式約束或一個字段說明就能解決。# zero_prompt_guard.py # 零提示加一條最小格式約束避免輸出自由發(fā)揮 PROMPT 任務為這款便攜投影儀寫三條賣點。 約束 1. 每條不超過 20 個字。 2. 必須包含一個具體參數(shù)沒有參數(shù)就寫“參數(shù)待補”。 3. 只輸出三條不要解釋。 print(PROMPT)這段模板的關鍵在第三條「只輸出三條不要解釋」。零提示翻車最多的情況不是內容差而是模型附贈一段「希望以上對你有幫助」。加一句硬約束輸出立刻干凈。參數(shù)上約束條數(shù)控制在 3 條以內超過之后模型會開始丟約束每條約束只寫一個要求不要把「不超過 20 字且包含參數(shù)且語氣活潑」塞進同一條。零提示還有一個隱性成本結果不可回歸。同一句提示今天跑和下周跑輸出可能完全不同。所以我在需要復現(xiàn)的任務里不用純零提示至少加一條固化約束或一個輸出模板。這個習慣是從一次對客演示翻車之后養(yǎng)成的當時現(xiàn)場重跑同一句提示輸出風格完全變了場面很尷尬。3.2 負提示寫「不要什么」比寫「要什么」更難負提示在兩個場景里最有用文生圖里排除不想要的元素對話模型里排除不想要的表達方式。Midjourney 用--no參數(shù)接負向詞Stable Diffusion 系工具用單獨的 Negative Prompt 輸入框Leonardo 也是分欄填寫。語法不同但邏輯一樣負向詞是在采樣時降低對應概念的權重不是硬性禁止。負向詞我一般分四類管理每類只留最必要的兩三個。文字水印類text、watermark、signature幾乎每次都要帶解剖錯誤類extra fingers、deformed hands在人像和手部特寫時帶風格污染類oversaturated、cluttered background在需要干凈畫面時帶構圖干擾類cropped head、out of frame在全身構圖時帶。負向類別典型詞適用場景不建議文字水印text、watermark、logo所有出圖任務一次寫十幾個同義詞解剖錯誤extra fingers、deformed hands人像、手部特寫全身遠景也堆手部詞風格污染oversaturated、noisy background需要干凈背景與正向風格詞沖突構圖干擾cropped、out of frame全身、建筑全景微距場景使用負提示最常見的誤用是「越多越安全」。Midjourney 的--no后面跟的詞同樣占用解析預算堆二十個負向詞正向提示的權重會被明顯稀釋畫面變得保守、灰、沒有重點。我的做法是負向詞總數(shù)不超過 6 個而且每次只加當前批次真正出問題的詞不加「預防性」的詞。注意負提示不是所有工具都等效。Midjourney 的--no對具體物體有效對抽象風格詞效果有限Stable Diffusion 的 Negative Prompt 權重更強寫多了容易把畫面壓死。換工具時負向詞要重新測不能直接照搬。3.3 ReAct 提示的四段式結構與一個可抄的模板ReAct 的核心是「推理 行動」交替模型先寫一段思考說明下一步為什么這么做再選擇一個動作去執(zhí)行拿到觀察結果后繼續(xù)下一輪。它適合需要多步檢索、多工具調用、或者需要展示中間過程的任務比如資料匯總、故障排查、多條件篩選。單步問答用 ReAct 只會讓輸出變長不會變準。我把 ReAct 提示固定成四段角色與目標、可用動作清單、思考-行動-觀察循環(huán)規(guī)則、終止條件。四段缺一不可缺動作清單模型會自己編工具缺終止條件模型會無限循環(huán)缺循環(huán)規(guī)則模型會一次性把答案寫完、不走中間步驟。# react_prompt.py REACT_TEMPLATE 你是一個{role}。 目標{goal} 可用動作每次只能選一個 {actions} 執(zhí)行規(guī)則 1. 每輪先輸出“思考”說明下一步理由不超過兩句話。 2. 再輸出“動作”加動作名和參數(shù)。 3. 收到“觀察”后進入下一輪最多{n}輪。 4. 信息足夠時輸出“結論”并停止不要再調用動作。 終止條件{stop_condition} prompt REACT_TEMPLATE.format( role設備故障排查助手, goal根據(jù)現(xiàn)象定位故障模塊給出可執(zhí)行的檢查順序, actions\n.join([ - check_power檢查供電與指示燈狀態(tài), - read_log讀取最近 50 條錯誤日志, - test_module對指定模塊做單點測試, ]), n6, stop_condition定位到具體模塊或連續(xù)兩輪觀察無新增信息, ) print(prompt)這個模板里actions用列表展開而不是寫成一整段是為了讓模型把每個動作當成獨立可選對象減少「自己發(fā)明工具」的概率。n6是輪數(shù)上限實測超過 6 輪之后模型容易開始重復已執(zhí)行的動作stop_condition必須寫成可判斷的條件不能寫「找到答案為止」這種模糊表述。ReAct 最容易踩的坑是把「思考」寫成長篇解釋。規(guī)則里限定「不超過兩句話」很關鍵思考一長模型會把本該放在動作里的信息提前說完后面就不執(zhí)行動作了。另一個坑是動作參數(shù)沒定義清楚比如test_module不說測哪個模塊模型會傳一個不存在的參數(shù)名。動作清單里每個動作后面跟一句參數(shù)說明能省掉大半解析錯誤。4. Midjourney 與 LeonardoAI 藝術提示的參數(shù)化寫法AI 藝術提示和對話提示最大的區(qū)別是它不只靠詞還靠參數(shù)。同一句描述畫幅、風格化強度、隨機度、種子不同出來的圖差一個量級。原書用 Midjourney 和 Leonardo 兩個工具做示例這兩個工具的提示結構剛好代表兩種流派Midjourney 是「一行流 尾綴參數(shù)」Leonardo 是「分欄表單 獨立負向框」。把兩種結構都摸一遍換到別的工具也能快速映射。4.1 Midjourney 提示的語序與權重槽位Midjourney 的提示是一行文本參數(shù)用--接在末尾。語序上越靠前的詞權重越高所以主體必須放在最前面風格、光照、鏡頭依次往后參數(shù)永遠放最后。很多人把--ar 16:9寫在開頭結果參數(shù)被當成普通文本解析畫幅根本沒生效。# mj_builder.py def mj_prompt(subject, scene, style, light, params): # 語序固定主體 → 場景 → 風格 → 光照 → 參數(shù) body , .join([subject, scene, style, light]) return f{body} {params} prompt mj_prompt( subjecta lone astronaut, scenestanding in a flooded library, floating books, styleanalog film photography, muted teal palette, lightsoft window light from the left, params--ar 3:2 --stylize 250 --chaos 10 --no text, watermark --seed 8842, ) print(prompt)參數(shù)說明直接決定復現(xiàn)能力。--ar 3:2定畫幅橫向場景別用豎幅--stylize 250是風格化強度數(shù)值越高畫面越「好看」但越偏離提示做概念圖我一般放在 100 到 300 之間--chaos 10控制多樣性做變體探索時調到 20 到 40做定稿復現(xiàn)時壓到 0 到 10--no后面跟負向詞--seed是復現(xiàn)的關鍵同一個種子加同一句提示輸出才基本可控。--seed這個參數(shù)值得單獨說。它不是「鎖定畫面」而是鎖定噪聲起點提示改了一個詞畫面還是會變。所以復現(xiàn)實驗的正確做法是種子固定、提示固定、參數(shù)固定一次只改一個變量。我見過有人改了提示又換種子然后說「這個方法不穩(wěn)定」其實是兩個變量同時在動。4.2 Leonardo 的提示面板與風格參考Leonardo 的結構更像表單Prompt 和 Negative Prompt 分欄下面還有模型、引導強度、步數(shù)、種子、參考圖強度。它的好處是負向詞和正向詞互不干擾壞處是參數(shù)之間會互相影響調一個要回頭看另一個。參數(shù)作用常用區(qū)間調高后的表現(xiàn)Guidance Scale提示貼合度7 到 12更貼提示但畫面僵硬Steps采樣步數(shù)20 到 40細節(jié)增加邊際收益遞減Seed噪聲起點任意整數(shù)用于復現(xiàn)不改變語義Image Guidance參考圖影響0.3 到 0.7更接近參考圖原創(chuàng)性下降Guidance Scale 是最容易調過頭的參數(shù)。低于 7 畫面自由發(fā)揮高于 15 會出現(xiàn)色彩斷層和構圖僵化。我一般從 9 開始試畫面不夠貼提示就加到 11畫面太死板就降到 8。Steps 超過 40 之后提升非常有限除非做印刷級大圖否則沒必要拉到 60 以上。Leonardo 的 Negative Prompt 框比 Midjourney 的--no更「重」同樣數(shù)量的負向詞在 Leonardo 里對畫面的壓制更明顯。所以從 Midjourney 遷移過來時負向詞數(shù)量要減半先留文字水印和構圖干擾兩類跑一批看效果再決定加不加。4.3 語言與意象把抽象詞換成可渲染的視覺名詞原書有一節(jié)專講提示里的語言和意象核心觀點很直接模型不認識「高級感」只認識能對應到像素的模式。你寫「未來感」模型只能猜你寫「brushed aluminum panels with embedded LED strips」模型就有東西可畫。這個替換動作是 AI 藝術提示里性價比最高的一步。抽象表達可渲染替換替換理由未來感brushed aluminum, embedded LED strips, matte black casing材質和光源可直接生成溫馨warm 2700K lamp light, linen texture, soft shadows色溫和材質有明確指向高級low saturation, large negative space, single light source用構圖和色彩描述替代評價自然overcast daylight, moss-covered stone, shallow stream環(huán)境元素具體可辨動感motion blur on limbs, low angle, diagonal composition用攝影語言表達速度替換的時候注意一點不要把所有抽象詞一次換完。一次換一個槽位跑三到五張確認這個替換確實帶來了你想要的變化再換下一個。一次全換畫面變好看了你也不知道是哪個詞起的作用下次想復用都找不到依據(jù)。還有一個常被忽略的細節(jié)是語言本身。同一句提示用英文寫和用中文寫在 Midjourney 上的效果通常不一樣因為它的訓練語料里英文描述占比更高。非英文母語者寫英文提示時容易堆形容詞反而丟掉了具體的名詞。我的做法是先用中文把畫面拆成「物體、材質、光源、視角」四列再逐列翻譯成英文名詞短語最后按語序拼起來。這個流程比直接憋一句英文長句穩(wěn)定得多。5. 迭代式細化的排查清單五類翻車與對應改法迭代式細化不是「多跑幾次」而是每輪只改一個變量、記錄結果、判斷改動是否有效。原書把這一步放在中后段是有道理的前面骨架沒搭好迭代就是在垃圾堆里挑垃圾。下面五類問題是我在實際出圖和對話任務里遇到頻率最高的每條按「現(xiàn)象—原因—解決」拆開寫方便直接對照排查。5.1 現(xiàn)象同一提示每次出圖差異大沒法選原因通常有三個種子沒固定、--chaos或隨機度參數(shù)偏高、提示本身太短導致模型自由補全。先看參數(shù)再看提示長度。Midjourney 里沒寫--seed就是每次隨機Leonardo 里種子留空同理。提示少于 15 個詞時模型的可發(fā)揮空間太大畫面主體都可能漂移。解決順序是先固定種子跑三次確認差異是否收斂如果還漂把--chaos降到 10 以下最后檢查提示給主體補一個狀態(tài)限定和一個環(huán)境限定。三步走完還漂說明提示里有互相沖突的修飾符回到第 2 章做槽位拆分。5.2 現(xiàn)象負提示寫了但畫面里還是有文字和水印原因分工具看。Midjourney 的--no text對大面積文字有效對小字水印效果有限負向詞如果和正向詞語義重疊會被正向權重壓過去還有一種情況是負向詞寫在了參數(shù)區(qū)之外被當成普通描述解析了。解決辦法是先確認語法位置--no必須在所有參數(shù)區(qū)里、提示正文之后然后把負向詞精簡到最必要的三個去掉同義詞堆疊最后提高正向提示里「干凈背景」類固化劑的權重用正向描述擠壓文字出現(xiàn)的空間。純靠負向詞堵不如正向詞引導。5.3 現(xiàn)象出圖糊、構圖散、主體不突出原因多半是修飾符沖突或鏡頭槽位缺失。風格寫兩個、光照寫三個方向、鏡頭又寫廣角又寫微距模型只能取平均結果就是什么都有一點、什么都不突出。另一個常見原因是主體槽位里塞了太多狀態(tài)模型分不清哪個是重點。解決方法是做減法風格只留一個光照只留一個主光源鏡頭只留一個景別。主體狀態(tài)從三個減到一個跑一批看主體是否立住再逐個加回。構圖散的時候優(yōu)先補wide shot或medium shot這類景別詞比加「high quality」有用得多。5.4 現(xiàn)象ChatGPT 多輪對話后越聊越跑偏原因是上下文累積把早期約束沖淡了。對話到第五六輪模型對第一條消息里的格式要求、語氣要求已經(jīng)不再敏感開始按最近幾輪的內容自由發(fā)揮。另一種情況是你自己在后續(xù)消息里引入了新約束和早期約束矛盾模型選了新的那個。解決辦法有兩個每三到五輪做一次約束復述把核心要求用一兩句話重貼一遍或者開新會話把已確認的結論壓縮成一段摘要帶過去。我一般用后者因為長會話里的無效信息太多摘要反而更干凈。摘要里只保留任務目標、已確認結論、未解決問題三項其他全丟。5.5 現(xiàn)象提示從 Midjourney 遷到 Leonardo 就失效原因是兩個工具的語法和權重邏輯不同。Midjourney 的參數(shù)是尾綴Leonardo 是表單分欄Midjourney 的--no權重偏弱Leonardo 的負向框權重偏強同一組修飾符在兩個工具里的解析順序也不一樣。解決辦法是維護兩層提示中性層寫主體、修飾符、固化劑不帶任何工具語法適配層按工具加參數(shù)和負向詞。遷移時只改適配層中性層不動。這樣一套審美描述可以在多個工具之間復用換平臺只需要重測參數(shù)區(qū)間不用重寫整句提示。6. 對話式提示工程與驗收把提示當資產(chǎn)管起來ChatGPT 這類對話模型的提示工程和文生圖最大的區(qū)別是它有「記憶」——多輪對話里前面說過的約束會持續(xù)影響后面。這既是優(yōu)勢也是負擔。優(yōu)勢是你可以逐步補充細節(jié)不用一次寫完整負擔是約束會漂移聊到后面模型已經(jīng)不記得第一條要求了。原書把對話式提示單獨成章講的其實就是怎么在多輪里保持約束不丟。我的做法是把每輪對話當成一次小版本發(fā)布。開始前先寫一段「任務卡」包含目標、輸出格式、禁止事項三行每輪結束后檢查輸出是否還符合任務卡偏離了就貼回任務卡重述不偏離就繼續(xù)。任務卡本身也會迭代但每次改動都記版本號。# prompt_regression.py # 每次調整提示后跑一遍回歸記錄版本、參數(shù)、評分和問題 import csv, datetime def log_run(version, prompt, params, score, note): with open(prompt_runs.csv, a, newline, encodingutf-8) as f: writer csv.writer(f) writer.writerow([ datetime.date.today(), version, prompt, params, score, note ]) # 示例v03 加了一條“只輸出三條”的約束人工評分 4備注發(fā)現(xiàn)新問題 log_run( versionv03, prompt為便攜投影儀寫三條賣點每條不超過20字, paramstemperature0.7, max_tokens200, score4, note第三條偏長下版把字數(shù)約束提前, )這個腳本不復雜價值在score和note兩列。評分用 1 到 5 分5 分是可直接交付3 分是能看但要改1 分是跑偏。備注只寫具體問題不寫「感覺不太好」這種沒法行動的話。跑上二十條之后你回看 CSV 就能發(fā)現(xiàn)哪類改動真正提升了分數(shù)哪類改動只是心理安慰。版本管理上我遵循一條規(guī)則提示改動必須能回答「改哪個槽位、預期改善什么、怎么判斷有效」。答不上來就不改。這條規(guī)則是從一次連續(xù)改七版、結果越改越差的經(jīng)歷里總結出來的當時沒有記錄最后連最初那版長什么樣都找不回來了只能從頭重寫。驗收環(huán)節(jié)我一般看三個指標格式合規(guī)率、人工評分均值、復現(xiàn)一致性。格式合規(guī)率是輸出符合任務卡的比例低于 90% 就回去加約束人工評分均值低于 3.5 就回到骨架層檢查主體和修飾符復現(xiàn)一致性是同提示同參數(shù)跑三次的差異度差異大就檢查種子和隨機參數(shù)。三個指標都過線這版提示才進模板庫。從那以后我每次改提示都強制走一遍「任務卡—單變量改動—CSV 記錄—三項驗收」哪怕只改一個詞也記一筆。這套流程看著笨但它讓我不用靠記憶去復原三個月前那張圖是怎么出來的。希望幫到你。本文還有配套的精品資源點擊獲取