在本文中,我將解釋一些關於提示工程的重要要點,以及了解這些要點如何能大大幫助你進行日常的 AI 工作、學習、研究、工作、vibecoding 等等。

前言

紮實的知識基礎對於學習任何事物都至關重要,LLM(學習型學習工具)也不例外。透過分析模式並與朋友交流,我發現大多數在日常工作、學習中使用LLM的人,以及從事技術工作的人,尤其是那些剛入行的人,都不了解LLM的工作原理,也不知道如何在ChatGPT(聊天式GPT)環境下正確地提問和獲得答案。

有鑑於此,並且由於我一直在深入研究這個課題,為了分享我的知識,正如巴西詩人科拉·科拉利娜所說: “將所知傳授,並將所教所得學習的人是幸福的”,我將撰寫一系列文章來解釋這個主題,而這只是第一篇…

首先,回顧一下,LLM 究竟是什麼?

LLM 有多種定義方式。其中一種是: “它們是利用深度學習演算法處理和學習自然語言的機器語言模型”,這是其結構性定義。我最喜歡的定義是: 「LLM 本質上由兩個文件組成:一個包含學習到的知識的權重(參數),另一個包含執行學習資料所需的程式碼。」身為視覺型學習者,我更容易想像它的工作原理。

所以,ChatGPT、Claude 和許多其他工具正是如此,它們目前能夠執行各種活動,例如編寫程式碼、翻譯文字、回答各種各樣的問題,而且,根據它們編寫更強大的提示的能力,它們甚至可以建立產品架構、幫助你解決複雜的錯誤、給你提供想法,甚至建立一個革命性的 SaaS (笑)

關鍵在於,LLM 的「理解」和「創造」能力已經達到了非常高的水平,而只有提出正確的問題,才能達到第 -17 層好的答案!

**註:**第 -17 層指的是遊戲 Minecraft 中發現金礦石的那一層 ;)

提問

如何提出正確的問題?了解這一點為何如此重要?讓我們一探究竟。

掌握如何向學習者提出正確的問題至關重要,以至於專門有一個技術領域致力於此:提示工程,其定義為「規劃、建立和測試提示以在學習者中獲得更佳答案的實證科學」。掌握提問技巧能讓你更上一層樓;你能獲得最佳答案,從而帶來許多好處,其中最主要的是提高工作效率

但歸根究底,如何才能提出正確的問題呢?

LLM功能強大,但它無法猜測你的意圖。為了獲得最佳搜尋結果,你需要專注於建立清晰的搜尋提示,做到具體明確,並提供豐富的上下文資訊。而這一切都包含以下幾個面向:

1 - 避免歧義

“可能性空間”

當你給出非常含糊不清的提示時,模型會辨識出幾條統計上有效的路徑。這就好比它站在一個有50條路的十字路口,每條路都立著「也許可以走這條路」的牌子,它會選擇其中一條,但不一定是你需要的那條:最快且沒有交通擁堵的路(這才是真正的正確答案)。

例如:

提示訊息含糊不清:

"Crie uma API."

LLM「看到」什麼:多條路徑、REST API? GraphQL?使用哪種語言?針對哪個領域?需要身份驗證嗎?需要資料庫嗎?模型會選擇訓練資料中統計上最常見的路徑(很可能是使用 Express 的 Node.js 通用 REST API),但這可能與您的實際需求毫無關係。

明確的提示:

"Crie um microsserviço em Node.js com Express e TypeScript para processar pagamentos via
Stripe. Endpoints: criar pagamento, confirmar webhook e consultar status. O payload tem:
orderId(UUID), amount(number), currency(enum: BRL, USD) e customerId(string).
Use zod para validação, Prisma com PostgreSQL para persistir as transações e winston
para logs. Retorne status codes apropriados como(201, 200, 400, 422, 500). Trate falhas de
rede com retry automático (máx. 3 tentativas)."

LLM「看到」的內容:一條幾乎唯一的路徑。每個細節都起到約束作用,消除歧義:「Node.js,搭配 Express 和 TypeScript」同時定義了執行時間、框架和語言。 「透過 Stripe 付款」限制了 SDK 和域名。 「3 個明確的端點 + 帶類型的有效負載」消除了對路由和模式的猜測。 「Zod、Prisma、PostgreSQL、Winston」鎖定了堆疊;模型不會建議其他方案。 「特定的狀態碼 + 最多 3 次重試」以清楚的限制定義了 HTTP 狀態和策略。機率分佈集中,對於產生的每個令牌,模型實際上「只有一個選項」。

