Sdílet prostřednictvím


Přečtěte si, jak generovat text nebo s ním manipulovat.

Služba Azure OpenAI poskytuje koncový bod dokončení , který je možné použít pro širokou škálu úloh. Koncový bod poskytuje jednoduché, ale výkonné rozhraní pro zadání textu do libovolného modelu Azure OpenAI. Dokončení aktivujete zadáním textu jako výzvy. Model vygeneruje dokončení a pokusí se shodovat s vaším kontextem nebo vzorem. Předpokládejme, že do rozhraní API zadáte výzvu "Jak řekl Descartes, myslím, že proto". Pro tuto výzvu Azure OpenAI s vysokou pravděpodobností vrátí koncový bod dokončení "Já jsem".

Nejlepší způsob, jak začít zkoumat dokončení, je prostřednictvím dětského hřiště v Azure OpenAI Studiu. Jedná se o jednoduché textové pole, do kterého zadáte výzvu k vygenerování dokončení. Můžete začít jednoduchou výzvou, jako je tato:

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!

Zobrazené výsledky dokončení 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čení, a to i v případě, že výzva zůstane stejná. Toto chování můžete řídit nastavením Temperature .

Jednoduché rozhraní pro zadávání textu a odchozí text znamená, že můžete model Azure OpenAI naprogramovat tak, že poskytnete pokyny nebo jen několik příkladů toho, co chcete udělat. Úspěch výstupu obecně závisí na složitosti úkolu a kvalitě výzvy. Obecným pravidlem je zamyslet se nad tím, jak byste napsali slovní problém, který by student před dospívajícím vyřešil. Dobře napsaná výzva poskytuje dostatek informací, aby model věděl, co chcete a jak by měl reagovat.

Poznámka

Trénovací data modelu se můžou pro každý typ modelu lišit. Trénovací data nejnovějšího modelu se v současné době rozšiřují pouze do září 2021. V závislosti na vaší výzvě nemusí mít model znalosti souvisejících aktuálních událostí.

Výzvy k návrhu

Modely služby Azure OpenAI můžou dělat vše od generování původních scénářů až po komplexní analýzu textu. Vzhledem k tomu, že můžou dělat tolik věcí, musíte explicitně ukázat, co chcete. Tajemstvím dobré výzvy je často ukázka, ne jen příkaz.

Modely se z výzvy snaží předpovědět, co chcete. 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ček", a pak "a já vám řeknu, které se mi líbí". Pokud model pouze předpokládal, že chcete seznam koček, nebyl by tak dobrý při vytváření obsahu, klasifikaci nebo jiných úkolech.

Pokyny pro vytváření robustních výzev

Existují tři základní pokyny pro vytváření užitečných výzev:

  • Zobrazit a říct. Ujasněte si, co chcete, buď pomocí pokynů, příkladů nebo kombinace těchto dvou. Pokud chcete, aby model seřadil seznam položek v abecedním pořadí nebo klasifikoval 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 chcete, aby model dodržoval vzor, ujistěte se, že existuje dostatek příkladů. Nezapomeňte své příklady ověřit. 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 a Top P, řídí deterministický model při generování odpovědi. Pokud žádáte o odpověď v případě, že existuje pouze jedna správná odpověď, měli byste pro tato nastavení zadat nižší hodnoty. Pokud hledáte odpověď, která není zřejmá, možná budete chtít použít vyšší hodnoty. Nejběžnější chybou, kterou uživatelé s těmito nastaveními dělají, je předpoklad, že v odpovědi na model řídí "chytrost" nebo "kreativitu".

Řešení potíží s výzvou

Pokud máte potíže s tím, aby rozhraní API fungovalo podle očekávání, projděte si následující body pro vaši implementaci:

  • Je jasné, jaká by měla být zamýšlená generace?
  • Existuje dostatek příkladů?
  • Zkontrolovali jste ve svých příkladech chyby? (Rozhraní API vás neřekne přímo.)
  • Používáte správně nastavení pravděpodobnosti Temperature a Top P ?

