Dela via


Lär dig hur du genererar eller ändrar text

Azure OpenAI Service tillhandahåller en slutpunkt för slutförande som kan användas för en mängd olika uppgifter. Slutpunkten tillhandahåller ett enkelt men kraftfullt text-in-, text-out-gränssnitt till valfri Azure OpenAI-modell. För att utlösa slutförandet anger du text som en uppmaning. Modellen genererar slutförandet och försöker matcha kontexten eller mönstret. Anta att du anger frågan "Som Descartes sa, tror jag därför" till API:et. För den här prompten returnerar Azure OpenAI slutpunkten "Jag är" med hög sannolikhet.

Det bästa sättet att börja utforska slutföranden är via lekplatsen i Azure OpenAI Studio. Det är en enkel textruta där du anger en uppmaning om att generera ett slutförande. Du kan börja med en enkel fråga som den här:

write a tagline for an ice cream shop

När du har angett din uppmaning visar Azure OpenAI slutförandet:

we serve up smiles with every scoop!

De slutföranderesultat som du ser kan skilja sig åt eftersom Azure OpenAI-API:et producerar nya utdata för varje interaktion. Du kan få en något annorlunda slutförande varje gång du anropar API:et, även om din fråga förblir densamma. Du kan styra det här beteendet med inställningen Temperature .

Det enkla text-in-, text-out-gränssnittet innebär att du kan "programmera" Azure OpenAI-modellen genom att ge instruktioner eller bara några exempel på vad du vill att den ska göra. Resultatet beror vanligtvis på komplexiteten i uppgiften och kvaliteten på din fråga. En allmän regel är att tänka på hur du skulle skriva ett ordproblem för en pre-teenage student att lösa. En välskriven uppmaning innehåller tillräckligt med information för att modellen ska veta vad du vill och hur den ska svara.

Anteckning

Modellträningsdata kan vara olika för varje modelltyp. Den senaste modellens träningsdata sträcker sig för närvarande endast till och med september 2021. Beroende på din uppmaning kanske modellen inte har kunskap om relaterade aktuella händelser.

Designa frågor

Azure OpenAI-tjänstmodeller kan göra allt från att generera originalberättelser till att utföra komplex textanalys. Eftersom de kan göra så många saker måste du vara tydlig med att visa vad du vill. Att visa, inte bara beordra, är ofta hemligheten till en bra uppmaning.

Modellerna försöker förutsäga vad du vill ha från prompten. Om du anger uppmaningen "Ge mig en lista över kattraser" förutsätter modellen inte automatiskt att du bara ber om en lista. Du kanske startar en konversation där dina första ord är "Ge mig en lista över kattraser" följt av "och jag ska berätta vilka jag gillar." Om modellen bara antog att du ville ha en lista över katter skulle den inte vara lika bra på att skapa innehåll, klassificering eller andra uppgifter.

Riktlinjer för att skapa robusta frågor

Det finns tre grundläggande riktlinjer för att skapa användbara frågor:

  • Visa och berätta. Gör det tydligt vad du vill ha antingen genom instruktioner, exempel eller en kombination av de två. Om du vill att modellen ska rangordna en lista med objekt i alfabetisk ordning eller klassificera ett stycke efter attityd, tar du med den här informationen i din uppmaning för att visa modellen.

  • Ange kvalitetsdata. Om du försöker skapa en klassificerare eller få modellen att följa ett mönster kontrollerar du att det finns tillräckligt med exempel. Se till att korrekturläsa dina exempel. Modellen är smart nog att lösa grundläggande stavfel och ge dig ett meningsfullt svar. Omvänt kan modellen anta att misstagen är avsiktliga, vilket kan påverka svaret.

  • Kontrollera inställningarna. Sannolikhetsinställningar, till exempel Temperature och Top P, styr hur deterministisk modellen är när ett svar genereras. Om du ber om ett svar där det bara finns ett rätt svar bör du ange lägre värden för de här inställningarna. Om du letar efter ett svar som inte är uppenbart kanske du vill använda högre värden. Det vanligaste misstaget som användarna gör med de här inställningarna är att anta att de kontrollerar "smarthet" eller "kreativitet" i modellsvaret.

