Dela via


Lär dig hur du genererar eller manipulerar text med hjälp av API:et för äldre slutföranden

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. Om du vill 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 uppmaningen "Som Descartes sa, tror jag därför" till API:et. I den här prompten returnerar Azure OpenAI slutpunkten "Jag är" med hög sannolikhet.

Viktigt!

Om du inte har ett specifikt användningsfall som kräver slutpunkten för slutföranden rekommenderar vi i stället att du använder slutpunkten för chattslutpunkter som gör att du kan dra nytta av de senaste modellerna som GPT-4o, GPT-4o mini och GPT-4 Turbo.

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 prompten 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 genererar 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. Utdataframgången 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 fråga innehåller tillräckligt med information för att modellen ska veta vad du vill ha och hur den ska svara.

Kommentar

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

Designa prompter

Azure OpenAI Service-modeller 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 ska du inkludera 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 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 ska vara?
  • Finns det tillräckligt med exempel?
  • Har du kontrollerat dina exempel efter misstag? (API:et meddelar dig inte direkt.)
  • Använder du inställningarna och Top P sannolikheten Temperature 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. Sentimentet 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 beskrivningar av oformaterade språk. Du kan ofta använda kortkommandon eller nycklar för att ange indata och utdata när du skapar din fråga, 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å alla 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 även konvertera uttryck till och från dem. Använd vanliga uttrycksformer för dina exempel som bästa svar.

  • Använd färre exempel för välbekanta uppgifter. Den här klassificeraren innehåller bara ett fåtal exempel eftersom API:et redan har en förståelse för sentiment 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 gå vidare med 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 med 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 att tillämpa 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 följer några punkter:

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

Utlösaridéer

En av de mest kraftfulla men enklaste uppgifter 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 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 fråga 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, framhävs 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 stöter på text som verkar ofullständig, till exempel prompttexten "2",, försöker den först fastställa all 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 generationstekniker. 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 högkvalitativa variationer i dina exempel kan dramatiskt 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. Chattens slutförandemodeller och slutpunkt 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 en AI som svarar 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 underhållande och något användbar virtuell assistent. För att hjälpa API:et att förstå rollens karaktär ger du 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 uppmaningarna beskriver du avsikten med interaktionen till API:et. I det här fallet "en konversation". Den här indatan förbereder API:et för att bearbeta efterföljande indata enligt den ursprungliga 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: "Assistenten är användbar, kreativ, smart och mycket vänlig." Utan dina explicita 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 svarar API:et 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 ligger så nära sanningen som möjligt. Du kan använda teckenidentitetsbeskrivningar på andra sätt för att skapa olika typer av chattrobotar. Om du uppmanar API:et att svara som forskare inom biologi får du intelligenta och tankeväckande 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ätta från ett språk till ett annat

Den här demonstrationen instruerar API:et om hur du konverterar engelskspråkiga fraser 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 av ett barn i primär ålder. Det här exemplet visar 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 drivs när det har bearbetat ett stort textblock:

  • Omslut 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 partiella text- och kodindata

Även om alla frågor resulterar i slutföranden kan det 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 tanketåg.

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 den konstanta HeaderComponent definitionen. 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 kodslutningar:

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

  • 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 tangentiellt mot avsikten som beskrivs i din fråga.

  • Använd Modellerna GPT-35-Turbo och GPT-4 Azure OpenAI. För uppgifter som innebär att förstå eller generera 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 chattavslut.

Generera faktiska svar

API:et har lärt sig kunskap som bygger på faktiska data som granskats under utbildningen. Den använder dessa inlärda data för att bilda sina svar. API:et har dock 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 på dina indata. Du kan definiera grunden för ett sant och faktabaserat 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 du svarar när data inte är tillgängliga för ett faktasvar.

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 man svarar på frågor som det inte kan besvara sakligt.

Som ett skydd anger du sannolikheten Temperature till noll så att API:et är mer sannolikt att svara 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 grundsanning för API:et. Instruera API:et om vad som ska användas som grund för att skapa ett sant och faktabaserat svar baserat på din avsikt. Om du ger API:et en texttext som ska användas för att besvara frågor (till exempel 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 övergår till att skapa ett fabricerat eller konfabulerat svar.

  • Visa API:et hur man svarar 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 det inte kan hitta något faktasvar för. I exemplet lär du API:et att svara med ett frågetecken (?) när motsvarande data inte kan hittas. Den här metoden hjälper även API:et att lära sig när svaret med "Jag vet inte" är mer "korrekt" än att skapa ett svar.

Arbeta med kod

Codex-modellserien är en ättling till OpenAI:s bas-GPT-3-serie som har tränats på både naturligt språk och miljarder kodrader. Det är mest kapabelt i Python och kunnigt i ö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