Hlavná navigácia

Čo sme sa naučili pri nasadení ChatGPT Apps SDK

Praktické poznatky z nasadenia ChatGPT Apps SDK ukazujú, kedy je jeho architektúra vhodná a kde treba väčšiu kontrolu.

Zhrnutie pre vedenie

  • Apps SDK je praktická voľba, ak potrebujete čoskoro nasadiť pracovný postup v ChatGPT alebo si tam chcete vyskúšať svoje nástroje pred investíciou do vlastného technologického riešenia pre agenta. Ak však potrebujete mať pod kontrolou každý krok správania agenta, zvyčajne vhodný nie je.

  • Apps SDK si vyberte, ak má byť ChatGPT hlavným rozhraním a chcete nástroje doplniť o menšie prvky používateľského rozhrania bez vývoja celého četovacieho produktu. Vlastné technologické riešenie pre agenta si vyberte, ak potrebujete dôsledne riadiť postup, pamäť, príkazy a zápisy.

  • Apps SDK je vhodný pre produkty, ktoré kombinujú čet s niekoľkými krátkymi krokmi v používateľskom rozhraní. Produkt nasadíte rýchlejšie, no vzdáte sa časti kontroly.

  • Nám sa osvedčili jasne definované nástroje, správanie miniaplikácií a ďalšie kroky. Postup sme určovali podľa nich, nie podľa LLM. Model bol najužitočnejší pri vysvetľovaní výsledkov, o ktorých už systém rozhodol.

  • Ďalej vysvetlíme, ako si vybrať a čo fungovalo či nefungovalo.

Väčšina tímov stále iba skúšobne nasadzuje AI alebo ju využíva na okrajové účely s nízkym rizikom aj prínosom. Len máloktoré nasadia produkt nevyhnutný pre fungovanie firmy, ktorý používatelia využívajú každý týždeň. ChatGPT Apps SDK je jedným zo spôsobov, ako túto medzeru preklenúť, ak chcete pôsobiť priamo v ChatGPT, a nie vyvíjať celého asistenta od základov.

Prečo sme použili Apps SDK

Naše poznatky pochádzajú z projektu pre klienta, ktorého požiadavky smerovali k ChatGPT ako hlavnému rozhraniu a k rýchlemu riešeniu bez nutnosti financovať vývoj celého četovacieho produktu na mieru.

Apps SDK týmto požiadavkám vyhovoval, pretože klient potreboval:

  • Žiadny samostatný četovací produkt, ktorý by musel vyvíjať a prevádzkovať – chcel osloviť používateľov v ChatGPT, nie vytvoriť ďalšie samostatné rozhranie asistenta.

  • Čet doplnený o malé používateľské rozhranie zamerané na konkrétne úlohy – niekoľko účelových krokov v miniaplikácii, nie druhý plnohodnotný produkt v rámci pracovného postupu.

  • Funkcie backendu sprístupnené cez nástroje MCP – štandardné volanie nástrojov, nie vlastné prostredie agenta spravované od začiatku do konca.

  • Objavovanie priamo v ChatGPT – používatelia majú nájsť pracovný postup tam, kde už pracujú.

Tieto rozhodnutia sme počas vývoja overovali s klientom. Naďalej však platí kompromis: ak reláciu prevádzkuje ChatGPT, vonkajšie prostredie nie je pod vašou kontrolou. Môžete ho usmerňovať, nie však úplne ovládať.

Čo vám Apps SDK ponúka

Aplikácia vytvorená pomocou Apps SDK prepája tri súčasti:

  1. prostredie agenta v ChatGPT

  2. vaše nástroje MCP

  3. používateľské rozhranie vašej miniaplikácie