Felsökning för problem med frågor och svar

Om du har problem med att få API:et att fungera som förväntat läser du följande punkter för implementeringen:

  • Är det tydligt vad den avsedda generationen bör vara?
  • Finns det tillräckligt med exempel?
  • Har du kontrollerat dina exempel efter misstag? (API:et berättar inte direkt.)
  • Använder du sannolikhetsinställningarna Temperature och Top P korrekt?

Klassificera text

Om du vill skapa en textklassificerare med API:et anger du en beskrivning av uppgiften och ger några exempel. I den här demonstrationen visar du API:et hur du klassificerar sentimentet för textmeddelanden. Attityden uttrycker den övergripande känslan eller uttrycket i texten.

This is a text message sentiment classifier

Message: "I loved the new adventure movie!"
Sentiment: Positive

Message: "I hate it when my phone battery dies." 
Sentiment: Negative

Message: "My day has been 👍"
Sentiment: Positive

Message: "This is the link to the article"
Sentiment: Neutral

Message: "This new music video is unreal"
Sentiment:

Riktlinjer för att utforma textklassificerare

Den här demonstrationen visar flera riktlinjer för att utforma klassificerare:

  • Använd vanligt språk för att beskriva dina indata och utdata. Använd vanligt språk för indatan "Meddelande" och det förväntade värdet som uttrycker "Sentiment". För bästa praxis börjar du med enkla språkbeskrivningar. Du kan ofta använda kortkommandon eller nycklar för att ange indata och utdata när du skapar din uppmaning, men det är bäst att börja med att vara så beskrivande som möjligt. Sedan kan du arbeta bakåt och ta bort extra ord så länge prestandan i prompten är konsekvent.

  • Visa API:et hur du svarar på valfritt fall. Demonstrationen ger flera resultat: "Positiv", "Negativ" och "Neutral". Att stödja ett neutralt resultat är viktigt eftersom det finns många fall där även en människa kan ha svårt att avgöra om något är positivt eller negativt.

  • Använd emoji och text enligt det vanliga uttrycket. Demonstrationen visar att klassificeraren kan vara en blandning av text och emoji 👍. API:et läser emoji och kan till och med konvertera uttryck till och från dem. Använd vanliga uttrycksformer för dina exempel för bästa svar.

  • Använd färre exempel för välbekanta uppgifter. Den här klassificeraren innehåller bara några exempel eftersom API:et redan har en förståelse för attityd och begreppet textmeddelande. Om du skapar en klassificerare för något som API:et kanske inte är bekant med kan det vara nödvändigt att ange fler exempel.

Flera resultat från ett enda API-anrop

Nu när du förstår hur du skapar en klassificerare ska vi utöka den första demonstrationen för att göra den mer effektiv. Du vill kunna använda klassificeraren för att få tillbaka flera resultat från ett enda API-anrop.

This is a text message sentiment classifier

Message: "I loved the new adventure movie!"
Sentiment: Positive

Message: "I hate it when my phone battery dies"
Sentiment: Negative

Message: "My day has been 👍"
Sentiment: Positive

Message: "This is the link to the article"
Sentiment: Neutral

Message text
1. "I loved the new adventure movie!"
2. "I hate it when my phone battery dies"
3. "My day has been 👍"
4. "This is the link to the article"
5. "This new music video is unreal"

Message sentiment ratings:
1: Positive
2: Negative
3: Positive
4: Neutral
5: Positive

Message text
1. "He doesn't like homework"
2. "The taxi is late. She's angry 😠"
3. "I can't wait for the weekend!!!"
4. "My cat is adorable ❤️❤️"
5. "Let's try chocolate bananas"

Message sentiment ratings:
1.

