Pochopení aplikačního programovacího rozhraní ChatGPT API

ChatGPT API je aplikační programovací rozhraní poskytované firmou OpenAI, které umožňuje vývojářům a podnikům integrovat schopnosti modelu jazykového generování GPT (Generative Pre-trained Transformer), jako je ChatGPT, do svých vlastních aplikací, webových služeb nebo produktů. API poskytuje přístup k pokročilým funkcím strojového učení a umělé inteligence pro generování textu, odpovídání na otázky, sumarizaci textů, generování kódu, jazykové překlady a mnoho dalších úkolů zpracování přirozeného jazyka (NLP).

schéma architektury systému využívajícího ChatGPT API

Celý proces začíná tím, že uživatel zadá vstup (Prompt) do chatovacího rozhraní (Chat Interface), které komunikuje s modelem GPT-4 skrze API. Model GPT-4 zpracuje podnět s využitím informací z kontextového úložiště (Context Storage) a systémových zpráv (System Messages), generuje odpověď (Response Generation) a posílá ji zpět do chatovacího rozhraní, kde ji uživatel uvidí, a to včetně historie konverzace (Chat History).

Modul pro správu podnětů a kontextu (Prompt and Context Management) obsahuje modul pro inženýrství podnětů (Prompt Engineering Module), který může dále vylepšovat podněty před tím, než jsou poslány modelu. Celý tento proces může být dále spravován a monitorován prostřednictvím API.

ChatGPT API - příklad

API ChatGPT je jako vzdálené ovládání pro umělou inteligenci, které vývojářům umožňuje ji „zapojit“ do různých aplikací a řídit, co AI dělá. Pomocí tohoto API můžete AI říct, aby odpovídala na otázky, psala texty nebo dokonce programovala, a to vše s možností nastavit, jak přesně by tyto úkoly měla dělat.

API dovoluje vývojářům sledovat a upravovat AI v akci, abychom se ujistili, že vše funguje tak, jak má.

 Hyperparametry ChatGPT rozhraní

ChatGPT API rozhraní je navrženo s různými hyperparametry, které uživatelům umožňují vylepšit reakce umělé inteligence na výzvy, což je činí efektivnějšími a všestrannějšími. 

Tady je seznam běžných hyperparametrů:

  1. Teplota (Temperature): Tento hyperparametr ovlivňuje náhodnost generovaných odpovědí. Nižší teplota vede k přesnějším a předvídatelnějším odpovědím, zatímco vyšší teplota zvyšuje diverzitu a tím i náhodnost ve výstupech.

  2. Nahoru P (Top P), známé také jako „nucleus sampling“: Omezuje pole možných slov na určitý kumulativní pravděpodobnostní průřez, z čehož model vybírá další slovo. To pomáhá vyvážit rozmanitost a koherenci.

  3. Maximální délka (Max Tokens): Omezuje počet tokenů (slov nebo kusů slov) ve výstupním textu.

  4. Stop slova (Stop Sequences): Určité sekvence slov nebo znaků, u kterých má generování textu skončit.

  5. Frekvence penalizace (Frequency Penalty): Penalizuje opakování slov a frází, aby bylo generování textu různorodější.

  6. Předvídatelnost penalizace (Presence Penalty): Penalizuje již zmíněná slova a fráze, aby podpořila větší originalitu a rozmanitost ve výstupu.

  7. Nejlepší z (Best Of): Generuje více odpovědí a vrací nejlepší z nich podle interního skórování.

  8. Logit Bias: Předvolby určitého slova nebo tokenů tím, že se jim přidělí dodatečná pravděpodobnost.

  9. Echo: Určuje, zda má být vstupní podnět zahrnut ve výstupu.

  10. Restartovací token (Restart Sequence): Token nebo sekvence tokenů, která má indikovat restart kontextu.

  11. Injektování tokenu (Inject Start Text): Určuje text, který má být vložen na začátku generované odpovědi.

  12. Injektování konce tokenu (Inject End Text): Určuje text, který má být vložen na konci generované odpovědi.

1) Teplota (Temperature)

Teplota (Temperature) je nastavení v rámci ChatGPT API, které ovlivňuje míru kreativity nebo náhodnosti v generovaných odpovědích. Si můžete představit, že teplota řídí „teplotu“ myšlenkového procesu modelu – nižší teplota vede k logičtějším a konzistentnějším odpovědím, zatímco vyšší teplota dělá odpovědi více kreativní a méně předvídatelné.

