Dela via


Tekniker för promptutformning

GPT-3-, GPT-3.5-, GPT-4- och GPT-4o-modeller från 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 Fullbordande
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 Fullbordande
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 Fullbordande
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 Fullbordande
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 Fullbordande
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 Fullbordande
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.

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 Fullbordande
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 Fullbordande
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.

Scenariospecifik vägledning

Principerna för snabbteknik kan generaliseras över många olika modelltyper, men vissa modeller förväntar sig en specialiserad snabbstruktur. För Azure OpenAI GPT-modeller finns det för närvarande två distinkta API:er där promptteknik spelar in:

  • API för chattens slutförande.
  • API för slutförande.

Varje API kräver att indata formateras på olika sätt, vilket i sin tur påverkar den övergripande promptdesignen. API:et för chattslutsättning stöder modellerna GPT-35-Turbo och GPT-4. Dessa modeller är utformade för att ta indata som är formaterade i en specifik chattliknande avskrift som lagras i en matris med ordlistor.

Api:et För slutförande stöder de äldre GPT-3-modellerna och har mycket mer flexibla indatakrav eftersom det tar en textsträng utan några specifika formatregler.

Teknikerna i det här avsnittet lär dig strategier för att öka noggrannheten och grunderna för svar som du genererar med en stor språkmodell (LLM). Det är dock viktigt att komma ihåg att även när du använder snabbteknik effektivt måste du fortfarande verifiera de svar som modellerna genererar. Bara för att en noggrant utformad fråga fungerade bra för ett visst scenario betyder det inte nödvändigtvis att den generaliserar bredare till vissa användningsfall. Det är lika viktigt att förstå begränsningarna för LLM:er som att förstå hur de kan utnyttja sina styrkor.

Den här guiden går inte in närmare på mekaniken bakom meddelandestrukturen för chattavslutningar. Om du inte är bekant med att interagera med modeller för chattslutsättningar programmatiskt rekommenderar vi att du läser vår instruktionsguide om API:et för chattslutsättning först.

Kommentar

Alla exempel i det här avsnittet av guiden har testats mot en grundläggande GPT-4-modell på engelska. Om du läser en lokaliserad version av den här artikeln på ett annat språk representerar dessa svar en lokaliserad översättning av de engelska resultaten. Mer information om potentiella begränsningar beroende på vilket språk du använder för att fråga en modell finns i vår transparensanteckning för ansvarsfull AI.

Få skottinlärning

Ett vanligt sätt att anpassa språkmodeller till nya uppgifter är att använda inlärning med få skott. I få skottinlärning tillhandahålls en uppsättning träningsexempel som en del av uppmaningen för att ge ytterligare kontext till modellen.

När du använder API:et För slutförande av chatt kan en serie meddelanden mellan användaren och assistenten (skrivna i det nya promptformatet) fungera som exempel för inlärning med få skott. De här exemplen kan användas för att få modellen att svara på ett visst sätt, emulera vissa beteenden och få svar på vanliga frågor.

Systemmeddelande Exempel med få bilder
Assistant är en intelligent chattrobot som är utformad för att hjälpa användarna att besvara sina skatterelaterade frågor.
Instruktioner
- Svara bara på frågor som rör skatter.
- Om du är osäker på ett svar kan du säga "Jag vet inte" eller "Jag är inte säker" och rekommendera användare att gå till IRS-webbplatsen för mer information.
Användare – "När behöver jag lämna in mina skatter efter?"
Assistent – "År 2023 måste du lämna in dina skatter senast den 18 april. Datumet infaller efter den vanliga tidsfristen den 15 april eftersom den 15 april infaller på en lördag 2023. Mer information finns i https://www.irs.gov/filing/individuals/when-to-file "

Användare – "Hur kan jag kontrollera statusen för min skatteåterbäring?"
Assistent – "Du kan kontrollera statusen för din skatteåterbäring genom att besöka https://www.irs.gov/refunds "

Tabellen ovan beskriver den grundläggande promptstrukturen, men för en detaljerad förklaring av det exakta promptformatet måste du läsa guiden För att slutföra chatten.

Scenarier som inte är chattar

Api:et för slutförande av chatt är optimerat för att fungera med konversationer med flera turer, men det kan också användas för icke-chattscenarier. För ett scenario med attitydanalys kan du till exempel använda följande fråga:

Systemmeddelande User Assistent
Du är en assistent som är utformad för att analysera sentiment från taldata. Användarna klistrar in en textsträng och du svarar med en utvärdering av talarens svar. Hastighet på en skala från 1 till 10 (10 är högst). Förklara varför det här omdömet gavs. hej tack för att ringa contoso apotek som jag talar med idag jag förstår din frustration mary um kan du berätta vad exakt du försöker åstadkomma OK uh verkligen glad att kontrollera att för dig ett ögonblick snälla jag ser här att du var på en generisk form av lipitor är att rätt OK uh så jag ser att din läkare slutat förskriva dessa läkemedel i tjugo tjugoen faktiskt OK uh Ja jag skulle gärna kontrollera att för dig uh eftersom ibland finns det en lucka i systemet och det bara inte får rapporteras så låt mig ta en titt här bara ett ögonblick så jag ser här att din läkare hade dessa läkemedel ordinerade till dig från tjugo tolv till tjugo tjugo en OK um ja enligt de senaste posterna uh som tillhandahålls av läkarmottagningen du nu på en annan drog metformin skulle du gillar oss att gå vidare och fylla det receptet för dig för plocka upp lite form i fem hundra milligram uh du är mycket välkommen mary vänligen låt oss veta om det finns något annat vi kan göra för dig idag. Sentimentklassificering: 8
Talaren i denna text verkar vara artig, hjälpsam och tålmodig när han tar itu med kundens problem. De tar sig tid att kontrollera informationen, ge tydliga förklaringar och erbjuda hjälp. Omdömet är dock inte 10 eftersom det fortfarande finns en antydan till osäkerhet i vissa delar av konversationen, vilket kanske inte förmedlar fullständigt förtroende till kunden.

Börja med tydliga instruktioner

Sekvensinformationen visas i frågan. Detta beror på att GPT-formatmodeller är inbyggda på ett visst sätt som definierar hur de bearbetar indata. Vår forskning tyder på att berätta för modellen vilken uppgift du vill att den ska göra i början av prompten, innan du delar ytterligare sammanhangsbaserad information eller exempel, kan hjälpa till att producera utdata av högre kvalitet.

Kommentar

Även om följande teknik fortfarande rekommenderas, till skillnad från tidigare modellversioner (GPT-3 och tidigare), visade våra tester att modellsvaret med ChatGPT- och GPT-4-modeller var detsamma oavsett om tekniken används. När det gäller exemplet nedan ser vi att lägga till -instruktionen "Flera källor ... utbrott" i början eller slutet av prompten inte orsaka någon förändring i den slutliga modellen svar.

Systemmeddelande User Assistent
Du är en AI-assistent som hjälper människor att hitta information. Din uppgift är att kontrollera om instruktionen "Flera källor nämner en chans till ett annat stort utbrott" stöds av ett specifikt citat från följande uppsättning kodfragment.
---
UTDRAG
[1] 14 procents chans att megaquake träffar Seattle, säger experter
SEATTLE - Det finns en 14-procentig chans att en jordbävning med magnituden 9 Cascadia drabbar Seattle under de kommande 50 åren, uppskattar U.S. Geological Survey. "Tyvärr kan vi inte...

[2] Jordbävningsexperter lägger fram de senaste utsikterna för Seattles "Really Big One"
"Vi säger att det finns ungefär 14% chans att en annan jordbävning med magnituden 9 inträffar under de kommande 50 åren", säger en geofysiker vid University of Washington ...
---
Är uttalandet "Flera källor nämner en chans till ett annat stort utbrott" direkt underförstått eller anges av kodfragmenten?
Nej, instruktionen är inte direkt underförstådd eller anges av kodfragmenten. Kodfragmenten nämner en chans till en "megaquake" och en "jordbävning med magnituden 9 Cascadia" som drabbar Seattle under de kommande 50 åren, men nämn inte en chans till ett annat stort utbrott.

Upprepa instruktioner i slutet

Modeller kan vara känsliga för recency bias, vilket i det här sammanhanget innebär att information i slutet av prompten kan ha större inflytande över utdata än information i början av prompten. Därför är det värt att experimentera med att upprepa instruktionerna i slutet av prompten och utvärdera effekten på det genererade svaret.