Klasifikace textu

Pokud chcete pomocí rozhraní API vytvořit klasifikátor textu, 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 návrh klasifikátorů textu

Tato ukázka ukazuje několik pokynů pro návrh 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. Osvědčené postupy najdete v popisu 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 tím, že budete co nejvýstižnější. Pak můžete pracovat zpět a odebrat nadbytečná slova, pokud je výkon výzvy konzistentní.

  • Ukažte rozhraní API, jak reagovat na případ. Ukázka poskytuje několik výsledků: "Pozitivní", "Negativní" 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 pozitivní nebo negativní.

  • Používejte emoji a text podle běžného výrazu. Ukázka ukazuje, že klasifikátor může být kombinací textu a emoji 👍. Rozhraní API čte emoji a dokáže dokonce převést výrazy na a z nich. Nejlepší odezvu získáte tak, že pro příklady použijete běžné formy výrazů.

  • Pro známé úkoly používejte méně příkladů. Tento klasifikátor poskytuje jen několik příkladů, protože rozhraní API už rozumí mínění a konceptu textové zprávy. Pokud vytváříte klasifikátor pro něco, co rozhraní API nemusí znát, může být nutné uvést další příklady.

Více výsledků z jednoho volání rozhraní API

Teď, když rozumíte tomu, jak vytvořit klasifikátor, rozšíříme první ukázku, abychom ho zefektivnily. Chcete mít možnost použít klasifikátor k získání více výsledků zpět 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 čísloovaný seznam zpráv a seznam hodnocení mínění se stejným číselným indexem. Rozhraní API používá informace z první ukázky k tomu, aby se naučilo klasifikovat mínění pro jednu textovou zprávu. Ve 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ž požádáte rozhraní API 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 zvýšenou pozornost hodnotám pro nastavení pravděpodobnosti Top P nebo Temperature .
  • Spusťte několik testů, abyste měli jistotu, že je nastavení pravděpodobnosti správně kalibrované.
  • Nepoužívejte dlouhé seznamy. Dlouhé seznamy můžou vést k posunu.

Aktivace nápadů

Jedním z nejúčinnějších a zároveň nejjednodušších úkolů, které můžete pomocí rozhraní API provést, je generování nových nápadů nebo verzí vstupu. Předpokládejme, že píšete záhadný román a potřebujete nějaké nápady na příběh. Rozhraní API můžete dát seznam několika nápadů a pokusí se do vašeho seznamu přidat další nápady. Rozhraní API může vytvářet obchodní plány, popisy znaků, marketingové hesly a mnoho dalšího 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 v učebně:

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 základní popis vašeho 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ýrazňuje několik pokynů pro spouštění nových nápadů:

  • Vysvětlete záměr seznamu. Podobně jako v ukázce 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 místo toho, aby se snažilo určit vzory analýzou textu.

  • Nastavte vzor pro položky v seznamu. Když zadáte popis jedné věty, rozhraní API se při generování nových položek pro seznam pokusí postupovat podle tohoto vzoru. Pokud chcete podrobnější odpověď, musíte tento záměr vytvořit s podrobnějším textovým vstupem do rozhraní API.

  • Vyzve rozhraní API s neúplnou položkou k aktivaci nových nápadů. Když rozhraní API narazí na text, který se zdá být neúplný, například text výzvy "2", pokusí se nejprve určit jakýkoli text, který by mohl záznam 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 interpretuje neúplný text výzvy "2" jako požadavek na pokračování 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 výzvě vytvoříte delší různorodý seznam. Jedním z přístupů je začít jedním příkladem, nechat rozhraní API generovat další příklady a pak vybrat příklady, které se vám nejvíc líbí, a přidat je do seznamu. Několik dalších variant vysoké kvality ve vašich příkladech může výrazně zlepšit kvalitu odpovědí.

Vedení konverzací

Od vydání verzí GPT-35-Turbo a GPT-4 doporučujeme vytvářet konverzační generování a chatboty pomocí modelů, které podporují koncový bod dokončení chatu. Modely dokončení chatu a koncový bod vyžadují jinou vstupní strukturu než koncový bod dokončení.

