Apps SDK on käytännöllinen vaihtoehto, jos tarvitset työnkulun pian ChatGPT:hen tai haluat kokeilla työkalujasi siellä ennen investointia mukautettuun agenttipinoon. Se ei yleensä sovi, jos sinun on hallittava agentin toimintaa joka vaiheessa.
Valitse Apps SDK, kun ChatGPT:n on tarkoitus olla pääasiallinen käyttöliittymä ja haluat työkalut sekä pieniä käyttöliittymäosia rakentamatta kokonaista chat-tuotetta. Valitse oma agenttipino, kun tarvitset työnkulun, muistin, kehotteiden ja kirjoitustoimintojen tarkkaa hallintaa.
Apps SDK sopii tuotteisiin, joissa chatiin yhdistetään muutama lyhyt käyttöliittymävaihe. Saat tuotteen julkaistua nopeammin, mutta luovut osasta hallintaa.
Meillä toimivat selkeästi määritellyt työkalut, pienoissovellusten toiminta ja seuraavat vaiheet. Määritimme työnkulun niiden varaan, emme suuren kielimallin. Malli oli hyödyllisimmillään selittäessään järjestelmän jo valitsemia tuloksia.
Seuraavaksi kerromme ensin valinnasta ja sitten siitä, mikä toimi ja mikä ei.
Useimmat tiimit tekevät yhä tekoälypilotteja tai käyttävät tekoälyä vähäriskisissä sivurooleissa, joiden hyödytkin jäävät pieniksi. Harva julkaisee käyttäjien viikoittain käyttämän liiketoimintakriittisen tuotteen. ChatGPT Apps SDK auttaa kuromaan tätä eroa umpeen, jos tavoitteena on toimia ChatGPT:ssä eikä rakentaa koko avustajaa itse.
Oppimme ovat peräisin asiakasprojektista, jossa vaatimukset ohjasivat valitsemaan ChatGPT:n pääasialliseksi käyttöliittymäksi ja nopean toteutustavan, joka ei edellyttänyt kokonaisen räätälöidyn chat-tuotteen rahoittamista.
Apps SDK vastasi toimeksiantoa, sillä asiakas tarvitsi seuraavat asiat:
Ei erillistä rakennettavaa ja ylläpidettävää chat-tuotetta – tavoitteena oli tavoittaa käyttäjät ChatGPT:ssä eikä luoda taas uutta itsenäisen avustajan kuorta.
Chat ja pieniä tehtäväkohtaisia käyttöliittymäosia – muutama tarkkaan rajattu pienoissovellusvaihe, ei toista kokonaista tuotetta työnkulun sisälle.
Taustajärjestelmän toiminta MCP-työkalujen kautta – tavallisia työkalukutsuja, ei täysin itse hallinnoitua mukautettua agentin ajoympäristöä.
Löydettävyys ChatGPT:ssä – käyttäjien on voitava käyttää työnkulkua siellä, missä he jo työskentelevät.
Vahvistimme nämä valinnat asiakkaan kanssa toteutuksen aikana. Kompromissi on silti sama: kun ChatGPT ylläpitää istuntoa, ulompi ajoympäristö ei ole hallinnassasi. Voit ohjata sitä, mutta et hallita sitä täysin.
Apps SDK -sovellus yhdistää kolme asiaa:
ChatGPT:n agentin ajoympäristön
MCP-työkalusi
Pienoissovelluksesi käyttöliittymän
Työnkulku käytännössä:
Käyttäjä pyytää ChatGPT:ltä jotakin.
ChatGPT voi kutsua jotakin MCP-työkaluistasi.
Palvelimesi palauttaa strukturoidun työkalutuloksen.
ChatGPT lukee tuloksen ja valitsee seuraavan vaiheen: lisää työkalukutsuja, vastauksen käyttäjälle tai molemmat. Jos työkaluun on liitetty pienoissovellus, se voidaan näyttää tällä vuorolla.
Käyttäjä jatkaa chatissa tai pienoissovelluksessa antamalla lisätekstiä, tekemällä valinnan tai käynnistämällä työkalukutsun pienoissovelluksesta. Tämä päivittää keskusteluketjun. ChatGPT suorittaa uuden vuoron, ja vaiheet 2–4 toistuvat, kunnes tehtävä on valmis.
Juuri chatin, taustatoimintojen ja lyhyiden käyttöliittymävaiheiden yhdistelmä on olennaista. Samalla hauraimpia kohtia ovat siirtymät chatin, työkalujen ja käyttöliittymän välillä.
Chat-käyttöliittymää, työkalukytkentöjä, tunnistautumismalleja tai pienoissovelluskuorta ei tarvitse rakentaa alusta. Monissa tuotteissa tämä lyhentää toteutusaikaa huomattavasti, joten voit keskittyä toimialalogiikkaan ja suojauksiin.
ChatGPT:n sisälle rakentaminen ei ole sama asia kuin oman agentin ajaminen. Projektin vaikein osa ei ollut kehotekikkailu. Työkalut, pienoissovellukset ja seuraavat vaiheet piti määritellä niin selkeästi, että malli ja käyttöliittymä pysyivät samalla sivulla.
Apps SDK tarjoaa tavallisesta käyttöliittymästäsi poikkeavan tuotemallin, joten on tärkeää tietää, mihin tilanteisiin se sopii parhaiten.
Käytä Apps SDK:ta, kun haluat
Julkaista ChatGPT-työnkulun nopeasti.
Antaa ChatGPT:n ylläpitää keskustelua.
Yhdistää luonnollisen kielen muutamaan tarkkaan rajattuun käyttöliittymävaiheeseen.
Välttää oman chat-käyttöliittymän, agenttisäilön ja löydettävyystoimintojen rakentamisen.
Viimeinen kohta on tärkeä, jos käyttäjäsi toimivat jo ChatGPT:ssä.
Rakenna oma agentti, kun tarvitset
Kiinteän vaiheittaisen työnkulun, jonka voit pakottaa noudatettavaksi koodissa.
Mukautetun käyttöliittymän ja vahvistuspolun, joita hallitset alusta loppuun.
Oman muisti- ja tilamallin.
Toiminnan, jonka on oltava ennakoitavaa jokaisella suorituskerralla.
Agentin jäljitystiedot, lokit ja mittarit.
Jos suunnittelija, järjestelmäkehotteet ja koko työnkulku muodostavat tuotteesi, mukautettu pino sopii yleensä paremmin.
Kysymys | ChatGPT Apps SDK | Omat agenttisi |
|---|---|---|
Missä käyttökokemus sijaitsee? | ChatGPT:n sisällä | Omassa tuotteessasi |
Kuka suorittaa keskustelun vaiheet? | ChatGPT työkalujesi ja käyttöliittymäsi ohjaamana | Oma agenttijärjestelmäsi |
Kuinka paljon käyttöliittymää rakennat? | Tarkkaan rajattuja pienoissovelluksia chatissa | Tarpeidesi mukaan |
Kuinka paljon voit hallita kehotteita? | Välillisesti | Täysin |
Kuinka helppoja kiinteät, toistettavat työnkulut ovat? | Vaativat huolellista suunnittelua | Helpompi varmistaa koodilla |
Aika ensimmäiseen julkaisuun | Usein nopeampi | Aluksi usein hitaampi |
Vastuullasi oleva alustatyö | Vähemmän | Enemmän |
Mahdollisuus vaihtaa myöhemmin suuntaa | Vähemmän | Enemmän |
Asiakasprojektissamme esiin nousi toistuvasti hallinta: toisella puolella olivat nopeus ja tuttu alusta, toisella ajoympäristön osittainen omistus. Asiakas hyväksyi tämän kompromissin asettaessaan käyttäjien tavoittamisen ChatGPT:ssä koko pinon hallinnan edelle.
Ihanteellinen työnkulku kuulostaa helpolta: käyttäjä pyytää, työkalu suoritetaan, tiedot palautuvat ja pienoissovellus tulee näkyviin, kun tarvitaan valinta.
Käytännössä ongelmia aiheuttivat siirtymät. Pienoissovellus ei ole koriste. Kun se tulee näytölle, se muuttaa sitä, mitä malli näkee ja tekee seuraavaksi. Käsittele pienoissovelluksen toimintoja nimettyinä tapahtumina, älä vapaamuotoisena chattina.
Projektin teknologiapino oli yksinkertainen: FastMCP, Pydantic, React ja TypeScript. Niiden integrointi sujui hyvin. Varsinainen työ oli saada malli, työkalut ja käyttöliittymä yksimielisiksi siitä, mitä tapahtuu seuraavaksi.
Tee jokaisesta siirtymästä ilmeinen
Lakkasimme käsittelemästä työkalutuloksia taustajärjestelmän raakoina tietosisältöinä. Jokaisesta palautuksesta tuli siirtymä.
Hyvä työkalutulos:
Antaa pienoissovellukselle sen tarvitsemat tiedot näkymän muodostamiseen.
Antaa ChatGPT:lle strukturoidut faktat vastauksen pohjaksi.
Kertoo työnkulun sitä vaatiessa, mitä seuraavaksi tapahtuu, jotta mallin ei tarvitse arvailla.
Pienoissovelluksen toiminnot eivät saa lähettää keskusteluketjuun epämääräistä tekstiä. Niiden pitää kertoa, mitä käyttäjä teki ja mitä seuraavaksi tapahtuu.
Luotettavuus parani, kun siirtymät olivat selkeitä.
Malli noudattaa lyhyitä ja selkeitä ohjeita, kun ne sisältyvät työkalun tulokseen ja pienoissovelluksen toimintoihin.
Alla on käyttämämme pieni Pydantic-rakenne. Output-kenttä sisältää pienoissovelluksen näyttämiseen tarvittavat strukturoidut tiedot sekä faktat, joita ChatGPT:n tulee käyttää istunnossa. agent_directions-kenttä sisältää lyhyen ohjeen siitä, mitä avustajan pitää tehdä seuraavaksi. Syy on valinnainen.
Python
Pidä pienoissovellukset pieninä
Toimivat pienoissovellukset hoitivat yhden päätöksen ja palauttivat sitten hallinnan. Lyhyet luettelot, vahvistukset ja tarkkaan rajatut tarkistusnäkymät toimivat paremmin kuin pienoissovelluksen muuttaminen minisovellukseksi. Pienoissovelluksen vähäinen logiikka, kuten yksinkertainen validointi tai kiinteä seuraava vaihe, auttoi silti tekemään työnkulusta deterministisemmän.
Kolmas persoona pienoissovelluksen viesteissä
Lakkasimme kirjoittamasta pienoissovelluksen jatkoviestejä käyttäjän chat-viesteinä (”Valitsin…”, ”Vahvistin…”). Kirjoitimme ne lyhyiksi selostuksiksi käyttäjän toiminnasta (”Käyttäjä valitsi…”, ”Käyttäjä vahvisti…”). Kokeilimme tätä tapaa, koska ChatGPT lisäsi pienoissovelluksen viestit työkaluviesteinä käyttäjän viestien sijaan.
Suorat toiminnot, kun seuraava vaihe on ilmeinen
Jos painikkeesta käy selvästi ilmi seuraava työkalukutsu, kutsun käynnistäminen suoraan pienoissovelluksesta toimi paremmin kuin uuden chat-vuoron pakottaminen. Tämä pätee vain, jos seuraava työkalukutsu ei tarvitse syötteitä ChatGPT:ltä.
Tämä auttoi varmistamaan deterministiset työnkulut ja lyhensi viivettä, koska ylimääräistä chat-vuoroa ei tarvittu.
Virheenkäsittely
Kun työkalukutsu epäonnistui, palautimme työkalusta asianmukaiset MCP-virhekoodit ja lyhyet, selkeät viestit. Näin ChatGPT sai epäonnistuneista kutsuista todellista luettavaa ja pystyi selittämään ongelman käyttäjälle ja/tai valitsemaan järkevän seuraavan vaiheen.
Työkalukontekstin hallinta
Säilytimme istunnon tilan omalla palvelimellamme. ChatGPT lähettää istuntokohtaisen kontekstin työkalukutsujen mukana. FastMCP:ssä annoimme jokaiselle työkalulle Context-parametrin, jotta käsittelijä pystyi lukemaan ja päivittämään tilaa.
Vakaat tunnisteet ja aiemmat tulokset säilytettiin istunnossa sen sijaan, että ChatGPT:tä olisi pyydetty välittämään ne uudelleen työkaluargumentteina jokaisella kutsulla.
Kun työkalukutsut jäivät silmukkaan, pystyimme tunnistamaan päällekkäiset kutsut ja palauttamaan selkeän virheen työkalutuloksessa.
Istuntolokit säilyivät meillä virheenkorjausta ja tukea varten.
Aluksi näytimme pienoissovelluksen, oletimme mallin ”ymmärtävän”, ja jäimme odottamaan oikeaa jatkotyökalukutsua. Joskus näin tapahtui. Usein ei.
Ilman selkeää siirtymää ChatGPT saattoi tehdä yhteenvedon, kun halusimme toiminnon, pyytää käyttäjää toistamaan valinnan tai jatkaa suunnittelua, vaikka sen olisi pitänyt lopettaa.
Ratkaisu oli ilmaista seuraava vaihe täsmällisesti Strukturoiduissa tuotoksissa ja pienoissovelluksen tietosisällöissä sen sijaan, että olisimme luottaneet mallin päättelevän sen.
Yritimme Apps SDK:n dokumentaation mukaisesti jakaa vastaukset nokkelasti työkalun tuloksen, piilotettujen metatietojen ja chat-tekstin kesken. Emme kuitenkaan pystyneet lukemaan piilotettuja metatietoja pienoissovelluksissa. Siksi emme voineet käyttää tätä ratkaisua.
Apps SDK:n dokumentaatiossa kuvataan työkaluja, jotka voi jättää pois agentin työkaluluettelosta, jotta se ei valitse niitä, mutta joita voi silti kutsua pienoissovelluksesta. Kun määritimme näkyvyydeksi vain sovelluksen, työkalut lakkasivat olemasta käytettävissä myös pienoissovelluksessa eivätkä vain agentilla. Emme löytäneet määritystä, jossa agentti ei näkisi työkalua mutta pienoissovellus näkisi.
Hiljaisuus tai yleinen ”onnistui”-ilmoitus ilman hyödyllistä tulosta oli suoraa virhettä huonompi vaihtoehto. Siksi käsittelimme työkalujen ja pienoissovellusten epäonnistumisia varsinaisina tuloksina: jos vaihetta ei voinut jatkaa, kerroimme sen selkeästi ja palautimme nimenomaisen virheen sen sijaan, että käyttäjä olisi jäänyt tuijottamaan näkyviin tullutta pienoissovellusta, joka ei vienyt tehtävää eteenpäin. Tämä paransi käytettävyyttä ja teki mallin toiminnasta luotettavampaa.
Jos tavoitteenasi on toteuttaa työnkulku ChatGPT:ssä ja vähentää mukautettua alustatyötä, Apps SDK on käytännöllinen ratkaisu. Luovut osasta hallintaa saadaksesi nopeutta ja tavoittaaksesi käyttäjät siellä, missä he jo työskentelevät.
Jos sinun on hallittava työnkulun jokaista haaraa, käyttöliittymää ja kunkin vaiheen päätöksentekijää, suunnittele oma agenttipino alusta lähtien. Pelkkä ChatGPT:n sisälle rakentaminen käy todennäköisesti lopulta riittämättömäksi.
Apps SDK:n avulla voit myös käyttää MCP-palvelintasi ChatGPT:ssä ennen kuin rakennat itse chatin, tunnistautumisen ja agentin kytkennät. Voit siirtyä omaan pinoon, kun tuote sitä vaatii.
Samassa tilanteessa olevien tiimien kannattaa seuraavaksi valita yksi selkeään tulokseen johtava työnkulku, kirjata chatin, työkalujen ja pienoissovellusten väliset siirtymät sekä kuormitustestata uudelleenyritykset ja virheet ennen merkittävää panostusta kehotteiden hienosäätöön.