Při nízké teplotě (např. blízko 0) model obvykle vybírá slova s vysokou pravděpodobností, což vede k opatrnějšímu a bezpečnějšímu textu. Odpovědi jsou více stručné, přímé a mohou se zdát méně originální, protože model má tendenci se vyhýbat rizikům a volí často používané fráze a výrazy.

Na druhou stranu, při vyšší teplotě (blízko 1) model bere v úvahu i slova s nižší pravděpodobností. To může znamenat, že model bude vytvářet více neobvyklých, neotřelých a nápaditých odpovědí. Tímto způsobem teplota umožňuje uživatelům experimentovat s rozsahem „kreativity“ modelu.

Je dobré si s teplotou pohrát, aby pochopili, jak ovlivňuje výsledky, a pak zvolit nastavení, které nejlépe odpovídá potřebám jejich aplikace nebo účelu konverzace.

2) Maximální délka (Max Tokens)

Tento parametr řídí maximální délku tokenu výstupu modelu, který zahrnuje jak tokeny na vstupu zprávy, tak na výstupu zprávy. Nastavení vyššího limitu umožňuje rozšířenější odezvy, zatímco nižší limit udržuje výstup krátký a výstižný.

Když nastavíte Max Tokens, říkáte modelu: „Chci, aby byl text, který vytvoříš, dlouhý maximálně tolik a tolik tokenů.“ Je to jako nastavit limit na délku odstavce nebo dokumentu, který píšete.

3) Restartovací sekvence (Restart sekvence)

Hyperparametr Restartovací sekvence (Restart Sequence) v ChatGPT API slouží k určení, kdy by měl model resetovat nebo „zapomenout“ předchozí kontext a začít generování textu jako by od začátku, bez ohledu na předchozí interakce nebo historii konverzace.

Zde je podrobný popis toho, jak funguje:

  • Kdy se používá: Tento hyperparametr je užitečný, když chcete, aby model ignoroval předchozí kontext a začal čerstvě, jako když by byla zahájena nová konverzace. To je obzvláště užitečné v případech, kdy kontext již není relevantní nebo když se předešlá konverzace dostala do slepé uličky a je potřeba „restartovat“.

  • Jak to funguje: Když API obdrží vstup (prompt), který obsahuje určenou restartovací sekvenci, model tento signál interpretuje jako instrukci, aby zapomněl na vše, co se stalo dříve. Při generování odpovědi pak model nebere v úvahu žádné informace, které byly poskytnuty před touto sekvencí.

  • Nastavení: Může být určen jako konkrétní řetězec znaků nebo slov. Například, pokud je jako restartovací sekvence nastaveno slovo „RESTART“, kdykoli bude toto slovo zahrnuto v promptu, model se „restartuje“.

  • Výhody: Použití restartovací sekvence může pomoci zajistit, že odpovědi modelu zůstanou relevantní a koherentní, zejména když se předchozí konverzace stane nepřehlednou nebo zaměřenou na téma, které již není žádoucí.

  • Praktické použití: Vývojáři mohou použít restartovací sekvenci k oddělení různých konverzačních vláken nebo k resetování stavu chatbota pro nového uživatele bez nutnosti vytvářet novou instanci modelu nebo celého chatbota.

Je důležité poznamenat, že práce s restartovací sekvencí vyžaduje pečlivé promyšlení jejího využití, aby se zajistilo, že její použití odpovídá očekávanému chování konverzace nebo aplikace.

4) Nahoru P (Top P)

Tento hyperparametr pomáhá řídit různorodost odpovědí tím, že omezuje slova, z nichž model vybírá při generování každého dalšího slova ve větě.

Když model AI generuje text, každé nové slovo je vybráno z velkého seznamu možných slov, přičemž každé slovo má určitou pravděpodobnost, že bude následovat slovo předchozí. Nahoru P nastavení omezuje tento seznam pouze na nejpravděpodobnější slova, jejichž kumulativní pravděpodobnost dosahuje hodnoty „P“. Například, pokud nastavíte Top P na 0.9 (nebo 90%), pak když model vybírá další slovo, podívá se na seznam možných slov seřazených od nejvíce pravděpodobných dolů a přestane přidávat slova do možného výběru, jakmile součet pravděpodobností dosáhne 90%.