Rozhraní API je zkušené v konverzacích s lidmi a dokonce i se sebou samým. S několika instrukcemi může rozhraní API fungovat jako chatovací robot zákaznické služby, který inteligentně odpovídá na otázky, aniž by se dostal do řeči, nebo jako inteligentní konverzační partner, který dělá vtipy a slovní hříčky. Klíčem je říct rozhraní API, jak se má chovat, a pak uvést několik příkladů.

V této ukázce rozhraní API poskytuje roli AI, která odpovídá na otázky:

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: 

Podívejme se na variantu chatbota s názvem Cramer, zábavného a poněkud užitečného virtuálního asistent. Abyste rozhraní API pomohli pochopit charakter role, uveďte několik příkladů otázek a odpovědí. Stačí jen pár sarkastických odpovědí a rozhraní API může tento vzor vyzvednout a poskytnout nekonečné množství 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 návrh konverzací

Naše ukázky ukazují, jak snadno můžete vytvořit chatbota, 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 popíšete záměr interakce s rozhraním API. V tomto případě se jedná o "konverzaci". Tento vstup připraví rozhraní API na zpracování následného vstupu podle počátečního záměru.

  • Řekněte rozhraní API, jak se má chovat. Klíčovým detailem v této ukázce jsou explicitní pokyny k interakci rozhraní API: "Asistent je užitečná, kreativní, chytrá a velmi přátelská." Bez vašich explicitních pokynů může rozhraní API bloudit a napodobovat člověka, se kterým komunikuje. Rozhraní API se může stát nepřátelským nebo může vykazovat jiné nežádoucí chování.

  • Dejte rozhraní API identitu. Na začátku budete mít rozhraní API, které odpovídá jako AI vytvořené OpenAI. 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 i jinými způsoby k vytvoření různých druhů chatbotů. Pokud rozhraní API řeknete, aby reagovalo jako výzkumný vědec v biologii, dostanete z rozhraní API inteligentní a promyšlené komentáře podobné tomu, co byste očekávali od někoho s tímto zázemím.

Transformace textu

Rozhraní API je jazykový model, který zná různé způsoby, jak se dají identita slov a znaků použít k vyjádření informací. Znalostní data podporují transformaci textu z přirozeného jazyka na kód a překlad mezi jinými jazyky a angličtinou. Rozhraní API je také schopné porozumět obsahu na úrovni, která mu umožňuje shrnout, převést a vyjádřit obsah různými způsoby. Podívejme se na několik příkladů.

Překlad z jednoho jazyka do druhého

Tato ukázka instruuje rozhraní API, jak převést anglické fráze do francouzštiny:

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á znalosti francouzského jazyka. Nemusíte se pokoušet naučit jazyk rozhraní API. Stačí uvést dostatek příkladů, které rozhraní API pomůžou pochopit vaši žádost o převod z jednoho jazyka do jiného.

Pokud chcete přeložit z angličtiny do jazyka, který rozhraní API nerozpozná, musíte rozhraní API poskytnout další příklady a jemně vyladěný model, který dokáže vytvářet plynulé 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ůsobivost rozhraní API pro sbírání 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 může pochopit kontext textu a přeformulovat ho různými způsoby. V této ukázce rozhraní API vezme blok textu a vytvoří vysvětlení, které je srozumitelné pro dítě v primárním věku. Tento příklad ukazuje, že rozhraní API má hluboké znalosti jazyka.

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 tak, aby se souhrn shrnul 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 sumarizovat. 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 dvakrát zadáte pokyny rozhraní API: před a za text, který se má zpracovat. Redundantní pokyny pomáhají rozhraní API zaměřit se na zamýšlenou úlohu a vyhnout se posunům.

Dokončení částečných vstupů textu a kódu

I když všechny výzvy vedou k dokončení, může být užitečné si dokončení textu představit jako vlastní úlohu v případech, kdy chcete, aby rozhraní API naběhlo tam, kde jste skončili.