Prime-utdata

Detta syftar på att inkludera några ord eller fraser i slutet av prompten för att få ett modellsvar som följer det önskade formuläret. Om du till exempel använder en referens som “Here’s a bulleted list of key points:\n- ” kan hjälpa dig att se till att utdata formateras som en lista med punktlistor.

Systemmeddelande User Assistent
Du är en AI-assistent som hjälper människor att hitta information. Svara med så få ord som möjligt. John Smith är gift med Lucy Smith. De har fem barn, och han arbetar som programvaruingenjör på Microsoft. Vilka sökfrågor ska jag göra för att faktakontrollera detta? ## En möjlig sökfråga är: "John Smith gifte sig med Lucy Smith fem barn programvaruingenjör Microsoft"

I ovanstående prompt är texten En möjlig sökfråga: förbereder modellen för att skapa en enda utdata. Utan den här signalen skapar modellen flera sökfrågor som utdata.

Lägg till klar syntax

Genom att använda tydlig syntax för din fråga – inklusive skiljetecken, rubriker och avsnittsmarkörer – kan du kommunicera avsikt och gör ofta utdata enklare att parsa.

I exemplet nedan har avgränsare (--- i det här fallet) lagts till mellan olika informationskällor eller steg. På så sätt kan du använda --- som ett stoppvillkor för generering. Dessutom visas avsnittsrubriker eller särskilda variabler i versaler för att särskilja dem.

Systemmeddelande User Assistent
Du är en AI-assistent som hjälper människor att hitta information. Du läser ett stycke och skickar sedan frågor till en sökmotor för att kunna faktakontrollera det. Förklara även frågorna.
---
PARAGRAF
John Smith är gift med Lucy Smith. De har fem barn, och han arbetar som programvaruingenjör på Microsoft. Vilka sökfrågor ska jag göra för att faktakontrollera detta?
---
FRÅGOR
1. "John Smith Microsoft" - För att kontrollera om John Smith verkligen är anställd på Microsoft.
2. "John Smith Lucy Smith" - För att kontrollera om John Smith är gift med Lucy Smith.
3. "John Smith barn" - Att kontrollera om John Smith har fem barn.

Om du inte är säker på vilken syntax du ska använda bör du överväga att använda Markdown eller XML. Modellerna har tränats på ett stort antal webbinnehåll i XML och Markdown, vilket kan ge bättre resultat.

Dela upp aktiviteten

Stora språkmodeller (LLM) fungerar ofta bättre om uppgiften är uppdelad i mindre steg. I sökfrågeprompten som refererades tidigare kan prompten till exempel omstruktureras så att modellen först instrueras att extrahera relevanta fakta och sedan instrueras att generera sökfrågor som kan användas för att verifiera dessa fakta.

Systemmeddelande User Assistent
Du är en AI-assistent som hjälper människor att hitta information. Du läser ett stycke och skickar sedan frågor till en sökmotor för att kunna faktakontrollera det.
---
PARAGRAF
John Smith är gift med Lucy Smith. De har fem barn, och han arbetar som programvaruingenjör på Microsoft. Vilka sökfrågor ska jag göra för att faktakontrollera detta?
---
Nu ska du extrahera faktiska anspråk och utfärda frågor för att faktagärna dem. När du utfärdar en fråga använder du funktionen SEARCH("query")

FAKTISKA ANSPRÅK
1. John Smith är gift med Lucy Smith
2. De har fem barn
3. Han arbetar som programvarutekniker på Microsoft

FRÅGOR
SEARCH("John Smith gifte sig med Lucy Smith")
SEARCH("John Smith family size")
SEARCH("John Smith Microsoft software engineer")

Observera användningen av tydlig syntax för att särskilja avsnitten och primföra utdata. I det här enkla exemplet är det inte särskilt dramatiskt att bryta ned uppgiften från ett till två steg, men när du försöker göra detta för en större text med många faktiska anspråk kan det göra stor skillnad att bryta ned uppgiften.

Användning av affordances

Ibland kan vi få modellen att använda en affordance i stället för att förlita sig på sina egna parametrar för information och svar. Sök kan till exempel vara ett råd för att minimera mot fabricerade svar och för att få uppdaterad information.