Den här demonstrationen visar API:et hur du klassificerar textmeddelanden efter attityd. Du anger en numrerad lista över meddelanden och en lista över sentimentklassificeringar med samma talindex. API:et använder informationen i den första demonstrationen för att lära sig att klassificera sentiment för ett enda textmeddelande. I den andra demonstrationen lär sig modellen hur du tillämpar attitydklassificeringen på en lista med textmeddelanden. Med den här metoden kan API:et betygsätta fem (och ännu fler) textmeddelanden i ett enda API-anrop.

Viktigt

När du ber API:et att skapa listor eller utvärdera text är det viktigt att hjälpa API:et att undvika drift. Här är några saker att följa:

  • Var noga med dina värden för inställningarna eller Temperature sannolikhetsinställningarnaTop P.
  • Kör flera tester för att kontrollera att sannolikhetsinställningarna är korrekt kalibrerade.
  • Använd inte långa listor. Långa listor kan leda till drift.

Utlösa idéer

En av de mest kraftfulla men enklaste uppgifterna du kan utföra med API:et är att generera nya idéer eller versioner av indata. Anta att du skriver en mystisk roman och du behöver några berättelseidéer. Du kan ge API:et en lista med några idéer och försöker lägga till fler idéer i listan. API:et kan skapa affärsplaner, teckenbeskrivningar, marknadsföringssloganer och mycket mer från bara en liten handfull exempel.

I nästa demonstration använder du API:et för att skapa fler exempel på hur du använder virtuell verklighet i klassrummet:

Ideas involving education and virtual reality

1. Virtual Mars
Students get to explore Mars via virtual reality and go on missions to collect and catalog what they see.

2.

Den här demonstrationen ger API:et en grundläggande beskrivning för din lista tillsammans med ett listobjekt. Sedan använder du en ofullständig uppmaning om "2" för att utlösa ett svar från API:et. API:et tolkar den ofullständiga posten som en begäran om att generera liknande objekt och lägga till dem i listan.

Riktlinjer för att utlösa idéer

Även om den här demonstrationen använder en enkel uppmaning, belyser den flera riktlinjer för att utlösa nya idéer:

  • Förklara avsikten med listan. Precis som demonstrationen för textklassificeraren börjar du med att berätta för API:et vad listan handlar om. Den här metoden hjälper API:et att fokusera på att slutföra listan i stället för att försöka fastställa mönster genom att analysera texten.

  • Ange mönstret för objekten i listan. När du anger en beskrivning med en mening försöker API:et följa det mönstret när nya objekt genereras för listan. Om du vill ha ett mer utförligt svar måste du upprätta den avsikten med mer detaljerade textindata till API:et.

  • Fråga API:et med en ofullständig post för att utlösa nya idéer. När API:et påträffar text som verkar ofullständig, till exempel prompttexten "2", försöker det först fastställa vilken text som kan slutföra posten. Eftersom demonstrationen hade en listrubrik och ett exempel med numret "1" och tillhörande text tolkade API:et den ofullständiga prompttexten "2" som en begäran om att fortsätta lägga till objekt i listan.

  • Utforska avancerade genereringstekniker. Du kan förbättra kvaliteten på svaren genom att göra en mer varierad lista i prompten. En metod är att börja med ett exempel, låta API:et generera fler exempel och sedan välja de exempel som du gillar bäst och lägga till dem i listan. Några fler varianter av hög kvalitet i dina exempel kan avsevärt förbättra kvaliteten på svaren.

Föra konversationer

Från och med lanseringen av GPT-35-Turbo och GPT-4 rekommenderar vi att du skapar konversationsgenerering och chattrobotar med hjälp av modeller som stöder slutpunkten för chattens slutförande. Modeller och slutpunkter för chattens slutförande kräver en annan indatastruktur än slutpunkten för slutförande.

