Introduktion till frågeteknik

Modellerna GPT-3, GPT-3.5 och GPT-4 i OpenAI är promptbaserade. Med promptbaserade modeller interagerar användaren med modellen genom att ange en textprompt, som modellen svarar på med en textkomplettering. Detta är modellens fortsättning på indatatexten.

Även om dessa modeller är extremt kraftfulla, är deras beteende också mycket känsligt för prompten. Detta gör promptkonstruktionen till en viktig färdighet att utveckla.

Snabb konstruktion kan vara svårt. I praktiken fungerar uppmaningen för att konfigurera modellvikterna för att slutföra den önskade uppgiften, men det är mer av en konst än en vetenskap, som ofta kräver erfarenhet och intuition för att skapa en lyckad prompt. Målet med den här artikeln är att hjälpa dig att komma igång med den här inlärningsprocessen. Den försöker samla in allmänna begrepp och mönster som gäller för alla GPT-modeller. Det är dock viktigt att förstå att varje modell beter sig annorlunda, så inlärningarna kanske inte gäller lika för alla modeller.

Grundläggande

Det här avsnittet beskriver de grundläggande begreppen och elementen i GPT-frågor.

Textprompter är hur användare interagerar med GPT-modeller. Precis som med alla generativa språkmodeller försöker GPT-modeller producera nästa serie ord som är mest sannolika att följa från föregående text. Det är som om vi säger Vad är det första du tänker på när jag säger <prompt>?. Exemplen nedan visar det här beteendet. Med tanke på de första orden i det berömda innehållet kan modellen korrekt fortsätta texten.

Prompt Slutförandet
För fyra poäng och sju år sedan fäder fram på denna kontinent, en ny nation, tänkt i Liberty, och tillägnad förslaget att alla män är skapade lika. [...]
"Kalla mig Ishmael." "För några år sedan, oavsett hur länge exakt-har lite o inga pengar i min väska, och inget särskilt att intressera mig på land, trodde jag att jag skulle segla omkring lite och se den vattniga delen av världen." [...]

När du utvecklar mer komplexa frågor är det bra att ha det här grundläggande beteendet i åtanke. Oavsett vilken uppmaning som tillhandahålls svarar modellen helt enkelt med vad den anser är mest sannolikt (med tanke på dess träningsdata och träningsmål). Om du ställer en fråga i din fråga följer modellen inte en separat "Q&A"-kodsökväg, utan snarare verkar den svara på frågan eftersom ett svar är den mest sannolika typen av svar för den angivna frågan som indata.

Fråga efter komponenter

När du använder API:et För slutförande medan det inte finns någon differentiering mellan olika delar av prompten kan det fortfarande vara användbart för inlärning och diskussion att identifiera underliggande promptkomponenter. Med API:et för chattens slutförande finns det distinkta avsnitt i prompten som skickas till API:et i form av en matris med ordlistor med associerade roller: system, användare och assistent. Den här vägledningen fokuserar mer generellt på hur du tänker på snabb konstruktion i stället för att ge normativ vägledning som är specifik för ett API framför ett annat.

Det är också viktigt att förstå att även om det kan finnas andra giltiga sätt att dissekera uppmaningar, är målet med denna uppdelning att ge ett relativt enkelt sätt att tänka på snabb konstruktion. Med API:et För slutförande är alla komponenter valfria, men minst en måste finnas och de flesta uppmaningar innehåller mer än en komponent. Det kan också finnas en gråzon mellan komponenterna. Ordningen nedan motsvarar ungefär hur ofta varje komponent används, från de flesta till minst.

Instruktioner

Instruktioner är troligen den vanligaste promptkomponenten. Instruktioner är helt enkelt att: instruktioner till modellen om vad du ska göra. Även om de är enkla i konceptet kan de vara komplexa i praktiken. Följande tabell illustrerar detta genom att visa både enkla och mer komplexa instruktioner i två olika former.