To znamená, že méně pravděpodobná slova – ta, která by vedla k neobvyklejším nebo nepravděpodobnějším pokračováním věty – jsou vyloučena z výběru. Výsledkem je, že text generovaný s využitím Top P má tendenci být koherentní a smysluplný, ale zároveň obsahuje dostatek variace a přirozenosti, takže nevypadá příliš mechanicky nebo opakovaně.

Pro začátečníky, Top P poskytuje kontrolu nad tím, jak „pevně“ se model drží běžně používaného jazyka ve srovnání s tím, jak moc je ochoten „vybočit ze zavedených cest“ a vytvářet nové a zajímavé kombinace slov. Experimentováním s Top P můžete najít správnou rovnováhu mezi předvídatelností a tvořivostí ve vygenerovaném textu.

Příklad: Pokud vytváříte AI pro psaní básní a chcete, aby používala širokou škálu slovní zásoby a stylistických frází, můžete nastavit „Top P“ na vyšší hodnotu. Výzva by mohla znít: „Slož báseň o kráse podzimu.“

5) Frekvenční penalizace (Frequency Penalty)

Když model generuje text a přijde na slovo, které už bylo v textu použito, Frequency Penalty přidává malý záporný bodový trest pro toto slovo, což snižuje jeho pravděpodobnost, že bude znovu vybráno. Velikost trestu se liší v závislosti na hodnotě parametru, který nastavíte.

Pokud je frekvence penalizace nastavena na hodnotu 0, pak penalizace není aplikována a model může volně opakovat stejná slova nebo fráze. Naopak, když je hodnota větší než 0, každé opakované slovo dostává trest podle toho, jak často se už v textu objevilo. Čím vyšší je hodnota penalizace, tím méně pravděpodobné je, že se slovo objeví znovu.

Například, pokud model píše příběh a slovo „zámek“ už bylo použito několikrát, a Frequency Penalty je nastavená na vysokou hodnotu, model se bude snažit toto slovo v dalších větách vyhnout a hledat synonyma nebo jiné způsoby, jak o něčem podobném mluvit, aby text nebyl monotónní.

6) Stop slova (Stop Sequences)

Představte si například, že používáte ChatGPT k generování obsahu a chcete, aby každá odpověď končila výzvou k akci, jako je „Kontaktujte nás pro více informací!“. Můžete nastavit „Kontaktujte nás pro více informací!“ jako stop slovo, a model automaticky ukončí generování textu, jakmile tuto frázi dosáhne.

Další příklad může být, že chcete zabránit modelu, aby překročil určité téma nebo citlivou oblast. Můžete určit konkrétní slova nebo fráze související s tímto tématem jako stop slova, a pokud model začne generovat obsah směřující k těmto tématickým oblastem, generování textu se zastaví.

Hyperparametr Stop slova (Stop Sequences) v ChatGPT API umožňuje definovat specifické slovní sekvence nebo znaky, při jejichž dosažení model přestane generovat text. Tento parametr je užitečný pro situace, kdy potřebujete omezit délku výstupu, ukončit odpověď na určitém místě, nebo zabránit modelu, aby se dostal do specifických tematických oblastí.

7) Penalizace za opakování (Presence Penalty)

Když je Presence Penalty nastavena na vyšší hodnotu, model se snaží vyhnout opakování témat nebo nápadů, které již byly v konverzaci představeny. To je obzvláště užitečné, pokud chcete podnítit model k generování nových informací nebo diverzifikovat diskusi bez opakování již zmíněných bodů.

Naopak, když je Presence Penalty nastavena na nižší hodnotu nebo je nulová, model se může volněji vrátit k tématům nebo nápadům, které byly v konverzaci již zmíněny. To může být vhodné v situacích, kde je důležité se zaměřit na konkrétní téma nebo detailně rozpracovat nápad, aniž by se diskuse příliš odchýlila od středu zájmu.

Tento parametr je klíčový pro finetuning chování modelu v různých kontextech – například při brainstormingu, jak bylo zmíněno, může být nižší Presence Penalty užitečná pro podporu tvorby široké škály nápadů. Na druhou stranu, při psaní koherentního a zaměřeného textu, jako je esej nebo technický dokument, může být vyšší Presence Penalty vhodná pro udržení konzistence a zabránění opakování.

Účel tohoto hyperparametru je snížení pravděpodobnosti opětovného využití již zmíněných témat nebo informací v generovaném textu.