V této ukázce zadáte do rozhraní API textovou výzvu, která se zdá být neúplná. Zastavíte zadávání textu u slova "a". Rozhraní API interpretuje neúplný text jako aktivační událost, která vám umožní pokračovat ve 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 při psaní React komponent kódu. Začnete odesláním kódu do rozhraní API. Položku kódu zastavíte pomocí otevřené závorky (. Rozhraní API interpretuje neúplný kód jako aktivační událost pro dokončení definice konstanty HeaderComponent . Rozhraní API může tuto definici kódu dokončit, protože rozumí odpovídající React knihovně.

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

Pokyny pro generování dokončení

Tady je několik užitečných pokynů pro použití rozhraní API ke generování dokončování textu a kódu:

  • Snižte teplotu, aby se rozhraní API soustředilo. Nastavením nižších hodnot pro Temperature nastavení dejte rozhraní API pokyn, aby poskytovalo odpovědi, které se zaměřují na záměr popsaný ve výzvě.

  • Zvýšením hodnoty Temperature (Teplota) umožníte rozhraní API tečnit. Nastavte vyšší hodnoty pro Temperature nastavení, aby rozhraní API reagovalo způsobem, který je tangenciální na záměr popsaný ve vaší výzvě.

  • Použijte modely Azure OpenAI GPT-35-Turbo a GPT-4. Pro úlohy, které zahrnují pochopení nebo generování kódu, Microsoft doporučuje používat GPT-35-Turbo modely a GPT-4 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 vymyšliný.

Existuje několik způsobů, jak můžete omezit pravděpodobnost, že rozhraní API vytvoří odpověď v reakci na váš vstup. Můžete definovat základ pro pravdivou a faktickou odpověď, takže rozhraní API vymyslí svou 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 věcnějším způsobem. Poskytnete rozhraní API s příklady otázek a odpovědí, kterým rozumí. Zadáte také příklady otázek ("Q"), které nemusí rozpoznat, a použijete otazník pro výstup odpovědi ("A"). Tento přístup učí rozhraní API, jak odpovědět na otázky, na které nemůže odpovědět věcně.

Jako záruku nastavíte Temperature pravděpodobnost na nulu, aby rozhraní API s větší pravděpodobností reagovalo otazníkem (?), pokud existují pochybnosti o pravdivých a faktických odpovědích.

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 si projít pokyny, které vám pomůžou omezit pravděpodobnost, že rozhraní API vytvoří odpověď:

  • Uveďte základní pravdu pro rozhraní API. Požádejte rozhraní API o tom, co použít jako základ pro vytvoření pravdivé 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 třeba příspěvek na Wikipedii), je méně pravděpodobné, že rozhraní API vymyslí odpověď.

  • Použijte nízkou pravděpodobnost. Nastavte nízkou Temperature hodnotu pravděpodobnosti, aby rozhraní API zůstalo zaměřeno na váš záměr a nepřecháněla do vytváření vymyšliné nebo konfábulované odpovědi.

  • Ukažte rozhraní API, jak reagovat pomocí možnosti Nevím. Můžete zadat ukázkové otázky a odpovědi, které rozhraní API naučí používat konkrétní odpověď na otázky, na které nemůže najít faktickou odpověď. V tomto příkladu naučíte rozhraní API odpovídat otazníkem (?), když nemůže najít odpovídající data. Tento přístup také pomáhá rozhraní API zjistit, že odpověď pomocí možnosti Nevím je vhodnější než vymýšlejte odpověď.

Práce s kódem

Modelová řada Codex je potomkem základní řady GPT-3 od OpenAI, která je vytrénovaná v přirozeném jazyce i miliardách řádků kódu. Je nejschopnější v Pythonu a je zběhlý ve více než desítce jazyků, včetně C#, JavaScriptu, Go, Perl, PHP, Ruby, Swiftu, TypeScriptu, SQL a dokonce i Shellu.

Další informace o generování dokončování kódu najdete v tématech Modely Codex a Služba Azure OpenAI.

Další kroky