Ako postup prebieha v praxi:

  1. Používateľ o niečo požiada ChatGPT.

  2. ChatGPT môže zavolať jeden z vašich nástrojov MCP.

  3. Váš server vráti štruktúrovaný výsledok nástroja.

  4. ChatGPT výsledok načíta a rozhodne o ďalšom kroku: zavolá ďalšie nástroje, odpovie používateľovi alebo urobí oboje. Ak ste k nástroju pripojili miniaplikáciu, môže sa v tomto kole zobraziť.

  5. Používateľ pokračuje v čete alebo v miniaplikácii (doplní text, vyberie možnosť alebo cez miniaplikáciu spustí volanie nástroja). Tým sa aktualizuje vlákno. ChatGPT spustí ďalšie kolo a kroky 2 až 4 sa opakujú, kým sa úloha nedokončí.

Práve táto kombinácia četu, akcií backendu a krátkych krokov v používateľskom rozhraní je podstatou riešenia. Zároveň to znamená, že najcitlivejšími miestami sú prechody medzi četom, nástrojmi a používateľským rozhraním.

Nemusíte od základov vytvárať četovacie rozhranie, prepájanie nástrojov, postupy overovania totožnosti ani prostredie miniaplikácie. Mnohým produktom to výrazne skráti vývoj, takže sa môžete sústrediť na logiku danej oblasti a ochranné mechanizmy.

Vyvíjať v ChatGPT nie je to isté ako prevádzkovať vlastného agenta. Najťažšou časťou projektu neboli triky s príkazmi. Bolo potrebné definovať nástroje, miniaplikácie a ďalšie kroky natoľko jednoznačne, aby model a používateľské rozhranie zostali zosúladené.

Ako si vybrať

Apps SDK dáva produktu inú podobu než bežný frontend, preto je dôležité vedieť, na aké situácie sa najlepšie hodí.

Apps SDK použite, ak chcete

  • Rýchlo nasadiť pracovný postup v ChatGPT.

  • Nechať ChatGPT prevádzkovať konverzáciu.

  • Skombinovať prirodzený jazyk s niekoľkými účelovými krokmi v používateľskom rozhraní.

  • Vyhnúť sa vývoju vlastného četovacieho rozhrania, kontajnera agenta a mechanizmu objavovania.

Posledný bod je dôležitý, ak vaši používatelia už bežne pracujú v ChatGPT.

Vlastného agenta si vytvorte, ak potrebujete

  • Pevný postup krok za krokom, ktorý môžete vynútiť v kóde.

  • Vlastné používateľské rozhranie a postup potvrdzovania, ktoré máte úplne pod kontrolou.

  • Vlastný model pamäte a stavu.

  • Správanie, ktoré musí byť pri každom spustení predvídateľné.

  • Záznamy priebehu, denníky a metriky agenta.

Ak sú plánovač, systémové príkazy a celý pracovný postup vaším produktom, zvyčajne je vhodnejšie vlastné technologické riešenie.

Prehľad kompromisov

Otázka

ChatGPT Apps SDK

Vaši vlastní agenti

Kde používateľ pracuje s riešením?

V ChatGPT

Vo vašom produkte

Kto riadi jednotlivé kroky konverzácie?

ChatGPT usmerňovaný vašimi nástrojmi a používateľským rozhraním

Váš systém agentov

Aký rozsah používateľského rozhrania vytvárate?

Účelové miniaplikácie v čete

Čokoľvek potrebujete

Akú mieru kontroly máte nad príkazmi?

Nepriamu

Úplnú

Ako ľahko sa vytvárajú pevné, opakovateľné postupy?

Vyžadujú dôkladný návrh

Ľahšie sa vynútia v kóde

Čas do prvého nasadenia

Často kratší

Spočiatku často dlhší

Rozsah platformy vo vašej správe

Menší

Väčší

Priestor na neskoršiu zmenu smerovania

Menší

Väčší

Počas nášho projektu sa opakovane vracala téma kontroly: na jednej strane rýchlosť a známe hostiteľské prostredie, na druhej len čiastočná kontrola nad prostredím. Klient tento kompromis prijal, keď dal pred úplnou kontrolou nad celým technologickým riešením prednosť osloveniu používateľov v ChatGPT.

Kde nastávajú ťažkosti

