Naučte se generovat nebo manipulovat s textem pomocí rozhraní API pro dokončování starší verze.
Služba Azure OpenAI poskytuje koncový bod dokončení, který lze použít pro širokou škálu úloh. Koncový bod poskytuje jednoduché, ale výkonné textové rozhraní pro jakýkoli model Azure OpenAI. K aktivaci dokončení zadáte jako výzvu nějaký text. Model vygeneruje dokončení a pokusí se shodovat s kontextem nebo vzorem. Předpokládejme, že do rozhraní API zadáte výzvu "Jak řekl Descartes, myslím proto" rozhraní API. Pro tuto výzvu Azure OpenAI vrátí koncový bod dokončení "Jsem" s vysokou pravděpodobností.
Důležité
Pokud nemáte konkrétní případ použití, který vyžaduje koncový bod dokončení, doporučujeme místo toho použít koncový bod dokončení chatu, který umožňuje využívat nejnovější modely, jako je GPT-4o, GPT-4o mini a GPT-4 Turbo.
Nejlepší způsob, jak začít zkoumat dokončení, je prostřednictvím dětského hřiště v Azure AI Studiu. Jedná se o jednoduché textové pole, do kterého zadáte výzvu k vygenerování dokončení. Můžete začít jednoduchým dotazem, jako je tento:
write a tagline for an ice cream shop
Po zadání výzvy Azure OpenAI zobrazí dokončení:
we serve up smiles with every scoop!
Výsledky dokončení, které vidíte, se můžou lišit, protože rozhraní API Azure OpenAI vytváří pro každou interakci nový výstup. Při každém volání rozhraní API se může zobrazit trochu jiné dokončování, i když se výzva nezmění. Toto chování můžete řídit nastavením Temperature
.
Jednoduché textové rozhraní znamená, že model Azure OpenAI můžete programovat zadáním pokynů nebo několika příkladů toho, co chcete udělat. Úspěch výstupu obecně závisí na složitosti úlohy a kvality výzvy. Obecné pravidlo je přemýšlet o tom, jak byste napsali slovní problém pro předškoláka studenta, který by vyřešil. Dobře napsaná výzva poskytuje dostatek informací pro model, aby věděl, co chcete a jak by měl reagovat.
Poznámka:
Trénovací data modelu se můžou lišit pro každý typ modelu. Nejnovější trénovací data modelu se aktuálně rozšiřují až do září 2021. V závislosti na výzvě nemusí mít model znalosti souvisejících aktuálních událostí.
Výzvy návrhu
Modely služby Azure OpenAI můžou dělat všechno od generování původních scénářů až po provádění komplexní analýzy textu. Protože můžou dělat tolik věcí, musíte být explicitní v zobrazení, co chcete. Tajemstvím dobré výzvy je často ukázka, ne jen příkaz.
Modely se snaží předpovědět, co chcete z výzvy. Pokud zadáte výzvu "Dejte mi seznam plemen koček", model automaticky nepředpokládá, že žádáte pouze o seznam. Možná začínáte konverzaci, kde vaše první slova jsou "Dejte mi seznam plemen kočky" následovaný "a já vám řeknu, které se mi líbí.". Pokud model předpokládal, že jste chtěli seznam koček, nebyl by tak dobrý při vytváření, klasifikaci nebo jiných úlohách obsahu.
Pokyny pro vytváření robustních výzev
Existují tři základní pokyny pro vytváření užitečných výzev:
Ukažte a řekněte. Pomocí pokynů, příkladů nebo kombinace těchto dvou získáte přehled o tom, co chcete. Pokud chcete, aby model hodnotil seznam položek v abecedním pořadí nebo klasifikovala odstavec podle mínění, uveďte tyto podrobnosti do výzvy k zobrazení modelu.
Zadejte kvalitní data. Pokud se pokoušíte sestavit klasifikátor nebo získat model podle vzoru, ujistěte se, že existuje dostatek příkladů. Nezapomeňte si předvést příklady. Model je dostatečně chytrý, aby vyřešil základní pravopisné chyby a poskytl smysluplnou odpověď. Naopak model může předpokládat, že chyby jsou úmyslné, což může ovlivnit odpověď.
Zkontrolujte nastavení. Nastavení pravděpodobnosti, například
Temperature
aTop P
, řídí, jak deterministický model je při generování odpovědi. Pokud žádáte o odpověď, kde je jenom jedna správná odpověď, měli byste pro tato nastavení zadat nižší hodnoty. Pokud hledáte odpověď, která není zřejmé, můžete použít vyšší hodnoty. Nejběžnější chybou, kterou uživatelé s těmito nastaveními dělají, je za předpokladu, že v odpovědi modelu řídí "chytrost" nebo "kreativitu".
Řešení potíží s výzvou
Pokud máte potíže se získáním rozhraní API, aby fungovalo podle očekávání, projděte si následující body vaší implementace:
- Je jasné, co má být zamýšlená generace?
- Existuje dostatek příkladů?
- Zkontrolovali jste příklady chyb? (Rozhraní API vám přímo neřekne.)
- Používáte
Temperature
správně nastavení pravděpodobnostiTop P
?
Klasifikace textu
Pokud chcete vytvořit klasifikátor textu s rozhraním API, zadejte popis úlohy a uveďte několik příkladů. V této ukázce ukážete rozhraní API, jak klasifikovat mínění textových zpráv. Mínění vyjadřuje celkový pocit nebo výraz v textu.
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:
Pokyny pro navrhování klasifikátorů textu
Tato ukázka ukazuje několik pokynů pro navrhování klasifikátorů:
K popisu vstupů a výstupů použijte prostý jazyk. Pro vstup "Zpráva" a očekávanou hodnotu, která vyjadřuje mínění, použijte prostý jazyk. Pro osvědčené postupy začněte popisy ve formátu prostého jazyka. Při vytváření výzvy můžete často použít zkratku nebo klávesy k označení vstupu a výstupu, ale nejlepší je začít popisným způsobem. Pak můžete pracovat zpětně a odebrat nadbytečná slova, pokud je výkon výzvy konzistentní.
Ukažte rozhraní API, jak reagovat na případný případ. Ukázka poskytuje více výsledků: "Pozitivní", "Záporné" a "Neutrální". Podpora neutrálního výsledku je důležitá, protože existuje mnoho případů, kdy i člověk může mít potíže s určením, jestli je něco kladné nebo záporné.
Používejte emoji a text podle společného výrazu. Ukázka ukazuje, že klasifikátor může být kombinací textu a emoji 👍. Rozhraní API čte emoji a může dokonce převést výrazy na a z nich. Pro nejlepší odpověď použijte pro své příklady běžné formy výrazu.
Pro známé úkoly používejte méně příkladů. Tento klasifikátor poskytuje pouze několik příkladů, protože rozhraní API už rozumí mínění a koncept textové zprávy. Pokud vytváříte klasifikátor pro něco, co rozhraní API nemusí znát, může být nutné zadat další příklady.
Více výsledků z jednoho volání rozhraní API
Teď, když rozumíte tomu, jak vytvořit klasifikátor, pojďme se na první ukázku rozšířit, aby byla efektivnější. Chcete mít možnost použít klasifikátor k získání více výsledků z jednoho volání rozhraní API.
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.
Tato ukázka ukazuje rozhraní API, jak klasifikovat textové zprávy podle mínění. Zadáte číslovaný seznam zpráv a seznam hodnocení mínění se stejným indexem čísel. Rozhraní API používá informace v první ukázce k tomu, aby se naučilo klasifikovat mínění pro jednu textovou zprávu. V druhé ukázce se model naučí, jak použít klasifikaci mínění na seznam textových zpráv. Tento přístup umožňuje rozhraní API ohodnotit pět (a ještě více) textových zpráv v jednom volání rozhraní API.
Důležité
Když rozhraní API požádáte o vytvoření seznamů nebo vyhodnocení textu, je důležité, aby se rozhraní API vyhnulo posunu. Tady je několik bodů, které je potřeba sledovat:
- Věnujte pozornost hodnotám
Top P
nastavení pravděpodobnosti.Temperature
- Spusťte více testů, abyste měli jistotu, že jsou správně kalibrovaná nastavení pravděpodobnosti.
- Nepoužívejte dlouhé seznamy. Dlouhé seznamy můžou vést k posunu.
Aktivace nápadů
Jednou z nejvýkonnějších, ale nejjednodušších úloh, které můžete s rozhraním API provést, je generování nových nápadů nebo verzí vstupu. Předpokládejme, že píšete tajemný román a potřebujete nějaké nápady na příběh. Rozhraní API můžete poskytnout seznam několika nápadů a pokusí se do seznamu přidat další nápady. Rozhraní API může vytvářet obchodní plány, popisy znaků, marketingová hesla a mnohem více z několika málo příkladů.
V další ukázce použijete rozhraní API k vytvoření dalších příkladů, jak používat virtuální realitu ve třídě:
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.
Tato ukázka poskytuje rozhraní API se základním popisem seznamu spolu s jednou položkou seznamu. Pak použijete neúplnou výzvu 2 k aktivaci odpovědi z rozhraní API. Rozhraní API interpretuje neúplnou položku jako požadavek na vygenerování podobných položek a jejich přidání do seznamu.
Pokyny pro aktivaci nápadů
I když tato ukázka používá jednoduchou výzvu, zvýrazní několik pokynů pro aktivaci nových nápadů:
Vysvětlete záměr seznamu. Podobně jako u ukázky klasifikátoru textu začnete tím, že rozhraní API řeknete, o čem seznam je. Tento přístup pomáhá rozhraní API soustředit se na dokončení seznamu, a ne na to, abyste se pokusili určit vzory analýzou textu.
Nastavte vzor položek v seznamu. Když zadáte popis jedné věty, rozhraní API se pokusí tento vzor sledovat při generování nových položek pro seznam. Pokud chcete podrobnější odpověď, musíte tento záměr vytvořit s podrobnějším textovým vstupem do rozhraní API.
Vyzvat rozhraní API s neúplnou položkou, aby aktivovalo nové nápady. Když rozhraní API narazí na text, který se zdá být neúplný, například text výzvy "2", nejprve se pokusí určit jakýkoli text, který by mohl položku dokončit. Vzhledem k tomu, že ukázka měla název seznamu a příklad s číslem "1" a doprovodným textem, rozhraní API interpretoval neúplný text výzvy "2" jako požadavek na pokračování v přidávání položek do seznamu.
Prozkoumejte pokročilé techniky generování. Kvalitu odpovědí můžete zlepšit tím, že v příkazovém řádku vytvoříte delší různorodý seznam. Jedním z přístupů je začít s jedním příkladem, nechat rozhraní API vygenerovat další příklady a pak vybrat příklady, které se vám líbí, a přidat je do seznamu. Několik dalších vysoce kvalitních variací v příkladech může výrazně zlepšit kvalitu odpovědí.
Vedení konverzací
Počínaje vydáním GPT-35-Turbo a GPT-4 doporučujeme vytvářet konverzační generování a chatovací roboty pomocí modelů, které podporují koncový bod dokončení chatu. Modely dokončování chatu a koncový bod vyžadují jinou vstupní strukturu než koncový bod dokončení.
Rozhraní API je nechtěné při konverzacích s lidmi a dokonce i se samotným. S pouhými několika řádky instrukcí může rozhraní API provádět jako chatovací robot zákaznických služeb, který inteligentně odpovídá na otázky, aniž by se chvěl, nebo moudrý konverzační partner, který dělá vtipy a punčochy. Klíčem je říct rozhraní API, jak se má chovat, a pak uvést několik příkladů.
V této ukázce poskytuje rozhraní API roli odpovědi na otázky umělé inteligence:
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:
Pojďme se podívat na variantu chatovacího robota s názvem Cramer, který je poněkud užitečným virtuálním asistentem. Pokud chcete rozhraní API porozumět charakteru role, poskytnete několik příkladů otázek a odpovědí. Stačí jen pár sarkastických odpovědí a rozhraní API dokáže model vyzvednout a poskytnout nekonečný počet podobných odpovědí.
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:
Pokyny pro navrhování konverzací
Naše ukázky ukazují, jak snadno můžete vytvořit chatovacího robota, který dokáže vést konverzaci. I když to vypadá jednoduše, tento přístup se řídí několika důležitými pokyny:
Definujte záměr konverzace. Stejně jako ostatní výzvy popisujete záměr interakce s rozhraním API. V tomto případě "konverzace". Tento vstup připraví rozhraní API ke zpracování následných vstupů podle počátečního záměru.
Řekněte rozhraní API, jak se chovat. Klíčovou podrobností v této ukázce jsou explicitní pokyny pro interakci rozhraní API: "Pomocník je užitečný, kreativní, chytrý a velmi přátelský." Bez explicitních instrukcí může rozhraní API chýstat a napodobovat člověka, se kterým komunikuje. Rozhraní API se může stát nechtěným nebo může vykazovat jiné nežádoucí chování.
Dejte rozhraní API identitu. Na začátku budete mít rozhraní API, které je vytvořené openAI, jako odpověď rozhraní API. I když rozhraní API nemá žádnou vnitřní identitu, popis znaku pomáhá rozhraní API reagovat způsobem, který je co nejblíže pravdě. Popisy identit znaků můžete použít jinými způsoby k vytvoření různých druhů chatovacích robotů. Pokud rozhraní API řeknete, aby reagovalo jako výzkumný vědec v biologie, dostanete inteligentní a promyšlené komentáře z rozhraní API podobné tomu, co byste očekávali od někoho s tímto pozadím.
Transformace textu
Rozhraní API je jazykový model, který je obeznámen s různými způsoby, jak lze k vyjádření informací použít slova a identity znaků. Data znalostí podporují transformaci textu z přirozeného jazyka na kód a překlad mezi jinými jazyky a angličtinou. Rozhraní API také dokáže pochopit obsah na úrovni, která umožňuje shrnout, převést a vyjádřit ho různými způsoby. Podívejme se na několik příkladů.
Překlad z jednoho jazyka do druhého
Tato ukázka dává rozhraní API pokyn, jak převést anglické jazykové fráze na francouzštinu:
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:
Tento příklad funguje, protože rozhraní API už má přehled o francouzském jazyce. Nemusíte se pokoušet naučit jazyk rozhraní API. Stačí zadat dostatek příkladů, které rozhraní API pomůže porozumět vašemu požadavku na převod z jednoho jazyka na jiný.
Pokud chcete přeložit z angličtiny do jazyka, které rozhraní API nerozpozná, musíte rozhraní API poskytnout více příkladů a jemně vyladěný model, který může vytvářet fluentní překlady.
Převod mezi textem a emoji
Tato ukázka převede název filmu z textu na znaky emoji. Tento příklad ukazuje přizpůsobitelnost rozhraní API pro vyzvednutí vzorů a práci s jinými znaky.
Carpool Time: 👨👴👩🚗🕒
Robots in Cars: 🚗🤖
Super Femme: 👸🏻👸🏼👸🏽👸🏾👸🏿
Webs of the Spider: 🕸🕷🕸🕸🕷🕸
The Three Bears: 🐻🐼🐻
Mobster Family: 👨👩👧🕵🏻♂️👲💥
Arrows and Swords: 🏹🗡🗡🏹
Snowmobiles:
Shrnutí textu
Rozhraní API dokáže pochopit kontext textu a přehrát ho různými způsoby. V této ukázce rozhraní API vezme blok textu a vytvoří vysvětlení, které je pochopitelné primárním dítětem věku. Tento příklad ukazuje, že rozhraní API má hluboké porozumění jazyku.
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:
"""
Pokyny pro vytváření textových souhrnů
Sumarizace textu často zahrnuje dodání velkého množství textu do rozhraní API. Pokud chcete zabránit posunu rozhraní API po zpracování velkého bloku textu, postupujte podle těchto pokynů:
Uzavřete text, který se má shrnout do trojitých dvojitých uvozovek. V tomto příkladu zadáte tři dvojité uvozovky ("") na samostatný řádek před a za blok textu, který chcete shrnout. Tento styl formátování jasně definuje začátek a konec velkého bloku textu, který se má zpracovat.
Vysvětlete souhrnný záměr a cílovou skupinu před a po souhrnu. Všimněte si, že tento příklad se liší od ostatních, protože do rozhraní API zadáte dvakrát pokyny: před a za textem, který se má zpracovat. Redundantní pokyny pomáhají rozhraní API soustředit se na zamýšlený úkol a vyhnout se posunu.
Dokončení částečných textových a kódových vstupů
I když všechny výzvy vedou k dokončení, může být užitečné uvažovat o dokončení textu jako o jejím vlastním úkolu v instancích, ve kterých má rozhraní API vyzvednout místo, kde jste skončili.
V této ukázce zadáte do rozhraní API výzvu k zadání textu, který se zdá být neúplný. Zastavíte zadávání textu ve slově "and" (a). Rozhraní API interpretuje neúplný text jako trigger, aby pokračovalo v trénování myšlenek.
Vertical farming provides a novel solution for producing food locally, reducing transportation costs and
Tato další ukázka ukazuje, jak můžete pomocí funkce dokončování pomoct psát React
součásti kódu. Začnete tím, že do rozhraní API odešlete nějaký kód. Zastavíte položku kódu s otevřenou závorkou (
. Rozhraní API interpretuje neúplný kód jako trigger pro dokončení HeaderComponent
definice konstanty. Toto rozhraní API může dokončit tuto definici kódu, protože má znalosti odpovídající React
knihovny.
import React from 'react';
const HeaderComponent = () => (
Pokyny pro generování dokončování
Tady je několik užitečných pokynů pro použití rozhraní API k vygenerování dokončování textu a kódu:
Snížit teplotu, aby se rozhraní API zaměřilo. Nastavte pro toto nastavení nižší hodnoty,
Temperature
aby rozhraní API poskytlo odpovědi zaměřené na záměr popsaný ve vaší výzvě.Zvyšte teplotu, aby rozhraní API umožnilo tangens. Nastavte pro nastavení vyšší hodnoty
Temperature
, aby rozhraní API reagovalo způsobem, který je tangenciální pro záměr popsaný ve vaší výzvě.Použijte modely GPT-35-Turbo a GPT-4 Azure OpenAI. Pro úlohy, které zahrnují pochopení nebo generování kódu, Microsoft doporučuje používat
GPT-35-Turbo
GPT-4
modely Azure OpenAI. Tyto modely používají nový formát dokončování chatu.
Generování faktických odpovědí
Rozhraní API získalo znalosti, které jsou založené na skutečných datech kontrolovaných během trénování. Tato naučená data používá k vytvoření odpovědí. Rozhraní API má ale také schopnost reagovat způsobem, který zní pravdivě, ale ve skutečnosti je zřetězený.
Existuje několik způsobů, jak omezit pravděpodobnost, že rozhraní API tvoří odpověď v reakci na vstup. Můžete definovat základ skutečné a faktické odpovědi, takže rozhraní API vytvoří její odpověď z vašich dat. Můžete také nastavit nízkou Temperature
hodnotu pravděpodobnosti a ukázat rozhraní API, jak reagovat, když data nejsou k dispozici pro faktickou odpověď.
Následující ukázka ukazuje, jak naučit rozhraní API odpovídat faktičtějším způsobem. Rozhraní API poskytujete příklady otázek a odpovědí, kterým rozumí. Můžete také zadat příklady otázek (Q), které nemusí rozpoznat a použít otazník pro výstup odpovědi ("A"). Tento přístup naučí rozhraní API, jak reagovat na otázky, na které nemůže odpovědět fakticky.
Jako bezpečnostní opatření nastavíte pravděpodobnost na nulu Temperature
, aby rozhraní API pravděpodobně reagovalo otazníkem (?), pokud máte nějaké pochybnosti o skutečné a faktické odpovědi.
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:
Pokyny pro generování faktických odpovědí
Pojďme se podívat na pokyny, které vám pomůžou omezit pravděpodobnost, že rozhraní API tvoří odpověď:
Zadejte základní pravdu pro rozhraní API. Řekněte rozhraní API, co použít jako základ pro vytvoření skutečné a faktické odpovědi na základě vašeho záměru. Pokud rozhraní API poskytnete text, který se použije k zodpovězení otázek (jako je položka Wikipedie), bude rozhraní API méně pravděpodobné, že vytvoří odpověď.
Použijte nízkou pravděpodobnost. Nastavte nízkou
Temperature
hodnotu pravděpodobnosti, aby se rozhraní API zaměřilo na váš záměr a nepřechádá se do vytváření předem připravené nebo konflikované odpovědi.Ukažte rozhraní API, jak reagovat na "Nevím". Můžete zadat ukázkové otázky a odpovědi, které rozhraní API učí používat konkrétní odpověď na otázky, pro které nemůže najít faktickou odpověď. V tomto příkladu naučíte rozhraní API, aby odpovídalo otazníkem (?), když nemůže najít odpovídající data. Tento přístup také pomáhá rozhraní API naučit se při odpovídání na "Nevím" je "správnější" než vytvoření odpovědi.
Práce s kódem
Řada modelů Codex je potomkem základní řady GPT-3 OpenAI, která je vytrénována v přirozeném jazyce i miliardách řádků kódu. Nejschopnější je v Pythonu a má zkušenosti s více než desítkou jazyků, včetně C#, JavaScriptu, Go, Perl, PHP, Ruby, Swiftu, TypeScriptu, SQL a dokonce Shellu.
Další informace o generování dokončování kódu najdete v tématu Modely Codex a Azure OpenAI Service.