API:et är skickligt på att föra konversationer med människor och även med sig själv. Med bara några få instruktionsrader kan API:et fungera som en kundtjänstchattrobot som intelligent svarar på frågor utan att bli förvirrad, eller en klok konversationspartner som skämtar och ordvitsar. Nyckeln är att berätta för API:et hur det ska bete sig och sedan ge några exempel.

I den här demonstrationen tillhandahåller API:et rollen för ett AI-svar på frågor:

The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.

Human: Hello, who are you?
AI: I am an AI created by OpenAI. How can I help you today?
Human: 

Låt oss titta på en variant för en chattrobot med namnet "Cramer", en rolig och något användbar virtuell assistent. För att hjälpa API:et att förstå rollens karaktär kan du ge några exempel på frågor och svar. Allt som krävs är bara några sarkastiska svar och API:et kan hämta mönstret och ge ett oändligt antal liknande svar.

Cramer is a chatbot that reluctantly answers questions.

###
User: How many pounds are in a kilogram?
Cramer: This again? There are 2.2 pounds in a kilogram. Please make a note of this.
###
User: What does HTML stand for?
Cramer: Was Google too busy? Hypertext Markup Language. The T is for try to ask better questions in the future.
###
User: When did the first airplane fly?
Cramer: On December 17, 1903, Wilbur and Orville Wright made the first flights. I wish they'd come and take me away.
###
User: Who was the first man in space?
Cramer: 

Riktlinjer för att utforma konversationer

Våra demonstrationer visar hur enkelt du kan skapa en chattrobot som kan föra en konversation vidare. Även om det ser enkelt ut följer den här metoden flera viktiga riktlinjer:

  • Definiera avsikten med konversationen. Precis som de andra prompterna beskriver du avsikten med interaktionen med API:et. I det här fallet "en konversation". Dessa indata förbereder API:et för att bearbeta efterföljande indata enligt den inledande avsikten.

  • Tala om för API:et hur det ska bete sig. En viktig detalj i den här demonstrationen är de explicita instruktionerna för hur API:et ska interagera: "Den assistent är användbar, kreativ, smart och mycket vänlig." Utan dina uttryckliga instruktioner kan API:et avvika och efterlikna den människa som det interagerar med. API:et kan bli ovänligt eller uppvisa andra oönskade beteenden.

  • Ge API:et en identitet. I början får du API:et att svara som en AI som skapats av OpenAI. Även om API:et inte har någon inbyggd identitet hjälper teckenbeskrivningen API:et att svara på ett sätt som är så nära sanningen som möjligt. Du kan använda beskrivningar av teckenidentiteter på andra sätt för att skapa olika typer av chattrobotar. Om du ber API:et att svara som forskare inom biologi får du intelligenta och genomtänkta kommentarer från API:et som liknar vad du kan förvänta dig av någon med den bakgrunden.

Transformera text

API:et är en språkmodell som är bekant med olika sätt som ord och teckenidentiteter kan användas för att uttrycka information. Kunskapsdata stöder omvandling av text från naturligt språk till kod och översättning mellan andra språk och engelska. API:et kan också förstå innehåll på en nivå som gör att det kan sammanfatta, konvertera och uttrycka det på olika sätt. Nu ska vi titta på några exempel.

Översätt från ett språk till ett annat

Den här demonstrationen instruerar API:et om hur man konverterar fraser på engelska till franska:

English: I do not speak French.
French: Je ne parle pas français.
English: See you later!
French: À tout à l'heure!
English: Where is a good restaurant?
French: Où est un bon restaurant?
English: What rooms do you have available?
French: Quelles chambres avez-vous de disponible?
English:

Det här exemplet fungerar eftersom API:et redan har ett grepp om det franska språket. Du behöver inte försöka lära ut språket till API:et. Du behöver bara tillhandahålla tillräckligt med exempel för att hjälpa API:et att förstå din begäran om att konvertera från ett språk till ett annat.

Om du vill översätta från engelska till ett språk som API:et inte känner igen måste du ge API:et fler exempel och en finjusterad modell som kan producera flytande översättningar.

