那些 AI 編輯的「眉眉角角」:長文翻譯與目錄生成的經驗分享
解決程式碼區塊翻譯失敗與目錄生成困難
我最近寫完長文──在 Neovim 中探索 Fennel 與函數式編程之後,考慮了一下隱形冠軍策略,這麼冷門的主題,還是要翻譯成英文,不然,我浪費太多的潛在讀者了。
於是,我就得面對長久以來,利用 AI 來翻譯 Markdown 檔案的問題:「只要遇到 code block ,AI 的輸出就會失敗。」
Markdown 渲染器的挑戰
每次我要處理含有大量程式碼的 Markdown 檔案時,就會撞上這個問題。
我的 prompt 長成:
將以下的內容,翻成英文,結果用 markdown 語法輸出,不要 render 。
$content
...
然而,只要 Markdown 裡有類似開頭反引號 (```) 的語法,Web UI 的 Markdown 渲染器往往就會出錯。而且無論我怎麼調整 prompt 都沒有什麼用。
解決方案:透過 API 來使用 LLM
要徹底解決這個問題,最佳途徑是跳過 Web UI 的渲染器,直接利用 LLM 的 API 進行操作。這會帶來兩個好處:
使我在送出文本給 AI ,並且讓 AI 處理之後,直接取得結果,而不是讓結果被 Web UI 的 Markdown 渲染器搞砸。
使我可以批次地指定 30 個檔案,一口氣做翻譯,而不用複製、貼上 30 次。一個指令就完成操作。
markdown-translator 這個工具就可以完成這件事。
產生目錄的挑戰
我遇上的第二個挑戰是,如這邊的目錄。我希望 LLM 可以幫我讀 30 個檔案的內容之後,一次幫我生成。
我的第一步是寫一個 shell script ,把 30 個檔案拼成一個,如此就很容易上傳給 LLM 。然後,就失敗了。
我的 prompt 長成這樣子:
從上傳的長文裡 (day01~day30),每一篇採取 head1 和 head2 做成 table of contents ,結果以 markdown 輸出,不要 render
注意: 長文的 day 與 day 之間,以 \% 來分隔
由於我上傳的長文有 8 萬字…幻覺頗嚴重。後面的結果都不太對。
解決方案:搭配 RAG 來使用 LLM
我把長文上傳到 Google NotebookLM 之後,再下一樣的 prompt ,就順利生成目錄了。
解決方案:委任 AI 來撰寫 Script
另外,多想一步之後,這個問題其實用傳統寫程式的方式就可以解了,所以我後來叫 AI 幫我寫 Script 來處理。
總結
即使是像編輯這種算是不特別複雜的工作,在應用 AI 時,還是會有很多眉眉角角不好用的地方。實戰經驗證明,要充分發揮 AI 在編輯工作中的效能,不僅需要精確的 prompt,更關鍵在於選擇合適的技術架構——跳過 Web UI 的限制、結合 RAG 工具、或是委任 AI 來撰寫 Script 來應對特定格式和超長文本的挑戰。


