Apps SDK е практичен избор ако наскоро ви треба работен тек во ChatGPT или ако сакате таму да ги испробате своите алатки пред да вложите во сопствена инфраструктура за агенти. Ако треба да го контролирате секој чекор од однесувањето на агентот, обично не е.
Изберете го Apps SDK кога ChatGPT треба да биде главниот интерфејс и сакате алатки со мали UI-компоненти, без да создавате целосен производ за разговор. Изберете сопствена инфраструктура за агенти кога ви треба строга контрола врз текот, меморијата, промптовите и запишувањето податоци.
Apps SDK одговара за производи што комбинираат разговор со неколку кратки чекори во UI. Испорачувате побрзо, но се откажувате од дел од контролата.
Кај нас функционираа јасните алатки, јасното однесување на виџетите и јасните следни чекори. Се потпиравме на нив за да го утврдиме текот, а не на големите јазични модели (LLM). Моделот беше најкорисен кога ги објаснуваше исходите што системот веќе ги избрал.
Во продолжение: како да изберете, а потоа што функционираше и што не.
Повеќето тимови сè уште спроведуваат пилот-проекти со ВИ или ја применуваат за споредни намени со низок ризик и мала потенцијална добивка. Малкумина испорачуваат деловно критичен производ што корисниците го користат секоја седмица. ChatGPT Apps SDK е еден начин да се надмине тој јаз ако целта ви е да бидете присутни во ChatGPT, наместо сами да го создавате целиот асистент.
Нашите сознанија произлегуваат од ангажман со клиент чии барања упатуваа на ChatGPT како главен интерфејс и на брз пристап што не бараше финансирање целосно приспособен производ за разговор.
Apps SDK одговараше на тие барања бидејќи на клиентот му беа потребни:
Без посебен производ за разговор што треба да се изгради и хостира — сакаа досег во ChatGPT, а не уште една самостојна обвивка за асистент.
Разговор и мал UI приспособен на задачата — неколку насочени чекори со виџети, а не втор целосен производ во работниот тек.
Функционалности на заднинскиот систем достапни преку MCP-алатки — стандардно повикување алатки, а не сопствено извршно опкружување за агент контролирано од почеток до крај.
Откривање во ChatGPT — корисниците треба да го сретнат работниот тек таму каде што веќе работат.
Ги потврдувавме тие избори со клиентот во текот на изработката. Компромисот останува: кога ChatGPT ја хостира сесијата, вие не го контролирате надворешното извршно опкружување. Го насочувате, но не го контролирате целосно.
Апликација создадена со Apps SDK поврзува три работи:
Извршното опкружување за агенти на ChatGPT
Вашите MCP-алатки
UI на вашиот виџет
Текот во практика:
Корисникот бара нешто од ChatGPT.
ChatGPT може да повика некоја од вашите MCP-алатки.
Вашиот сервер враќа структуриран резултат од алатката.
ChatGPT го чита резултатот и го избира следниот чекор: дополнителни повици до алатки, одговор до корисникот или и двете. Ако сте поврзале виџет со таа алатка, тој може да се прикаже во овој чекор од разговорот.
Корисникот продолжува во разговорот или во виџетот (со дополнителен текст, избор или повик до алатка активиран од виџетот). Тоа ја ажурира нишката; ChatGPT извршува нов чекор, а чекорите 2–4 се повторуваат додека не се заврши задачата.
Токму таа комбинација од разговор, дејства во заднинскиот систем и кратки чекори во UI е суштината. Тоа значи и дека најчувствителни се премините меѓу разговорот, алатките и UI.
Не мора од почеток да ги создавате UI за разговор, поврзувањето на алатките, шемите за автентикација или обвивката на виџетот. Кај многу производи тоа значително го скратува времето за изработка, па можете да се сосредоточите на доменската логика и заштитните механизми.
Создавањето во ChatGPT не е исто што и извршувањето сопствен агент. Најтешкиот дел од проектот не беа триковите со промптови. Предизвикот беше алатките, виџетите и следните чекори да се дефинираат доволно јасно за моделот и UI да останат усогласени.
Apps SDK нуди поинаков облик на производ од вообичаениот преден интерфејс, но важно е да знаете за кои сценарија е идеален.
Користете го Apps SDK кога сакате да
Испорачате работен тек во ChatGPT за кратко време.
Му дозволите на ChatGPT да го хостира разговорот.
Комбинирате природен јазик со неколку насочени чекори во UI.
Избегнете создавање сопствен интерфејс за разговор, опкружување за агент и механизам за откривање.
Последната точка е важна кога вашите корисници веќе работат во ChatGPT.
Создајте сопствен агент кога ви треба
Фиксен тек, чекор по чекор, што можете да го спроведете преку код.
Сопствен UI и процес на потврдување што целосно ги контролирате.
Сопствен модел за меморија и состојба.
Однесување што мора да биде предвидливо при секое извршување.
Траги, дневници и метрики за агентот.
Ако планерот, системските промптови и целиот работен тек се вашиот производ, сопствената инфраструктура обично е подобар избор.
Прашање | ChatGPT Apps SDK | Ваши сопствени агенти |
|---|---|---|
Каде се одвива корисничкото искуство? | Во ChatGPT | Во вашиот производ |
Кој ги извршува чекорите во разговорот? | ChatGPT, насочуван од вашите алатки и UI | Вашиот агентски систем |
Колкав UI создавате? | Насочени виџети во разговорот | Колку што ви е потребно |
Колкава е контролата врз промптовите? | Индиректна | Целосна |
Колку се лесни фиксните, повторливи текови? | Бараат внимателно проектирање | Полесно се спроведуваат преку код |
Време до првата испорака | Често побрзо | Често побавно на почетокот |
Платформска работа за која сте одговорни | Помалку | Повеќе |
Простор за подоцнежна промена на насоката | Помалку | Повеќе |
Во нашиот ангажман постојано се навраќавме на зборот „контрола“: брзина и познато опкружување од една страна, а делумна контрола врз извршното опкружување од друга. Тоа беше компромисот што клиентот го прифати кога даде предност на допирањето до корисниците во ChatGPT наместо на контролирањето на целиот технолошки пакет.
Идеалниот тек звучи едноставно: корисникот бара нешто, алатката се извршува, податоците се враќаат, а виџетот се појавува кога е потребен избор.
Во практика, проблем беа премините. Виџетот не е украс. Штом ќе се појави на екранот, го менува она што моделот го гледа и го прави следно. Третирајте ги дејствата на виџетот како именувани настани, а не како неформален разговор.
Технолошкиот пакет во ангажманот беше едноставен: FastMCP, Pydantic, React и TypeScript. Нивното интегрирање помина без проблеми. Предизвикот беше моделот, алатките и UI да се усогласат околу следниот чекор.
Направете го секој премин очигледен
Престанавме да ги третираме резултатите од алатките како необработени податоци од заднинскиот систем. Секој вратен резултат стана премин.
Добар резултат од алатка:
Му го дава на виџетот она што му е потребно за прикажување.
Му дава на ChatGPT структурирани факти врз кои ќе го заснова одговорот.
Кога тоа му е потребно на текот, наведува што треба да се случи следно за моделот да не мора да погодува.
Дејствата на виџетот не треба да испраќаат нејасен текст во нишката. Тие треба да наведат што направил корисникот и што треба да се случи следно.
Сигурноста се зголеми откако премините станаа јасни.
Моделот следи кратки и јасни инструкции кога се наоѓаат во резултатот од алатката и во дејствата на виџетот.
Подолу е прикажана мала Pydantic-структура што ја користевме. Полето output ги содржи структурираните податоци што му се потребни на виџетот кога го прикажувате, како и фактите што ChatGPT треба да ги користи во сесијата. Полето agent_directions содржи кратка реченица што наведува што треба да направи асистентот следно. Reason е изборно.
Python
Виџетите нека бидат мали
Виџетите што функционираа овозможуваа една одлука, а потоа ја враќаа контролата. Кратките списоци, потврдите и компактните екрани за преглед функционираа подобро отколку претворањето на виџетот во мини-апликација. Малку логика во виџетот, како едноставна проверка или фиксен следен чекор, сепак помагаше кога сакавме текот да биде попредвидлив.
Трето лице во пораките од виџетот
Престанавме да ги пишуваме дополнителните пораки од виџетот како разговор од корисникот („Избрав...“, „Потврдив...“). Ги пишувавме како кратки извештаи за она што го направил корисникот („Корисникот избра...“, „Корисникот потврди...“). Го испробавме овој пристап бидејќи ChatGPT ги додаваше пораките од виџетот како пораки од алатката, наместо како пораки од корисникот.
Директни дејства кога следниот чекор е очигледен
Ако копчето јасно го подразбира следниот повик до алатка, подобро функционираше виџетот да го активира директно наместо да се принудува уште еден чекор во разговорот. Ова важи само ако за следниот повик до алатката не се потребни влезни податоци од ChatGPT.
Тоа помогна да се спроведат предвидливи текови и ја намали латентноста со избегнување дополнителен чекор во разговорот.
Справување со грешки
Кога повикот до алатка не успеваше, од алатката ги враќавме соодветните MCP-кодови за грешки и кратки, јасни пораки. Така ChatGPT добиваше конкретни информации за неуспешните повици, па можеше да му го објасни проблемот на корисникот и/или да избере разумен следен чекор.
Управување со контекстот на алатките
Состојбата на сесијата ја чувавме на нашиот сервер. ChatGPT испраќа контекст ограничен на сесијата со повиците до алатки; во FastMCP на секоја алатка ѝ доделивме параметар Context за обработувачот да може да ја чита и ажурира таа состојба.
Стабилните ID-вредности и претходните резултати ги чувавме во сесијата, наместо да бараме од ChatGPT повторно да ги проследува како аргументи при секој повик.
Кога ќе се појавеа циклуси на повици до алатки, можевме да ги откриеме дупликатите и да вратиме јасна грешка преку резултатот од алатката.
Дневниците од сесиите останаа кај нас за отстранување грешки и поддршка.
На почетокот прикажувавме виџет, претпоставувавме дека моделот „разбрал“ и го чекавме соодветниот следен повик до алатка. Понекогаш тоа се случуваше. Често не се случуваше.
Без јасен премин, ChatGPT можеше да резимира кога сакавме дејство, да побара од корисникот да го повтори изборот или да продолжи да планира кога требаше да запре.
Решението беше следниот чекор јасно да се наведе во структурираните резултати и податоците од виџетот, наместо да се надеваме дека моделот ќе го заклучи.
Се обидовме на сложен начин да ги поделиме одговорите меѓу резултатот од алатката, скриените метаподатоци и текстот во разговорот, според документацијата за Apps SDK. Но не можевме да ги читаме скриените метаподатоци во виџетите. Затоа не можевме да го користиме овој пристап.
Документацијата за Apps SDK опишува алатки што може да се изостават од списокот на агентот за да не ги избира, а сепак да се повикуваат од виџетот. Кога ја поставивме видливоста само за апликацијата, тие алатки престанаа да бидат достапни и од виџетот, а не само од агентот. Не успеавме да поставиме систем во кој агентот не гледа алатка, а виџетот сепак ја гледа.
Молкот или општата порака „успешно“ кога не се случило ништо корисно беа полоши од директна грешка. Затоа, неуспесите на алатките и виџетите ги третиравме како полноправни резултати: ако чекорот не можеше да продолжи, тоа го кажувавме јасно и враќавме конкретна грешка, наместо корисниците да гледаат виџет што се прикажал, но не им овозможува да продолжат. Тоа ја подобри употребливоста и го направи однесувањето на моделот посигурно.
Ако целта ви е работен тек во ChatGPT со помалку сопствена платформска работа, Apps SDK е практичен начин да ја постигнете. Се откажувате од дел од контролата во замена за брзина и за допирање до корисниците таму каде што веќе работат.
Ако треба да ја контролирате секоја гранка од текот, UI и одлучувањето за секој чекор, планирајте сопствена инфраструктура за агенти уште од почетокот. Веројатно ќе ги надраснете можностите на создавањето исклучиво во ChatGPT.
Можете да го користите Apps SDK и за да го извршувате вашиот MCP-сервер во ChatGPT пред сами да ги изградите разговорот, автентикацијата и инфраструктурата за агентот, а потоа да преминете на сопствена инфраструктура кога тоа ќе му биде потребно на производот.
Следен чекор за тимовите во иста положба: изберете еден работен тек со јасен исход, запишете ги премините меѓу разговорот, алатките и виџетите, а потоа темелно тестирајте ги повторните обиди и грешките пред да потрошите многу време на приспособување на промптовите.