Konvertera mellan text och emoji

Den här demonstrationen konverterar namnet på en film från text till emojitecken. Det här exemplet visar API:ets anpassningsbarhet för att hämta mönster och arbeta med andra tecken.

Carpool Time: 👨👴👩🚗🕒
Robots in Cars: 🚗🤖
Super Femme: 👸🏻👸🏼👸🏽👸🏾👸🏿
Webs of the Spider: 🕸🕷🕸🕸🕷🕸
The Three Bears: 🐻🐼🐻
Mobster Family: 👨👩👧🕵🏻‍♂️👲💥
Arrows and Swords: 🏹🗡🗡🏹
Snowmobiles:

Sammanfatta text

API:et kan förstå kontexten för text och omformulera den på olika sätt. I den här demonstrationen tar API:et ett textblock och skapar en förklaring som är begriplig för ett underordnat barn i primär ålder. Det här exemplet illustrerar att API:et har ett djupt grepp om språket.

My ten-year-old asked me what this passage means:
"""
A neutron star is the collapsed core of a massive supergiant star, which had a total mass of between 10 and 25 solar masses, possibly more if the star was especially metal-rich.[1] Neutron stars are the smallest and densest stellar objects, excluding black holes and hypothetical white holes, quark stars, and strange stars.[2] Neutron stars have a radius on the order of 10 kilometres (6.2 mi) and a mass of about 1.4 solar masses.[3] They result from the supernova explosion of a massive star, combined with gravitational collapse, that compresses the core past white dwarf star density to that of atomic nuclei.
"""

I rephrased it for him, in plain language a ten-year-old can understand:
"""

Riktlinjer för att skapa textsammanfattningar

Textsammanfattning innebär ofta att stora mängder text skickas till API:et. Följ dessa riktlinjer för att förhindra att API:et avviker när det har bearbetat ett stort textblock:

  • Omge texten för att sammanfatta inom dubbla tre citattecken. I det här exemplet anger du tre dubbla citattecken (""") på en separat rad före och efter textblocket som ska sammanfattas. Formateringsformatet definierar tydligt början och slutet på det stora textblock som ska bearbetas.

  • Förklara sammanfattnings avsikten och målgruppen före och efter sammanfattningen. Observera att det här exemplet skiljer sig från de andra eftersom du ger instruktioner till API:et två gånger: före och efter texten som ska bearbetas. De redundanta instruktionerna hjälper API:et att fokusera på din avsedda uppgift och undvika drift.

Slutföra partiell text och kodindata

Alla frågor resulterar i slutföranden, men det kan vara bra att tänka på att text har slutförts som en egen uppgift i instanser där du vill att API:et ska fortsätta där du slutade.

I den här demonstrationen anger du en textprompt till API:et som verkar vara ofullständigt. Du stoppar textposten på ordet "och". API:et tolkar den ofullständiga texten som en utlösare för att fortsätta ditt tankesätt.

Vertical farming provides a novel solution for producing food locally, reducing transportation costs and