Ideálny priebeh znie jednoducho: používateľ o niečo požiada, nástroj sa spustí, údaje sa vrátia a pri potrebe voľby sa zobrazí miniaplikácia.

V praxi nám problémy spôsobovali prechody. Miniaplikácia nie je iba dekorácia. Keď sa zobrazí, zmení to, čo model vidí a následne urobí. S akciami miniaplikácie zaobchádzajte ako s pomenovanými udalosťami, nie ako s voľným četom.

Technologické riešenie projektu bolo jednoduché: FastMCP, Pydantic, React a TypeScript. Ich integrácia bola bezproblémová. Skutočnou úlohou bolo zosúladiť model, nástroje a používateľské rozhranie v tom, čo sa má udiať ďalej.

Čo fungovalo

Jednoznačne definujte každý prechod

Prestali sme výsledky nástrojov vnímať ako neupravené dátové výstupy backendu. Každá návratová hodnota sa stala prechodom.

Kvalitný výsledok nástroja:

  • Poskytne miniaplikácii všetko potrebné na vykreslenie.

  • Poskytne ChatGPT štruktúrované fakty, o ktoré môže oprieť odpoveď.

  • Ak si to postup vyžaduje, určí aj nasledujúci krok, aby ho model nemusel odhadovať.

Akcie miniaplikácie by nemali do vlákna posielať nejasný text. Mali by uvádzať, čo používateľ urobil a čo má nasledovať.

Po jednoznačnom definovaní prechodov sa zvýšila spoľahlivosť.

Model sa riadi krátkymi a jasnými pokynmi, ak sú uvedené vo výstupe nástroja a v akciách miniaplikácie.

Nižšie je jednoduchá štruktúra Pydantic, ktorú sme používali. Pole output obsahuje štruktúrované údaje potrebné na zobrazenie miniaplikácie a fakty, ktoré má ChatGPT v relácii použiť. Pole agent_directions obsahuje krátky pokyn, čo má asistent urobiť ďalej. Pole Reason je voliteľné.

Python

from typing import Generic, TypeVar
from pydantic import BaseModel
T = TypeVar("T")
class AgentDirections(BaseModel): assistant_instruction: str reason: str | None = None
class ToolResults(BaseModel, Generic[T]): agent_directions: AgentDirections output: T

Udržujte miniaplikácie malé

Funkčné miniaplikácie zabezpečili jedno rozhodnutie a potom odovzdali riadenie späť. Krátke zoznamy, potvrdenia alebo stručná obrazovka na kontrolu fungovali lepšie než premena miniaplikácie na malú aplikáciu. Keď sme potrebovali predvídateľnejší postup, pomohla aj jednoduchá logika v miniaplikácii, napríklad základné overenie alebo pevne určený ďalší krok.

Tretia osoba v správach miniaplikácie

Následné správy miniaplikácie sme prestali písať ako četové správy používateľa („Vybral som…“, „Potvrdil som…“). Písali sme ich ako krátke hlásenia o tom, čo používateľ urobil („Používateľ vybral…“, „Používateľ potvrdil…“). Tento prístup sme vyskúšali, pretože ChatGPT pridával správy miniaplikácie ako správy nástroja, nie používateľa.

Priame akcie, keď je ďalší krok zrejmý

Ak tlačidlo jednoznačne naznačovalo ďalšie volanie nástroja, fungovalo lepšie, keď ho miniaplikácia spustila priamo, než keď sme vynútili ďalšie kolo četu. Platí to iba vtedy, ak ďalšie volanie nástroja nepotrebuje vstupné údaje od ChatGPT.

Pomohlo to vynútiť predvídateľné postupy a vynechaním ďalšieho kola četu sa zároveň skrátila odozva.

Spracovanie chýb

Keď volanie nástroja zlyhalo, nástroj vrátil správne chybové kódy MCP a krátke, zrozumiteľné správy. ChatGPT tak pri neúspešných volaniach dostal konkrétne informácie, mohol používateľovi vysvetliť problém a prípadne zvoliť rozumný ďalší krok.

Správa kontextu nástrojov