Instruktionstyp Prompt Slutförandet
Enkla instruktioner Skriv en introduktion till ett veckobrev. Välkommen till vårt veckovisa nyhetsbrev. Den här veckan har vi ett särskilt fokus på produktivitet. Vi kommer att dela tips och tricks om hur du är produktiv inom alla delar av ditt liv. Vi hoppas att du tycker om och vänligen dela med dina vänner!
Komplexa instruktioner Skriv en introduktion till ett veckobrev till mitt företag med namnet Contoso. Det borde nämna det stora all hands-mötet vi hade förra veckan och tacka laget för allt deras hårda arbete under de tuffa senaste månaderna. Välkommen till Contosos veckobrev! Vi hade ett bra all hands-möte förra veckan och jag vill tacka laget för allt deras hårda arbete under de tuffa senaste månaderna. Vi ser fram emot en ljus framtid och jag är övertygad om att vi med vårt teams engagemang och engagemang kommer att uppnå stora saker. Tack för att du är en del av vårt team och jag ser fram emot att arbeta med er alla under de kommande veckorna och månaderna. Uppriktigt, [Ditt namn].
Komplexa instruktioner Skriv en introduktion till ett veckobrev, inklusive följande:
- Mitt företag heter contoso
- En sprudlande hälsning
- Tacka laget för deras hårda arbete under ett par tuffa månader
- Positiva utsikter för det kommande kvartalet
- Signerad av SLT
Hej Contoso-teamet! Jag ville ta en stund att tacka dig för allt ditt hårda arbete under de senaste månaderna. Det har varit ett par tuffa månader, men ni har alla gått samman och gjort ett fantastiskt jobb. Jag är verkligen stolt över er alla. Inför nästa kvartal känner jag mig riktigt positiv. Jag tror att vi kommer att uppnå några bra saker. Tack igen, ledningsgruppen.

Primärt innehåll

Primärt innehåll refererar till någon form av text som bearbetas eller transformeras av modellen. Primärt innehåll används vanligtvis tillsammans med instruktioner. Ett enkelt exempel är språköversättning. I exemplet nedan betraktas den engelska texten som primärt innehåll medan "Översätt till franska:" är en instruktion.

Prompt Slutförandet
Kan du berätta hur jag kommer till museet?
Översätt till franska:
Pouvez-vous s'il vous plaît me dire comment aller au musée?

Primärt innehåll kan också vara mycket längre. I följande exempel är det primära innehållet introduktionsavsnittet från Wikipedia-posten om tidskomplexitet, som är nästan 300 ord långt. Det här innehållet har förkortats i vår tabell för att underlätta visning.

Prompt Slutförandet
Inom datavetenskap är tidskomplexiteten den beräkningskomplexitet som beskriver hur lång tid det tar att köra en algoritm. Tidskomplexitet uppskattas ofta av [...]
Sammanfatta föregående text i några meningar:
Tidskomplexitet är ett mått på hur lång tid en algoritm tar att köra. Det uttrycks vanligtvis som en funktion av indatastorleken. Det vanligaste måttet är komplexiteten i värsta fall, vilket är den maximala tid som krävs för indata av en viss storlek.
Inom datavetenskap är tidskomplexiteten den beräkningskomplexitet som beskriver hur lång tid det tar att köra en algoritm. Tidskomplexitet uppskattas ofta av [...]
TL;DR (Det gick inte att läsa för länge)
Tidskomplexiteten för en algoritm är hur lång tid det tar att köra en algoritm. Tidskomplexitet uppskattas ofta genom att räkna antalet elementära åtgärder som utförs av algoritmen, vilket innebär att varje elementär åtgärd tar en fast tid att utföra. Tidskomplexiteten uttrycks vanligtvis som en funktion av indatastorleken.

GPT-modeller kan också hantera primärt innehåll som är strukturerat. I exemplet nedan skickas en TSV om öl i Belgien (förkortat för visning i den här artikeln) till modellen som en del av prompten. Den kan tolka innehållet korrekt och besvara frågor om data.

Prompt Slutförandet
Belgian Beer Brands
Beer name Beer style color ABV Brewery
"Chimay Gold: ""Doree""" trappist pale ale gold 4.80% Chimay Brewery (official trappist)
"Chimay Blue: ""Grande Reserve""" trappist dark ale dark 9.00%
[...]
Hur många öl är mindre än 6 % ABV i tabellen ovan?
Det finns 10 öl i tabellen som är mindre än 6 % ABV.

Exempel

Lyckade uppmaningar förlitar sig ofta på "one-shot" eller "few-shot"-inlärning. Detta syftar på införandet av ett eller flera exempel på modellens önskade beteende, vanligtvis genom att inkludera indata- och utdatapar. Detta är inte att lära sig i den meningen att modellen ändras permanent, utan snarare att exemplen bättre villkorar modellen att svara som önskat för endast den aktuella slutsatsdragningen. Användningen av prompter utan exempel kallas ibland "nollskottsinlärning". Observera att med api:et för chattslutsättning läggs exempel på få bilder vanligtvis till i meddelandematrisen i form av exempel på användar-/assistentinteraktioner efter det första systemmeddelandet.

