Så fungerar promptutformning
På grund av hur OpenAI:s modeller tränas finns det specifika promptformat som fungerar särskilt bra och leder till mer användbara modellutdata. Den officiella guiden om promptutformning från OpenAI är vanligtvis det bästa stället att börja på för tips om promptar.
Nedan presenterar vi ett antal promptformat som vi tycker fungerar bra, men utforska gärna olika format som kan passa din uppgift bättre.
Tumregler och exempel
Obs!: "{text input here}" är en platshållare för faktisk text/kontext
1. Använd den senaste modellen
För bästa resultat rekommenderar vi i allmänhet att du använder de senaste och mest kapabla modellerna. Nyare modeller tenderar att vara lättare att utforma prompter för.
Obs!: Det finns vissa skillnader att ta hänsyn till när man promptar en resonemangsmodell jämfört med när man promptar en GPT-modell. Mer information här.
2. Placera instruktioner i början av prompten och använd ### eller """ för att skilja instruktionen från kontexten
Mindre effektivt ❌:
Sammanfatta texten nedan som en punktlista med de viktigaste punkterna.
{text input here}Bättre ✅:
Sammanfatta texten nedan som en punktlista med de viktigaste punkterna.
Text: """
{text input here}
"""3. Var specifik, beskrivande och så detaljerad som möjligt om önskad kontext, resultat, längd, format, stil osv.
Var specifik om kontext, resultat, längd, format, stil osv.
Mindre effektivt ❌:
Skriv en dikt om OpenAI. Bättre ✅:
Skriv en kort inspirerande dikt om OpenAI, med fokus på den senaste produktlanseringen av DALL-E (DALL-E är en text-till-bild-ML-modell) i stil med en {famous poet}4. Beskriv önskat utdataformat med hjälp av exempel
Mindre effektivt ❌:
Extrahera de entiteter som nämns i texten nedan. Extrahera följande 4 entitetstyper: företagsnamn, personnamn, specifika ämnen och teman.
Text: {text}Visa och berätta – modellerna svarar bättre när de får se specifika formatkrav. Det gör det också enklare att programmatiskt tolka flera utdata på ett tillförlitligt sätt.
Bättre ✅:
Extrahera de viktiga entiteter som nämns i texten nedan. Extrahera först alla företagsnamn, sedan alla personnamn, därefter specifika ämnen som passar innehållet och slutligen allmänna övergripande teman
Önskat format:
Företagsnamn: <kommaseparerad_lista_med_företagsnamn>
Personnamn: -||-
Specifika ämnen: -||-
Allmänna teman: -||-
Text: {text}5. Börja med zero-shot, sedan few-shot; om inget av dem fungerade, finjustera
✅ Zero-shot
Extrahera nyckelord från texten nedan.
Text: {text}
Nyckelord:✅ Few-shot – ange ett par exempel
Extrahera nyckelord från motsvarande texter nedan.
Text 1: Stripe tillhandahåller API:er som webbutvecklare kan använda för att integrera betalningshantering i sina webbplatser och mobilapplikationer.
Nyckelord 1: Stripe, betalningshantering, API:er, webbutvecklare, webbplatser, mobilapplikationer
##
Text 2: OpenAI har tränat banbrytande språkmodeller som är mycket bra på att förstå och generera text. Vårt API ger åtkomst till dessa modeller och kan användas för att lösa i stort sett alla uppgifter som innebär språkbehandling.
Nyckelord 2: OpenAI, språkmodeller, textbehandling, API.
##
Text 3: {text}
Nyckelord 3:✅Finjustera: se bästa praxis för finjustering här.
6. Minska ”fluffiga” och oprecisa beskrivningar
Mindre effektivt ❌:
Beskrivningen av den här produkten ska vara ganska kort, bara några meningar, och inte mycket mer.Bättre ✅:
Använd ett stycke på 3 till 5 meningar för att beskriva den här produkten.7. I stället för att bara säga vad som inte ska göras, säg vad som ska göras i stället
Mindre effektivt ❌:
Följande är en konversation mellan en Agent och en kund. FRÅGA INTE EFTER ANVÄNDARNAMN ELLER LÖSENORD. UPPREPA INTE.
Kund: Jag kan inte logga in på mitt konto.
Agent:Bättre ✅:
Följande är en konversation mellan en Agent och en kund. Agenten ska försöka diagnostisera problemet och föreslå en lösning, samtidigt som den avstår från att ställa frågor relaterade till PII. I stället för att be om PII, såsom användarnamn eller lösenord, hänvisa användaren till hjälpartikeln www.samplewebsite.com/help/faq
Kund: Jag kan inte logga in på mitt konto.
Agent:8. Specifikt för kodgenerering – använd ”inledande ord” för att styra modellen mot ett visst mönster
Mindre effektivt ❌:
# Skriv en enkel pythonfunktion som
# 1. Ber mig om ett tal i miles
# 2. Konverterar miles till kilometerI kodexemplet nedan antyder tillägget av ”import” för modellen att den ska börja skriva i Python. (På samma sätt är ”SELECT” en bra ledtråd för början av en SQL-sats.)
Bättre ✅:
# Skriv en enkel pythonfunktion som
# 1. Ber mig om ett tal i miles
# 2. Konverterar miles till kilometer
import9. Använd funktionen Generera vad som helst
Utvecklare kan använda funktionen ”Generera vad som helst” för att beskriva en uppgift eller förväntade utdata på naturligt språk och få en skräddarsydd prompt.
Läs mer om hur du använder funktionen ”Generera vad som helst”.
Parametrar
I allmänhet ser vi att `model` och `temperature` är de parametrar som oftast används för att ändra modellens utdata.
`model` – Modeller med högre prestanda är i allmänhet dyrare och kan ha högre latens.
`temperature` – Ett mått på hur ofta modellen matar ut en mindre sannolik token. Ju högre
temperature, desto mer slumpmässigt (och vanligtvis kreativt) blir resultatet. Detta är dock inte samma sak som ”sanningsenlighet”. För de flesta faktabaserade användningsfall, som dataextraktion och sanningsenliga frågor och svar, är entemperaturepå 0 bäst.`max_completion_tokens` (maximal längd) – Styr inte längden på utdata, utan är en hård gräns för tokengenerering. Helst når du inte den här gränsen ofta, eftersom modellen slutar antingen när den tror att den är klar eller när den når en stoppsekvens du har definierat.
`stop` (stoppsekvenser) – En uppsättning tecken (token) som, när de genereras, gör att textgenereringen stoppas.
Andra parameterbeskrivningar finns i API-referensen.