2 - 界定範圍

“注意力窗口”

LLM(邏輯學習模型)有一個上下文窗口,可以同時處理一定數量的詞元(詞語片段)。這包括你的提示和產生的回應。在這個視窗內,會出現一個重要的現象:並非所有詞元在處理過程中都會得到相同的「關注」。

自註意力機制(Transformer架構的核心,不是立方體,哈哈;神經網路架構的核心,如果LLM框架是一種程式語言,它就相當於神經網路)定義了整個系統的結構,計算提示中所有詞元之間的關係。無關詞元越多,模型就越需要在有用資訊和無用資訊之間「分配注意力」。

例如:

超出範圍:

"Me ensine Docker."

內部發生的情況:該模型需要在數百個子主題之間做出決定——安裝、基本概念、Dockerfile、docker-compose、卷、編排——注意力變得分散,結果就是對所有內容有一個膚淺的概述。

範圍:

"Explique o conceito de multi-stage build no Docker para um dev backend pleno que já usa
Docker no dia a dia mas nunca otimizou o tamanho das imagens. Mostre um exemplo prático
com uma aplicação JavaScript, comparando o Dockerfile sem e com multi-stage build,
incluindo o tamanho final de cada imagem."

內部發生的情況:注意力機制聚焦於一個非常特定的區域,即「Docker」、「多階段建置」、「鏡像優化」和「JavaScript」的交集。注意力權重變得高度集中。

3 - 提供相關背景訊息

應用程式狀態

LLM本質上是無狀態的;它在請求之間沒有記憶。每個請求都是從頭開始處理的;它唯一的「狀態」就是你輸入到請求中的資訊。這意味著任何你沒有提供的上下文對於模型來說都不存在。

在內部,上下文就像是注意力機制中的權重系統。當你加入資訊時,它會建立“錨點”,影響所有後續詞元的機率分佈;就好像每個上下文資訊都是一塊磁鐵,將響應拉向特定的方向。

例如:

脫離上下文:

"Revise meu código."

LLM 的作用:在不了解語言、框架、開發人員層級、程式碼目標、團隊標準或預期審查類型的情況下,它會給出通用評論:「新增錯誤處理」、「使用更具描述性的名稱」、「考慮加入測試」。

結合上下文:

"Revise este endpoint Node.js com Express que lida com upload de arquivos para o S3.
O time usa ESLint + Prettier, então ignore estilo. O padrão do time é async/await com
try/catch e erros customizados. Endpoint em produção, recebe 200 uploads/min.
Foque em: memory leaks, tratamento de erros e uso correto do SDK do S3."

LLM 的作用:提示中的每個訊息都像一個過濾器,可以消除乾擾訊息,使審查更加聚焦:“Node.js + Express + 上傳到 S3” 會激活關於流、緩衝區、多部分傳輸和 AWS SDK 的特定知識。 “ESLint + Prettier,忽略樣式” 會排除 linter 已經解決的問題。 「async/await + 自訂錯誤」 會讓模型跳過團隊已經應用的建議,專注於它們的使用方式。 「生產環境,每分鐘 200 次上傳」 會改變每個問題的權重;在開發環境中可以接受的未釋放緩衝區,在高負載下會變成嚴重問題。 「關注:記憶體洩漏、錯誤、S3 SDK」 將審查限制在三個維度上,忽略其他數十個主題。

基於此,了解你所用模型的限制也有助於你理解你能提出的問題和進行推理的極限,所以選擇你最好的AI,訓練它,提出你的問題,測試它,試試看! ;)

記住:LLM 不會“思考”,它只是計算機率!

最終考慮

好了,以上就是第一階段的內容。我試著總結並解釋我認為值得探討和闡述的各個要點,但關於LLM提示工程還有很多可以討論的地方,例如更經典的提示工程技巧(零樣本提示、角色提示),以及更高級的技巧(思維鏈(CoT)、提示鏈)。我會在以後的文章中嘗試深入剖析其中的許多層面;這只是我時隔數年重返寫作的第一篇。親愛的讀者,希望您有所收穫。感謝您讀到這裡。 ;)

如何找到我:

我的領英

我的 GitHub


原文出處:https://dev.to/fransborges/engenharia-de-prompt-por-que-a-forma-como-voce-pergunta-muda-tudoum-guia-introdutorio-3hb0


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝14   💬10   ❤️2
409
🥈
我愛JS
📝2   💬9   ❤️2
90
🥉
💬1  
4
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登