Utbildningstyp Prompt Slutförandet
Nollskott Rubrik: Tränaren säker på att skadan inte kommer att spåra ur Warriors
Hjälpavsnitt:
Tränaren är övertygad om att skadan inte kommer att spåra ur Warriors säsong. Teamet är fortfarande fokuserat på sina mål och att de kommer att fortsätta att arbeta hårt för att uppnå dem.
Få skott Rubrik: Twins Correa använder opt-out, test free agency
Ämne: Baseball
Rubrik: Qatar-VM ska ha zoner för nykterhet
Ämne: Fotboll
Rubrik: Yates: Fantasy football intel för vecka 6
Ämne: Fotboll
Rubrik: Tränaren säker på att skadan inte kommer att spåra ur Warriors
Hjälpavsnitt:
Basket

Exemplet ovan illustrerar verktyget för få skottinlärning. Utan exemplen verkar modellen gissa på önskat beteende, medan exemplen visar modellen hur den ska fungera. Detta visar också kraften i modellen, det kan härleda den kategori av etikett som är önskad, även utan en "basket" etikett i exemplen.

Cue

Signaler fungerar som "jumpstart" för modellens utdata, vilket hjälper till att dirigera modellen till önskade utdata. Det är ofta ett prefix som modellen kan bygga vidare på. I exemplet nedan visar vi den referens som leder berättelsen till att inkludera viktiga element. Tips används ofta tillsammans med instruktioner, men inte alltid. I exemplen nedan används modellen för att sammanfatta ett långt e-postmeddelande. En referens används i ett fall för att fokusera modellens utdata och för att föreslå ett specifikt utdataformat (punktlistor) i det andra.

I kontexten för API:et för chattens slutförande visas systemmeddelandets form, och exempel med få bilder anges genom att tillhandahålla en serie exempel på användar-/assistentinteraktioner för att hjälpa till att prime-modellen.

Antal tips Prompt Slutförandet
0 Prestandagranskningar är en viktig del av vår metod för prestanda och utveckling på Contoso. [...]
Sammanfatta e-postmeddelandet ovan:
Syftet med det här e-postmeddelandet är att informera anställda om de senaste ändringarna i prestandagranskningsupplevelsen, som är en del av Contosos metod för prestanda och utveckling. Ändringarna omfattar en förbättrad struktur, uppgraderad användarupplevelse i verktyget och fokuserade frågor. Dessutom finns det nu ett valfritt avsnitt för konversationsstartare där anställda kan flagga ämnen som de vill diskutera med sina chefer.
1 Prestandagranskningar är en viktig del av vår metod för prestanda och utveckling på Contoso. [...]
Sammanfatta e-postmeddelandet ovan:
Meddelandets viktigaste slutsats är
Att Contoso förbättrar prestandagranskningsupplevelsen genom att göra den mer fokuserad på kärnprioriteringar, förväntningar och påverkan. Dessutom uppgraderar de användarupplevelsen i verktyget med tips, resurser och vägledning. Slutligen lägger de till vägledning om hur du aktiverar huvudprioriteringar för hela företaget.
2 Prestandagranskningar är en viktig del av vår metod för prestanda och utveckling på Contoso. [...]
Sammanfatta e-postmeddelandet ovan:
Viktiga punkter:
Contoso introducerar ändringar i prestandagranskningsupplevelsen baserat på feedback från anställda.
• Ändringarna omfattar ett nytt fokus på huvudprioriteringar, förväntningar och påverkan. en uppgraderad användarupplevelse. och ny vägledning om huvudprioriteringar för hela företaget.
• Prestandagranskningar är en tid att reflektera över tidigare resultat och lärande samt planera för framtida prioriteringar och tillväxtmöjligheter.
• Anställda och chefer bör skriva kommentarer inför prestationsgranskningsmötet.
• Det bör finnas minst två prestandagranskningar per år.
• Den tidsinvesteringen för varje översyn bör vara ungefär densamma.

Ytterligare innehåll

