Toto je štvrtá časť pokračujúcej série. pozri časti 1, 2 a 3. Toto je štvrtá časť pokračujúcej série. , , and . 1 2 3 1 1 2 2 3 3 AI Principle IV: Use Structured Prompt Outputs Princíp IV: Použitie štruktúrovaných promptových výstupov Tam bol čas, dávno, dávno, keď LLM API práve vyšiel a nikto ešte nevedel s istotou, ako správne interagovať s nimi. Jedným z hlavných problémov bolo extrahovanie viacerých výstupov z jednej žiadosti o odpoveď. Keď LLM nevrátil JSON dôsledne (a často zlyhali), snažili ste sa presvedčiť LLM, aby spolupracovali pomocou vášho najlepšieho inžinierskeho rečníka. Boli to staroveké časy. Vtedy sme cestovali na koni a písali námety sviečkami, pretože elektrina ešte nebola vynájdená. Debuggingové námety znamenali dlhé noci strávené škrípaním na pergamenových valcoch, dúfajúc, že model vráti zoznam namiesto haiku. Ale API LLM, ktoré nemohli dôsledne vrátiť odpoveď JSON, boli skutočnou vecou a spôsobili veľa problémov. v novembri 2023 - teraz môžete použiť OpenAI API, aby ste získali formátovaný JSON. v roku 2024 OpenAI tiež pridal podporu pre prísne štruktúrované výstupy, čo plne zaručuje návrat JSON. a Čas neštruktúrovaných okamžitých výstupov uplynul a my sa už nikdy nevrátime. Štruktúrované výstupy Antropický Google → Štruktúrované výstupy Antropický Google → Benefits Výhody Prečo je lepšie používať JSON štruktúrované výstupy, než iné formáty alebo vymýšľať vlastný formát? Reduced Error Rate Moderné LLM sú jemne prispôsobené na vydanie platného JSON na požiadanie - je zriedkavé, že zlyhajú aj pri veľmi zložitých odpovediach. Navyše, mnohé platformy majú ochranu na úrovni softvéru proti nesprávne formátovaným výstupom. Napríklad OpenAI API hodí výnimku, keď sa vráti non-JSON, keď je v štruktúrovanom výstupnom režime striktné. Ak použijete vlastný formát na vrátenie viacerých výstupných premenných, nebudete mať prospech z tohto jemného nastavenia a miera chybovosti bude oveľa vyššia. Decoupled Prompts and Code S výstupom JSON je triviálne pridať ďalšie výstupné pole a to by nemalo rozbiť váš existujúci kód.Toto oddeľuje pridanie polí k výzve od zmien v logike spracovania kódu.Oddeľovanie vám môže ušetriť čas a úsilie, najmä v prípadoch, keď sú výzvy načítané z vonkajšieho Git; pozri . Princíp II: Načítajte LLM bezpečne (ak to naozaj musíte) Princíp II: Načítajte LLM bezpečne (ak to naozaj musíte) Simplified System Existuje praktický dôvod na použitie výstupného formátu bez zabudovanej podpory platformy?Bolo by pre vás a následných prispievateľov kódu jednoduchšie formátovať odpovede pomocou JSON. When NOT to Use Structured Output Kedy nepoužívať štruktúrovaný výstup Single Field Output Ak vaša výzva vyjde z jedného poľa v odpovedi, nie sú žiadne výhody výstupu JSON. Jednotlivé variabilné odpovede sa dnes môžu stať komplexnými odpoveďami zajtra.Po hodinách strávených premieňaním jednej výstupnej výzvy poľa na mnohé výstupné výzvy poľa teraz predvolene používam JSON aj vtedy, keď sa vráti iba jedno pole. Dokonca aj keď programová logika nepotrebuje viaceré výstupy, existujú okamžité výhody inžinierstva a riešenia problémov pri pridávaní ďalších polí.Pridanie poľa, ktoré poskytuje vysvetlenie odpovede (alebo cituje zdroj v dokumentácii), môže často výrazne zlepšiť okamžitý výkon ( Môže sa tiež zaznamenať ako vysvetlenie pre rozhodnutia modelu.Majúc odpoveď JSON od začiatku robí pridanie takéhoto poľa oveľa jednoduchšie. 1 1 Takže aj keď vaša výzva má jednu výstupnú premennú, zvážte formát JSON ako možnosť. Streaming Response Pre aplikácie, v ktorých je latencia kritická, sa často používajú streamingové koncové body LLM. Tieto umožňujú, aby sa časti odpovede konali pred prijatím celej odpovede.Tento vzor nefunguje dobre s JSON, takže by ste mali namiesto toho použiť jednoduchý, stream-friendly formát. Napríklad, ak vaša výzva rozhodne o akcii charakteru videohry a slovách, ktoré charakter hovorí, môžete ho kódovať ako "ACTION ÁthaSPEECH_TO_READ" a potom streamovať odpoveď pomocou streamingového rozhrania API, ako je napríklad To vám poskytne oveľa lepšiu latenciu. OpenAI Streaming API OpenAI Streaming API Príklad výstupu: WAVE_AT_HERO|Hello, Adventurer! Welcome to my shop. Akonáhle je akcia prijatá, znak začne vibrovať a text je výstupom, keď prúdi. a ďalšie stream-priateľské formáty môžu byť tiež použité efektívne. JSON linky JSON linky Conclusion záver Nepodceňujte výhody civilizácie - použite JSON štruktúrované výstupy. Sotva existujú žiadne nevýhody a bude to váš život oveľa jednoduchšie, pretože LLM sú výrazne optimalizované na vrátenie platných odpovedí JSON. Zvážte použitie výstupu JSON, aj keď extrahované údaje sú v súčasnosti jedným poľom. Pre streamovanie koncových bodov použite linky JSON alebo jednoduchý vlastný formát. Ak ste si užili tento príspevok, prihláste sa k sérii pre viac.