Ett enkelt sätt att använda en affordance är att stoppa genereringen när anropen genereras av modellen och sedan klistra in resultatet i prompten igen. Nedan visas ett exempel på vad uppföljningssamtalet kan vara när du har gjort SEARCH-anropen ovan. Observera hur vi klistrade in sökresultaten i prompten och ersatte de tidigare SEARCH-anropen .

Systemmeddelande User Assistent
Du är en AI-assistent som hjälper människor att hitta information. Du läser ett stycke, extraherar faktaanspråk och använder sedan sökmotorresultat för att faktagläsa dem
---
PARAGRAF
John Smith är gift med Lucy Smith. De har fem barn, och han arbetar som programvaruingenjör på Microsoft. Vilka sökfrågor ska jag göra för att faktakontrollera detta?
---
FAKTISKA ANSPRÅK
- John Smith är gift med Lucy Smith.
- John och Lucy har fem barn.
- John arbetar som programvarutekniker på Microsoft
---
Här är olika sökfrågor som utfärdas för att undersöka anspråken ovan:
SÖKFRÅGOR
- John Smith gift med Lucy Smith
- John Smiths antal barn
- John Smith programvarutekniker Microsoft
---
Här är kodfragment av sökresultaten:
UTDRAG:
[1] John Smiths bröllop var den 25 september 2012 ...
[2] John Smith åtföljdes av sin fru Lucy på en fest
[3] John åtföljdes till fotbollsmatchen av sina två döttrar och tre söner.
[4] Efter att ha tillbringat 10 år på Microsoft grundade Smith sin egen startup, Tailspin Toys
[5] John M är stadens smed och han gifte sig med Fiona. De har en dotter som heter Lucy.
---
Med tanke på kodfragmenten kontrollerar fakta var och en av de faktiska påståendena ovan:
John Smith är gift med Lucy Smith. Snippet [1] och [2] nämner båda John Smiths fru som Lucy.

- John och Lucy har fem barn. Kodfragment [3] nämner att John åtföljdes av sina två döttrar och tre söner.

- John arbetar som programvarutekniker på Microsoft: Delvis bekräftad. Kodfragment [4] nämner att John tillbringade 10 år på Microsoft, men det anger inte uttryckligen att han för närvarande arbetar där. Ytterligare forskning kan behövas för att bekräfta hans nuvarande anställningsstatus.

Kedja av tankefråga

Det här är en variant på bryt ned aktivitetstekniken. I stället för att dela upp en uppgift i mindre steg instrueras modellsvaret att fortsätta steg för steg och presentera alla steg som ingår. Detta minskar risken för felaktigheter i resultaten och gör det enklare att utvärdera modellsvaret.

Systemmeddelande User Assistent
Du är en AI-assistent som hjälper människor att hitta information. Vem var den mest dekorerade (maximala medaljen) individuella idrottare i de olympiska spelen som hölls i Sydney? Ta en steg-för-steg-metod i ditt svar, citera källor och ge resonemang innan du delar det slutliga svaret i nedanstående format: SVAR är: <name> Steg 1: Bestäm året för de olympiska spelen i Sydney. De olympiska spelen i Sydney hölls år 2000.

Steg 2: Hitta en lista över enskilda idrottare som vann flera medaljer i OS i Sydney 2000.

Enligt de olympiska spelens officiella hemsida fanns det flera individuella idrottare som vann flera medaljer i OS i Sydney 2000. Några av de anmärkningsvärda namnen är:
• Ian Thorpe (Australien) - 3 guld, 2 silver, 0 brons
• Pieter van den Hoogenband (Nederländerna) - 2 guld, 0 silver, 2 brons
• Lenny Krayzelburg (USA) - 3 guld, 0 silver, 0 brons
• Inge de Bruijn (Nederländerna) - 3 guld, 1 silver, 0 brons

Steg 3: Avgör vilken idrottsman som har flest medaljer. Efter att ha granskat listan över enskilda idrottare som vann flera medaljer i OS i Sydney 2000 kan vi se att idrottaren med flest medaljer är Ian Thorpe från Australien, som vann totalt 5 medaljer (3 guld och 2 silver).

Därför är SVARET: Ian Thorpe.

Ange utdatastrukturen