Stöd för innehåll är information som modellen kan använda för att påverka utdata på något sätt. Det skiljer sig från primärt innehåll eftersom det inte är huvudmålet för uppgiften, men det används vanligtvis tillsammans med primärt innehåll. Vanliga exempel är sammanhangsbaserad information, till exempel aktuellt datum, namnet på användaren, användarinställningar och så vidare. Exemplet nedan använder stödinnehåll för att organisera en uppsättning planerade workshops för användaren. Utan de stödjande (viktiga ämnena) listar modellen helt enkelt bort workshops (trunkerade för visning), när de informeras om mina viktiga ämnen kan modellen korrekt gruppera mötena.

Stöd för innehåll Prompt Slutförandet
Utan Workshoplista:
Rubrikbeskrivning
Planering Workshop Kickoff Vänligen följ med oss för att starta vår workshop! Hör våra ledare om prioriteringar och lärdomar mellan grupper för det kommande året. Inbjudan till denna händelse har redan skickats till alla i [...]
Sammanfatta workshoparna ovan, grupperade efter ämne:
Workshoplista:
Kickoff för planeringsverkstad
-Planering Workshop Wrap-up
- Core MeetUp
– Kunddrivna perspektiv
-Effekt och viktiga fokusområden
-Metodtips
-Snabbare appimplementering [...]
With Workshoplista:
Rubrikbeskrivning
Planering Workshop Kickoff Vänligen följ med oss för att starta vår workshop! Hör våra ledare om prioriteringar och lärdomar mellan grupper för det kommande året. Inbjudan till denna händelse har redan skickats till alla i [...]
Mina viktiga ämnen: prompt engineering, search, GPT-modeller
Sammanfatta workshoparna ovan, grupperade efter mina viktiga ämnen:
1. Fråga teknik:
– Nya tekniska tips
- Konsten att fråga ingenjörskonst
2. Sök:
-Introduktion till vektorsökning med inbäddning
3. GPT-modeller:
- Introduktion till GPT-4
- GPT-35-Turbo på djupet.

Bästa praxis

  • Var specifik. Lämna så lite till tolkning som möjligt. Begränsa driftutrymmet.
  • Var beskrivande. Använd analogier.
  • Dubbel nedåt. Ibland kan du behöva upprepa dig för modellen. Ge instruktioner före och efter ditt primära innehåll, använd en instruktion och en ledtråd osv.
  • Beställningen är viktig. I vilken ordning du presenterar information för modellen kan det påverka utdata. Om du lägger till instruktioner före ditt innehåll ("sammanfatta följande...") eller efter ("sammanfatta ovanstående...") kan göra skillnad i utdata. Även ordningen på bildexempel kan vara viktig. Detta kallas recency-bias.
  • Ge modellen ett "ut". Ibland kan det vara bra att ge modellen en alternativ sökväg om den inte kan slutföra den tilldelade aktiviteten. När du till exempel ställer en fråga om en textdel kan du inkludera något som "svara med "hittades inte" om svaret inte finns. Detta kan hjälpa modellen att undvika att generera falska svar.

Utrymmeseffektivitet

Även om indatastorleken ökar för varje ny generation GPT-modeller, kommer det att finnas scenarier som ger mer data än modellen kan hantera. GPT-modeller delar upp ord i "token". Vanliga ord med flera stavelser är ofta en enda token, men mindre vanliga ord bryts i stavelser. Token kan ibland vara kontraintuitiva, vilket visas i exemplet nedan som visar tokengränser för olika datumformat. I det här fallet är det mer utrymmeseffektivt att stava ut hela månaden än ett helt numeriskt datum. Det aktuella intervallet för tokenstöd går från 2 000 token med tidigare GPT-3-modeller till upp till 32 768 token med 32k-versionen av den senaste GPT-4-modellen.

Skärmbild av en textsträng med markerade färger som avgränsar tokengränser.

Med tanke på detta begränsade utrymme är det viktigt att använda det så effektivt som möjligt.

  • Tabeller – Som du ser i exemplen i föregående avsnitt kan GPT-modeller enkelt förstå tabellformaterade data. Detta kan vara ett utrymmeseffektivt sätt att inkludera data i stället för att föregå varje fält med namn (till exempel med JSON).
  • Blanksteg – Efterföljande blanksteg behandlas som separata token, vilket kan vara ett enkelt sätt att slösa utrymme. Blanksteg som föregår ett ord, å andra sidan, behandlas vanligtvis som en del av samma token som ordet. Titta noga på din användning av blanksteg och använd inte skiljetecken när ett utrymme ensamt kommer att göra.

Nästa steg

Läs mer om Azure OpenAI.