API Managed Agents firmy OpenAI: Sandboksy hostowane vs wykonywanie lokalne
Jak działa mechanizm zarządzanych agentów OpenAI w publicznej wersji beta: przestrzenie robocze oparte na Linuxie, serwery wykonywania samodzielnie hostowane, kompresja kontekstu, wyszukiwanie narzędzi oraz podagenty.
Źródła: Inside OpenAI’s New Agents API: Hosted Sandboxes, Self-Hosting, and the Codex Harness Behind Them
Przygotowania przed stworzeniem agenta
Każdy, kto budował autonomicznego agenta, wie, jak duża część pracy nie ma nic wspólnego z faktycznym zadaniem agenta. Zanim przejdzie się do interesującej logiki, zespół musi napisać pętlę wykonywania, przechowywać stan rozmowy, wybrać narzędzie, które ma zostać uruchomione dalej, odzyskiwać się po awariach, kompresować kontekst w miarę wzrostu liczby sesji oraz zapewnić bezpieczne miejsce do uruchamiania kodu i edycji plików. Dopiero wtedy przychodzi czas na prawdziwe zadanie.
Usługa zarządzanych agentów OpenAI, obecnie w wersji beta publicznej, ma na celu złagodzenie większości tego obciążenia. Programiści nie muszą dodawać kolejnego punktu końcowego modelu do frameworku orkiestracji – otrzymują zamiast tego zarządzany środowisko wykonywania dla agentów. Cztery elementy opisują całą pracę: zadanie, model, narzędzia oraz środowisko, w którym odbywa się praca. Platforma następnie pokrywa dużą część mechanizmów potrzebnych do jej uruchomienia.
Silnik znajdujący się poniżej wymaga uwagi. OpenAI przekształca narzędzie stworzone dla swojego agenta programistycznego, Codex, w infrastrukturę dostępną dla zewnętrznych twórców. Jest to coś znacznie więcej niż zwykła warstwa nad interfejsem czatowym lub API do uzupełniania tekstu: umożliwia ona koordynację działań agenta poprzez powtarzane kroki, decyduje o wykorzystaniu narzędzi, zarządza rozwijającą się sesją oraz kontroluje proces wykonywania zadań, a także może jednocześnie koordynować działanie innych agentów przy rozwiązywaniu określonych problemów.
W rezultacie zmienia się punkt startowy. Zespoły nie muszą już w wczesnej fazie projektu ponownie budować mechanizmy niezbędne do działania agenta, mogąc od razu skupić się na aplikacji. To, co umożliwia agentowi działanie, reakcję na sytuacje, odzyskiwanie funkcjonalności oraz koordynację działań, staje się usługą zarządzaną.
Co obejmuje to zarządzane narzędzie
Podstawą tego rozwiązania jest założenie, że większość wymagań dotyczących niezawodnych agentów jest wspólna dla wszystkich, a nie specyficzna dla danego produktu. Niezależnie od problemu biznesowego, agent potrzebuje zapisu tego, co wydarzyło się podczas sesji, sposobu na dopasowanie następnego kroku do odpowiedniego narzędzia, metody skrócenia rozmowy, która przekroczyła rozmiar okna kontekstowego, oraz sposobu na podzielenie dużego zadań na niezależne części. Są to w dużej mierze już rozwiązane problemy, a każda firma, która rozwiązuje je ponownie we własnym kodzie, marnuje czas, który powinien być przeznaczony na rozwój produktu.
Centralizacja tej logiki w jednym zarządzanym narzędziu daje programistom podstawę do dalszej pracy zamiast konieczności tworzenia jej od zera. To narzędzie kontroluje cykl modelu: kontekst jest przekazywany modelowi, następuje decyzja, która jest wykonywana, a wynik służy jako nowy dane wejściowe. Zachowuje ono stan sesji, dzięki czemu długotrwałe zadania nie tracą wcześniejszych postępów. Samodzielnie kompresuje kontekst, gdy sesja zbliża się do maksymalnej pojemności modelu. Ponadto wybiera, które definicje narzędzi są aktualnie istotne, chroniąc model przed nieistotnymi opcjami.
Wybór miejsca pracy agenta
Gdy zadanie, model i narzędzia są już zdefiniowane, pozostaje jedna decyzja: gdzie ma odbyć się wykonywanie? Usługa oferuje tutaj prawdziwy wybór, a korzyści i wady obu ścieżek mają większe znaczenie niż prawie wszystko inne podczas konfiguracji.
Pracownia hostowana
W pierwszym podejściu OpenAI uruchamia pełne środowisko robocze Linux na każdą sesję i je obsługuje. Z góry zainstalowane są Python, Node.js oraz popularne narzędzia z linii poleceń, co daje agentowi możliwość wykonywania kodu, pracy z plikami i generowania wyników, bez konieczności zajmowania się przez programistę maszyną wirtualną, obrazem kontenera czy pipeline’em部署. Wyniki zakończonych zadań mogą być przekształcane w niezmienne artefakty, co jest przydatne dla zespołów, które chcą trwałego, niezmienialnego zapisu dokładnego wyniku danej sesji.
Ponieważ OpenAI zajmuje się przygotowaniem zasobów oraz całym cyklem życia środowiska testowego, od jego tworzenia po zakończenie, ta metoda nadaje się do szybkiego wdrażania. Zespół, który chce szybko uruchomić agenta, bez dni czekania na zatwierdzenia infrastruktury wewnętrznej czy pisania skryptów wdrażania, odnosi duży korzyść, kierując sesję na zasoby obliczeniowe OpenAI. Nadaje się również do pracy z obciążeniami elastycznymi, gdzie liczba uruchomień agenta może gwałtownie wzrastać w nieprzewidywalny sposób, a zespół woli nie zajmować się logiką skalowania. Aby to zrealizować, potrzebny jest niewielki blok konfiguracyjny określający typ hostowanego rozwiązania oraz katalog na pliki z funkcjonalnościami.
"environment": {
"type": "openai_hosted",
"capability_directories": ["/workspace/capabilities/skills"]
}
Wykonywanie na własnym serwerze
Druga metoda polega na przeprowadzaniu wykonywania na infrastrukturze należącej do dewelopera, czy to w postaci kontenera, maszyny wirtualnej, czy zdalnego środowiska sandbox dostarczanego przez dostawcę zewnętrznego. W tym środowisku znajduje się komponent zwany serwerem wykonywania, który nawiązuje połączenie z OpenAI za pośrednictwem WebSocket. Polecenia trafiają do niego z zarządzanego oprogramowania przez to połączenie, a serwer wykonywania uruchamia operacje w środowisku wiersza poleceń oraz interakcje z lokalnym protokołem Model Context Protocol na maszynie dewelopera, zanim odeśle wyniki.
Wyróżnia się jeden szczegół związany z bezpieczeństwem. Połączenie wykorzystuje specjalny klucz stworzony w tym celu, dzięki czemu klucz API na poziomie aplikacji nie musi znajdować się w środowisku wykonywania. Gdyby środowisko zostało naruszone, atakujący miałby do dyspozycji dane uwierzytelniające o węższym zakresie niż pełny klucz aplikacji.
Samohosting daje zespołowi znacznie większą kontrolę nad tym, jaka moc obliczeniowa jest używana, jak uzyskiwać dostęp do sieci prywatnych oraz gdzie przechowywane są dane. Organizacje podlegające regulacjom oraz zespoły, których agenci muszą uzyskiwać dostęp do systemów wewnętrznych niedostępnych przez publiczną sieć internetową, zazwyczaj tego potrzebują. Jednak kontrola niesie ze sobą dodatkowe obowiązki: zespół musi zajmować się izolacją i aktualizacjami bezpieczeństwa środowiska, skalowaniem pod obciążeniem, monitorowaniem oraz oczyszczaniem po zakończeniu sesji. Przeniesienie zarządzania orkiestracją gdzie indziej pozwala uniknąć wszystkich tych obowiązków.
Co i tak pozostaje w rękach OpenAI
Można łatwo założyć, że samodzielne hostowanie oznacza, iż agent działa wyłącznie w obrębie firmy, odcięty od OpenAI po pierwszym wezwaniu modelu. To błąd. Nawet w przypadku samodzielnego hostowania OpenAI nadal zarządza narzędziami oraz logiką orkiestracji modelu, która decyduje, co agent ma robić na każdym kroku. Tylko warstwa wykonywania – czyli same polecenia, obsługa plików i obliczenia – przenosi się do lokalnego środowiska. Pętla rozumowania, zarządzanie sesjami oraz logika koordynacji pozostają po stronie OpenAI, niezależnie od wybranego środowiska przez zespół.
Długie sesje i duże katalogi narzędzi
Wszystko, co wykracza poza proste agenty, szybko napotyka dwa problemy. Pierwszym jest to, że sesje przekraczają rozmiar okna kontekstowego modelu. Drugim są tak duże katalogi narzędzi, że wysyłanie każdej definicji przy każdej prośbie zużywa tokeny i spowalnia pracę modelu. Zarządzany system rozwiązuje oba te problemy.
Podczas długich sesji automatycznie kompresuje wcześniejszy kontekst, gdy rozmowa zbliża się do swojego limitu, zachowując to, czego agent nadal potrzebuje, oraz usuwając to, co stało się nieistotne. Dzięki temu proces pracy może obejmować znacznie więcej niż jedno okno kontekstowe bez konieczności ręcznego tworzenia streszczeń czy stosowania logiki skracania tekstu.
W przypadku pracy wymagającej wielu narzędzi funkcja zwana wyszukiwaniem narzędzi przywołuje tylko te definicje, które odnoszą się do bieżącego kroku, co zmniejsza zużycie tokenów i koszty, a także pomaga utrzymać pamięć cache modelu nienaruszoną. Po załadowaniu odpowiednich narzędzi dostępna jest dodatkowa funkcja umożliwiająca programowe wywoływanie narzędzi. Agent może wykonywać kilka wywołań równocześnie, łączyć powiązane operacje oraz filtrować lub łączyć wyniki w kodzie, tak aby tylko te użyteczne trafiły do kontekstu modelu. Przy dużych objętościach danych jest to ogromna zaleta, ponieważ agent nie musi przeglądać każdego surowego wyniku w poszukiwaniu nielicznych istotnych faktów.
Konfiguracja wymienia narzędzia w bloku agenta, w tym wpis dotyczący serwera MCP.
"agent": {
"tools": [
{
"type": "mcp",
"server_label": "internal_docs",
"transport": {
"type": "http",
"server_url": "https://docs.example.com/mcp"
}
}
]
}
Wielu agentów przy jednym zadaniu
Być może najbardziej imponującą funkcją jest wbudowana obsługa wielu agentów pracujących równolegle nad jednym zadaniem. Zamiast zmuszać pojedynczego agenta do krok po kroku rozwiązywania złożonego problemu, programista może włączyć funkcję obsługi wielu agentów i pozwolić systemowi podzielić zadanie na niezależne części. Każda z tych części trafia do osobnego subagenta, który ma swój własny kontekst.
Każdy subagent skupia się wyłącznie na wąskim zakresie zadań i nie musi zajmować się całym zadaniem, podczas gdy koordynujący główny agent nadzoruje cały proces i łączy wyniki w ostateczną odpowiedź. W przypadku badań, analiz na dużą skalę lub programowania, które dzieli się na niezależne strumienie, taka struktura może znacznie skrócić czas realizacji, a nie trzeba już projektować i budować warstwy orkiestracji dla agentów działających równocześnie.
Aby to włączyć, wystarczy ustawić odpowiedni flag w konfiguracji agenta, obok wyboru modelu.
"agent": {
"model": "gpt-6-astra",
"multi_agent": {
"enabled": true,
"max_concurrent_subagents": 3
}
}
Jaka ścieżka pasuje do której drużyny
Dwie ścieżki realizacji dobrze odpowiadają dwóm zestawom priorytetów. Drużyny, które stawiają na szybkość i nie chcą myśleć o zasobach obliczeniowych, korzystają z zarządzanych sandboxów. Osoby weryfikujące nowe pomysły agentów lub te, które chcą uruchomić rozwiązanie bez negocjacji dotyczących budżetów infrastruktury, prawdopodobnie szybciej wybiorą opcję hostowaną i poświęcą mniej czasu na jej implementację.
Samohosting ma sens, gdy wymagania przekraczają możliwości wspólnego, uniwersalnego sandboxu. Przykładami są prywatne sieci, do których agent musi mieć dostęp, spersonalizowane obrazy maszyn z własnym oprogramowaniem, specjalistyczne zasoby obliczeniowe, takie jak określone konfiguracje GPU, oraz regulacje dotyczące przepływu danych, które uniemożliwiają wyjście informacji poza określony obszar prawny lub sieć. W takich przypadkach dodatkowa odpowiedzialność operacyjna jest po prostu ceną za prawidłowe działanie.
Kto powinien poczekać
Nie każdy zespół musi pośpiesznie przechodzić na tę ofertę. Jeśli istniejący cykl oparty na SDK działa niezawodnie, prawidłowo radzi sobie z ponownymi próbami i sprawia niewielkie trudności jego utrzymywaczom, może nie być powodu do migracji. Zastępowanie działającego systemu tylko dlatego, że istnieje zarządzana alternatywa, zazwyczaj zwiększa ryzyko bez odpowiadającej temu korzyści.
Sytuacja wygląda inaczej, gdy stan sesji, obsługa ponownych prób oraz logika odzyskiwania po awariach stają się poważnym obciążeniem. Przekazanie tych zadań usłudze zarządzanej, która już nimi się zajmuje i stale się udoskonala z każdą nową wersją modelu, uwalnia znaczną ilość zasobów na prace, które naprawdę wyróżniają produkt.
Praktyczna zasada ogólna: przekaż to, czego nie musisz kontrolować, a trzymaj się tego, od czego zależy działanie firmy. To ma największe znaczenie w kontekście topologii wdrażania, obsługi danych wrażliwych oraz dokładnego, przewidywalnego zachowania agenta w środowisku produkcyjnym. Infrastrukturę, której nikt w zespole nie chce być odpowiedzialny, należy przekazać innym. Zachowania, które określają niezawodność produktu lub postawę firmy w kwestiach zgodności, nie powinny być takimi.
Otwarte fundamenty
Jedna cecha nadaje tej wersji wiarygodność: narzędzie opiera się na fundamentach o otwartym kodzie źródłowym. OpenAI zarządza i utrzymuje wersję produkcyjną w ramach usługi zarządzanej, podczas gdy kod stanowiący jej podstawę może być nadal publicznie inspektorowany. Każdy, kto chce dowiedzieć się, jak funkcjonują pętle modelu, selekcja narzędzi oraz koordynacja podagentów, może przeczytać logikę działania i pominąć dokumentację. Ta otwartość równoważy w ten sposób inaczej zamknięty charakter w pełni zarządzanej usługi chmurowej i pomaga zespołom zaufać temu, co obsługuje ich obciążenia produkcyjne.
Ceny i status beta
Publiczna wersja beta jest dostępna dla wszystkich programistów, bez dodatkowych opłat subskrypcyjnych obok standardowego korzystania z usługi. Opłaty są obliczane na podstawie liczby tokenów użytych w danej sesji oraz narzędzi, do których się odwołano, zgodnie ze standardowymi stawkami ustalonymi już dla podstawowych modeli. Ponieważ opinie programistów będą nadal kształtować usługę w drodze do powszechnej dostępności, ci, którzy korzystają z niej wcześnie, powinni przygotować się na zmiany w zachowaniu, ustawieniach domyślnych oraz funkcjach w ciągu najbliższych miesięcy.
Zarządzana API dla agentów, zbudowana na platformie, która już napędza Codex, stanowi prawdziwą zmianę w kwestii ilości infrastruktury, którą zespół musi stworzyć, zanim agent autonomiczny będzie mógł wykonywać przydatne zadania. Dzięki oferowaniu w pełni hostowanego środowiska oraz opcji samodzielnego hostowania, przy jednoczesnym centralnym zarządzaniu procesami, OpenAI umożliwia programistom wybór rozwiązania odpowiadającego ich sytuacji, bez narzucania jednego modelu implementacji wszystkim.
Apel o przyjęcie tej koncepcji sprowadza się do pytania, które odnosi się do każdej nowej warstwy infrastruktury: czy eliminuje ona prace, których nikt nie chciał przejąć, oraz czy pozwala zespołowi zachować pełną kontrolę nad tym, co definiuje produkt?