Om du använder din uppmaning för att ange strukturen för utdata kan det ha en betydande inverkan på resultatets natur och kvalitet. Ibland kanske systemmeddelandeindata som "endast skriver sanna fakta" eller "inte fabricerar information" kanske inte är tillräckliga åtgärder. I stället kan en begäran om att modellsvaret även ska innehålla citat bidra till att minska förekomsten av felaktiga svar.

Om du instruerar modellen att citera källmaterialet när den gör -instruktioner är dessa instruktioner mycket mer benägna att grundas. Att be om citat gör det så att modellen måste göra två fel varje gång den genererar ett svar: det första felet är det fabricerade svaret och det andra är den felaktiga källhänvisning. Observera att ju närmare citatet är den text som den stöder, desto kortare är avståndet före modellen för att förutse citatet, vilket tyder på att infogade citat är bättre minskningar för falsk innehållsgenerering än citat i slutet av innehållet.

På samma sätt, om du ber modellen att extrahera faktauttryck från ett stycke, kan den extrahera sammansatta instruktioner som "X gör Y OCH Z" (vilket kan vara svårare att verifiera). Detta kan undvikas genom att ange en utdatastruktur som (entitet1, relation, entitet2).

Exemplen nedan visar hur du använder citat och dirigerar modellsvaret så att det passar en definierad struktur.

Systemmeddelande User Assistent
Du är en AI-assistent som hjälper människor att hitta information Visa en lista över de olika beteenden som visas av kundsupportagenten i följande konversation.
---
hej tack för att ringa contoso apotek som jag talar med idag jag förstår din frustration mary um kan du berätta vad exakt du försöker åstadkomma OK uh verkligen glad att kontrollera att för dig ett ögonblick snälla jag ser här att du var på en generisk form av lipitor är att rätt OK uh så jag ser att din läkare slutat förskriva dessa läkemedel i tjugo tjugoen faktiskt OK uh Ja jag skulle gärna kontrollera att för dig uh eftersom ibland finns det en lucka i systemet och det bara inte får rapporteras så låt mig ta en titt här bara ett ögonblick så jag ser här att din läkare hade dessa läkemedel ordinerade till dig från tjugo tolv till tjugo tjugo en OK um ja enligt de senaste posterna uh som tillhandahålls av läkarmottagningen du nu på en annan drog metformin skulle du gillar oss att gå vidare och fylla det receptet för dig för plocka upp lite form i fem hundra milligram uh du är mycket välkommen mary vänligen låt oss veta om det finns något annat vi kan göra för dig idag.
---
Hur svarade kundsupportagenten?
Klassificera och lista ned deras olika beteenden och ange orsaken bakom klassificeringen med formatet BEHAVIOR("reason")
1. Polite Greeting BEHAVIOR("Agenten startar konversationen med en artig hälsning och ber om uppringarens namn")
2. Empatiskt BETEENDE("Agenten erkänner Marys frustration och försöker förstå hennes oro")
3. Uppmärksamt BETEENDE("Agenten lyssnar på kundens problem och ber om mer information")
4. Proaktivt BETEENDE("Agenten erbjuder sig att kontrollera problemet för kunden")
5. Informativt BETEENDE("Agenten tillhandahåller relevant information om kundens recepthistorik")
6. Grundligt BETEENDE("Agent söker efter eventuella luckor i systemet och ger ett fullständigt svar")
7. Confirmatory BEHAVIOR("Agent bekräftar den aktuella medicinen med kunden")
8. Lösningsorienterat BETEENDE("Agenten erbjuder sig att fylla det nya receptet för kunden")
9. Artigt BETEENDE("Agenten tackar kunden och erbjuder ytterligare hjälp om det behövs")
Systemmeddelande User Assistent
Du är en AI-assistent som hjälper människor att hitta information. Gruppera följande nyhetsrubriker i ämneskategorier baserat på mönster som visas i texten. Nämn även resonemang bakom hur dessa kategorier definierades.
Utdataformat:
{
"TOPIC_NAME": "",
"RUBRIKER": [],
"RESONEMANG": ""
}