Stav relácie sme uchovávali na svojom serveri. ChatGPT posiela pri volaniach nástrojov kontext príslušnej relácie. Vo FastMCP sme každému nástroju pridali parameter Context, aby obslužný program mohol stav čítať a aktualizovať.

  • Stabilné identifikátory a skoršie výsledky sa uchovávali v relácii, takže ich ChatGPT nemusel pri každom volaní znova odovzdávať ako argumenty nástroja.

  • Keď nastali slučky volaní nástrojov, mohli sme zachytiť duplicitné volania a vo výsledku nástroja vrátiť jasnú chybu.

  • Denníky relácií zostávali na našej strane na ladenie a poskytovanie podpory.

Čo nefungovalo

Predpoklad, že model odvodí ďalší krok

Spočiatku sme zobrazili miniaplikáciu, predpokladali, že model to „pochopil“, a čakali na správne následné volanie nástroja. Niekedy sa to podarilo. Často však nie.

Bez jasného prechodu mohol ChatGPT zhrnúť situáciu namiesto vykonania požadovanej akcie, požiadať používateľa o zopakovanie voľby alebo pokračovať v plánovaní, hoci už mal prestať.

Riešením bolo výslovne uviesť ďalší krok v štruktúrovaných výstupoch a dátach miniaplikácie, nie dúfať, že ho model odvodí.

Rozdelenie významu medzi vrstvy

Podľa dokumentácie Apps SDK sme sa pokúsili dômyselne rozdeliť odpovede medzi výstup nástroja, skryté metaúdaje a text četu. Skryté metaúdaje sme však v miniaplikáciách nedokázali načítať. Preto sme tento postup nemohli použiť.

Skrývanie nástrojov pred modelom

Dokumentácia Apps SDK opisuje nástroje, ktoré možno vynechať zo zoznamu nástrojov agenta, aby si ich nevybral, no naďalej ich volať z miniaplikácie. Keď sme viditeľnosť nastavili iba pre aplikáciu, nástroje prestali byť dostupné nielen agentovi, ale aj miniaplikácii. Nepodarilo sa nám dosiahnuť nastavenie, v ktorom by agent nástroj nevidel, ale miniaplikácia áno.

Nedostatočné chybové hlásenia

Ticho alebo všeobecné hlásenie „úspech“, keď sa nič užitočné nestalo, bolo horšie než priama chyba. Zlyhania nástrojov a miniaplikácií sme preto spracúvali ako plnohodnotné výstupy: ak krok nemohol pokračovať, zrozumiteľne sme to uviedli a vrátili konkrétnu chybu, aby používatelia nezostali hľadieť na vykreslenú miniaplikáciu, ktorá ich nikam neposunula. Zlepšilo to použiteľnosť aj spoľahlivosť správania modelu.

Záverečné postrehy

Ak chcete vytvoriť pracovný postup v ChatGPT s menším množstvom vlastného vývoja platformy, Apps SDK predstavuje praktické riešenie. Časti kontroly sa vzdáte výmenou za rýchlosť a možnosť osloviť používateľov tam, kde už pracujú.

Ak potrebujete mať pod kontrolou každú vetvu postupu, používateľské rozhranie aj to, kto rozhoduje o jednotlivých krokoch, od začiatku počítajte s vlastným technologickým riešením pre agenta. Samotný vývoj v ChatGPT vám pravdepodobne časom prestane stačiť.

Pomocou Apps SDK môžete svoj server MCP najprv prevádzkovať v ChatGPT, ešte než si sami vytvoríte čet, overovanie totožnosti a infraštruktúru agenta. Keď to produkt bude potrebovať, prejdete na vlastné technologické riešenie.

Ďalší krok pre tímy v rovnakej situácii: vyberte jeden pracovný postup s jasným výsledkom, spíšte prechody medzi četom, nástrojmi a miniaplikáciami a potom dôkladne otestujte opakované pokusy aj chyby, skôr než venujete veľa času ladeniu príkazov.

Autor

Malan Evans