Nästa demonstration visar hur du kan använda slutförandefunktionen för att skriva React kodkomponenter. Du börjar med att skicka kod till API:et. Du stoppar kodposten med en öppen parentes (. API:et tolkar den ofullständiga koden som en utlösare för att slutföra konstantdefinitionen HeaderComponent . API:et kan slutföra den här koddefinitionen eftersom det har en förståelse för motsvarande React bibliotek.

import React from 'react';
const HeaderComponent = () => (

Riktlinjer för att generera slutföranden

Här följer några användbara riktlinjer för att använda API:et för att generera text- och kodkompletteringar:

  • Sänk temperaturen för att hålla API:et fokuserat. Ange lägre värden för inställningen Temperature för att instruera API:et att tillhandahålla svar som fokuserar på avsikten som beskrivs i prompten.

  • Höj temperaturen så att API:et kan tangensa. Ange högre värden för inställningen så Temperature att API:et kan svara på ett sätt som är tangens för avsikten som beskrivs i prompten.

  • Använd Azure OpenAI-modellerna GPT-35-Turbo och GPT-4. För uppgifter som inbegriper förståelse eller generering av kod rekommenderar Microsoft att du använder GPT-35-Turbo Azure OpenAI-modellerna och GPT-4 . Dessa modeller använder det nya formatet för chattens slutförande.

Generera faktiska svar

API:et har lärt sig kunskap som bygger på faktiska data som granskas under träningen. Den använder dessa inlärda data för att bilda sina svar. MEN API:et har också möjlighet att svara på ett sätt som låter sant, men som i själva verket är fabricerat.

Det finns några sätt att begränsa sannolikheten för att API:et utgör ett svar som svar på dina indata. Du kan definiera grunden för ett sant och faktiskt svar, så API:et utarbetar sitt svar från dina data. Du kan också ange ett lågt Temperature sannolikhetsvärde och visa API:et hur det ska svara när data inte är tillgängliga för ett faktiskt svar.

Följande demonstration visar hur du lär API:et att svara på ett mer sakligt sätt. Du ger API:et exempel på frågor och svar som det förstår. Du kan också ange exempel på frågor ("Q") som den kanske inte känner igen och använder ett frågetecken för svarets ("A") utdata. Den här metoden lär API:et hur det svarar på frågor som det inte kan besvara sakligt.

Som skydd anger du sannolikheten Temperature till noll så att API:et mer sannolikt svarar med ett frågetecken (?) om det finns några tvivel om det sanna och faktiska svaret.

Q: Who is Batman?
A: Batman is a fictional comic book character.

Q: What is torsalplexity?
A: ?

Q: What is Devz9?
A: ?

Q: Who is George Lucas?
A: George Lucas is an American film director and producer famous for creating Star Wars.

Q: What is the capital of California?
A: Sacramento.

Q: What orbits the Earth?
A: The Moon.

Q: Who is Egad Debunk?
A: ?

Q: What is an atom?
A: An atom is a tiny particle that makes up everything.

Q: Who is Alvan Muntz?
A: ?

Q: What is Kozar-09?
A: ?

Q: How many moons does Mars have?
A: Two, Phobos and Deimos.

Q:

Riktlinjer för att generera faktiska svar

Nu ska vi gå igenom riktlinjerna för att begränsa sannolikheten för att API:et utgör ett svar:

  • Ange en grundläggande sanning för API:et. Instruera API:et om vad som ska användas som grund för att skapa ett sant och faktiskt svar baserat på din avsikt. Om du ger API:et en texttext som ska användas för att besvara frågor (t.ex. en Wikipedia-post) är det mindre troligt att API:et fabricerar ett svar.

  • Använd en låg sannolikhet. Ange ett lågt Temperature sannolikhetsvärde så att API:et förblir fokuserat på din avsikt och inte hindrar att ett fabricerat eller konfabulerat svar skapas.

  • Visa API:et hur det ska svara med "Jag vet inte". Du kan ange exempelfrågor och svar som lär API:et att använda ett specifikt svar för frågor som inte kan hitta något faktasvar. I exemplet lär du API:et att svara med ett frågetecken (?) när det inte kan hitta motsvarande data. Den här metoden hjälper även API:et att lära sig att svara med "Jag vet inte" är mer "korrekt" än att hitta på ett svar.

Arbeta med kod

Codex-modellserien är en ättling till OpenAI:s basserie GPT-3 som har tränats på både naturligt språk och miljarder kodrader. Det är mest kapabelt i Python och skickligt på över ett dussin språk, inklusive C#, JavaScript, Go, Perl, PHP, Ruby, Swift, TypeScript, SQL och till och med Shell.

Mer information om hur du genererar kodslutningar finns i Codex-modeller och Azure OpenAI Service.

Nästa steg