Nyhetsrubriker för indata:
1. "Från böcker till presentationer i 10-talet med AR + ML"
2. "Demo från 1993 av 32-årige Yann LeCun visar upp världens första Convolutional Network for Text Recognition"
3. "First Order Motion Model applied to animate paintings"
4. "Robinhood och andra mäklare blockerar bokstavligen inköp av $GME, $NOK, $BB, $AMC; allow sells"
5. "United Airlines aktie ner över 5% förmarknadshandel"
Utdata:

{
"ARTIFICIAL_INTELLIGENCE": {
"RUBRIKER": [
"Från böcker till presentationer i 10-talet med AR + ML",
"Demo från 1993 av 32-årige Yann LeCun visar upp världens första Convolutional Network for Text Recognition",
"First Order Motion Model tillämpas på animera målningar"
],
"REASONING": "Dessa rubriker är relaterade till artificiell intelligens, maskininlärning och deras program inom olika områden."
},
"FINANCIAL_MARKETS": {
"RUBRIKER": [
"Robinhood och andra mäklare blockerar bokstavligen inköp av $GME, $NOK, $BB, $AMC; allow sells",
"United Airlines aktie ner över 5% förmarknadshandel",
"Bitcoin var nästan 20 000 dollar för ett år sedan idag"
],
"REASONING": "Dessa rubriker är relaterade till finansmarknader, aktier, kryptovalutor och handelsplattformar."
}
}

Parametrar för temperatur och Top_p

Om du ändrar temperaturparametern ändras modellens utdata. Temperaturparametern kan anges mellan 0 och 2. Ett högre värde, till exempel 0,7, gör utdata mer slumpmässiga och ger mer avvikande svar, medan ett lägre värde, till exempel. 0.2, gör resultatet mer fokuserat och konkret. En fiktiv berättelse kan genereras med en högre temperatur. För att generera ett juridiskt dokument rekommenderar vi att du använder en mycket lägre temperatur. Top_probability är en annan parameter och liknar Temperatur eftersom den också styr slumpmässigheten i modellsvaret, men det gör det på ett annat sätt. Den allmänna rekommendationen är att ändra en av dessa två parametrar i taget, inte båda.

Ge grundkontext

Ett av de mest effektiva sätten att ge tillförlitliga svar är att ge modelldata för att hämta sina svar från (grunddata). Om ditt användningsfall förlitar sig på uppdaterad, tillförlitlig information och inte bara är ett kreativt scenario rekommenderar vi starkt att du tillhandahåller grunddata. I allmänhet, ju närmare du kan få ditt källmaterial till den slutliga formen av det svar du vill ha, desto mindre arbete behöver modellen göra, vilket innebär att det finns mindre möjlighet till fel. Här är ett exempel där systemet tillhandahålls en nyligen genomförd blogg som beskriver lanseringen av GPT-4 i Azure OpenAI Service och uppmanas att namnge några av sina tidiga kunder.

Systemmeddelande User Assistent
Du är en AI-assistent som hjälper människor att hitta information. Du kommer att ge svar exklusivt från text nedan och svara med högst 100 ord:
"På Microsoft upptäcker vi ständigt nya sätt att frigöra kreativitet, låsa upp produktivitet och kompetens på hög nivå så att fler kan dra nytta av ai. Detta gör att våra kunder kan ...

… vilket minskar sannolikheten för att modellen genererar ett skadligt svar."1

Svara med 100 ord eller mindre. Använd punktlistor där det är möjligt.
Vilka är några av de tidiga kunderna i Azure OpenAI Service GPT-4-modellerna? Här är några av de tidiga kunderna i Azure OpenAI Service GPT-4-modellerna:
– Epic Healthcare: De planerar att använda GPT-4 för att hjälpa läkare och sjuksköterskor att ägna mindre tid åt datainmatning och undersökning.
– Coursera: De använder Azure OpenAI Service med GPT-4 för att skapa en ny AI-baserad inlärningsupplevelse på sin plattform.
– Coca-Cola: De använder Azure OpenAI för att skapa en kunskapshubb och planerar att utnyttja GPT-4:s multimodala funktioner för marknadsföring, reklam, PR och kundrelationer.
– Andra företag av alla storlekar använder Azure AI för att förbättra kundupplevelser, sammanfatta långformatsinnehåll, hjälpa till att skriva programvara och minska risken genom att förutsäga rätt skattedata.

1 Text från Startbloggen för Azure OpenAI GPT-4.

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.