[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"portal-settings:stajic:de":3,"public-menus:all":37,"post:migrating-from-openai-agents-sdk-to-the-agents-api-what-actually-changes-architecturally:de":204,"related:post:migrating-from-openai-agents-sdk-to-the-agents-api-what-actually-changes-architecturally:de:1":2857},{"statusCode":4,"data":5,"message":36},200,{"tenantId":6,"lang":7,"defaultLang":7,"siteUrl":8,"contactEmail":9,"brandName":10,"logoUrl":11,"siteName":10,"siteDescription":12,"ogImage":9,"robotsIndex":13,"socialLinks":9,"reservedSlugs":9,"seoPolicy":14},"stajic","de","https:\u002F\u002Fstajic.de",null,"Stajic Platform","\u002FLogo_Planet.svg","Stajic Portal",true,{"branding":15,"relatedContent":16,"crossDomainLinks":17},{"logoUrl":11},{"enabled":13},[18,21,24,27,30,33],{"url":19,"label":20,"isActive":13,"showInFooter":13,"includeInSameAs":13},"https:\u002F\u002Ffigure.rocks","figure.rocks",{"url":22,"label":23,"isActive":13,"showInFooter":13,"includeInSameAs":13},"https:\u002F\u002Floving.rocks","loving.rocks",{"url":25,"label":26,"isActive":13,"showInFooter":13,"includeInSameAs":13},"https:\u002F\u002Fbazify.com","bazify.com",{"url":28,"label":29,"isActive":13,"showInFooter":13,"includeInSameAs":13},"https:\u002F\u002Fbazify.de","bazify.de",{"url":31,"label":32,"isActive":13,"showInFooter":13,"includeInSameAs":13},"https:\u002F\u002Fbazify.at","bazify.at",{"url":34,"label":35,"isActive":13,"showInFooter":13,"includeInSameAs":13},"https:\u002F\u002Fbazify.ba","bazify.ba","Portal settings resolved",[38,44],{"id":39,"name":40,"location":41,"isActive":13,"isDefault":42,"items":43},1,"main-navigation","header",false,[],{"id":45,"name":46,"location":47,"isActive":13,"isDefault":13,"items":48},4,"main-menu","sidebar",[49,65,78,92,102,117,132],{"id":50,"title":51,"url":59,"target":60,"icon":61,"isActive":13,"type":62,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":63,"portfolioId":9,"children":64},"item-18",{"de":52,"en":53,"es":54,"fr":55,"it":53,"ru":56,"sr":57,"zh":58},"Startseite","Home","Inicio","Accueil","Главная","Почетна","首页","\u002Ffull-stack-web-developer-munich-performance-seo-and-maintainable-builds","_self","i-lucide-home","page",111,[],{"id":66,"title":67,"url":74,"target":60,"icon":75,"isActive":13,"type":62,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":76,"portfolioId":9,"children":77},"item-22",{"de":68,"en":68,"es":69,"fr":68,"it":70,"ru":71,"sr":72,"zh":73},"Vision","Visión","Visione","Видение","Визија","想象","\u002Fueber-uns-webdesign-muenchen-webaplikation","i-lucide-eye",113,[],{"id":79,"title":80,"url":88,"target":60,"icon":89,"isActive":13,"type":62,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":90,"portfolioId":9,"children":91},"item-19",{"de":81,"en":82,"es":83,"fr":82,"it":84,"ru":85,"sr":86,"zh":87},"Leistungen","Services","Servicios","Servizi","Услуги","Услуге","服务","\u002Fservices-dienstleistungen-muenchen","i-lucide-wrench",116,[],{"id":93,"title":94,"url":98,"target":60,"icon":99,"isActive":13,"type":62,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":100,"portfolioId":9,"children":101},"item-23",{"de":95,"en":95,"es":95,"fr":95,"it":95,"ru":96,"sr":96,"zh":97},"Blog","Блог","博客","\u002Fblog","i-lucide-book-open",112,[],{"id":103,"title":104,"url":113,"target":60,"icon":114,"isActive":13,"type":62,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":115,"portfolioId":9,"children":116},"item-32",{"de":105,"en":106,"es":107,"fr":108,"it":109,"ru":110,"sr":111,"zh":112},"Neue Technologien","New Technologies","Nuevas tecnologías","Nouvelles technologies","Nuove tecnologie","Новые технологии","Нове технологије","新技术！","\u002Fneue-webtechnologien","i-lucide-sparkles",122,[],{"id":118,"title":119,"url":128,"target":60,"icon":129,"isActive":13,"type":62,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":130,"portfolioId":9,"children":131},"item-20",{"de":120,"en":121,"es":122,"fr":123,"it":124,"ru":125,"sr":126,"zh":127},"Kontakt","Contact us!","Contacto","Contact","Contatto","Контакт","Контактирајте нас","联系我们！","\u002Fcontact","i-lucide-mail",115,[],{"id":133,"title":134,"url":143,"target":60,"icon":144,"isActive":13,"type":62,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":145,"portfolioId":9,"children":146},"item-21",{"de":135,"en":136,"es":137,"fr":138,"it":139,"ru":140,"sr":141,"zh":142},"Unsere Arbeit","Our Work","Nuestro trabajo","Nos réalisations","I nostri lavori","Наши работы","Наши радови","文件夹","\u002Fportfolio","i-lucide-briefcase",114,[147,160,174,180,192],{"id":148,"title":149,"url":143,"target":60,"icon":158,"isActive":13,"type":62,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":145,"portfolioId":9,"children":159},"item-24",{"de":150,"en":151,"es":152,"fr":153,"it":154,"ru":155,"sr":156,"zh":157},"Alle Projekte","All Projects","Todos los proyectos","Tous les projets","Tutti i progetti","Все проекты","Сви пројекти","所有项目","i-lucide-grid-3x3",[],{"id":161,"title":162,"url":170,"target":60,"icon":171,"isActive":13,"type":172,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":9,"portfolioId":9,"children":173},"item-29",{"de":163,"en":164,"es":165,"fr":166,"it":167,"ru":168,"sr":169,"zh":142},"Local Roots, Global Reach","Local Roots - Global Reach","Empresa local ","Entreprise locale","Azienda locale","Местная компания","Локално предузеће глобално тржиште","\u002Fportfolio\u002Flocal-roots-global-reach-communication-media-systems-for-modern-business","i-lucide-folder","custom",[],{"id":175,"title":176,"url":178,"target":60,"icon":171,"isActive":13,"type":172,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":9,"portfolioId":9,"children":179},"item-28",{"de":177,"en":177,"es":177,"fr":177,"it":177,"ru":177,"sr":177,"zh":177},"Solr Suggester","\u002Fportfolio\u002Fsolr-fuzzy-suggester-und-solr-infix-suggester-abfrage-ueber-ajax-und-filterung",[],{"id":181,"title":182,"url":190,"target":60,"icon":171,"isActive":13,"type":172,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":9,"portfolioId":9,"children":191},"item-27",{"de":183,"en":184,"es":185,"fr":186,"it":187,"ru":188,"sr":189,"zh":184},"Firmenwebseite SEO","Company Website SEO","Sitio web corporativo SEO","Site web d’entreprise SEO","Sito web aziendale SEO","Корпоративный сайт SEO","Пословна веб-страница SEO","\u002Fportfolio\u002Fseo-sem-branding-mobile-webseite-muenchen",[],{"id":193,"title":194,"url":202,"target":60,"icon":171,"isActive":13,"type":172,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":9,"portfolioId":9,"children":203},"item-31",{"de":195,"en":196,"es":197,"fr":198,"it":199,"ru":200,"sr":201,"zh":196},"Digitalisierungsportal","Digitalization Portal","Portal de digitalización","Portail de numérisation","Portale di digitalizzazione","Портал цифровизации","Портал за дигитализацију","\u002Fportfolio\u002Fdigitalisierungsportal-archiv-museum-bibliothek-ead-lido-mets-mods",[],{"statusCode":4,"data":205,"message":2856},{"id":206,"title":207,"slug":208,"content":209,"contentJson":210,"excerpt":1302,"featuredImage":1303,"featuredImageAlt":1304,"featuredImageCaption":9,"featuredImageTitle":9,"featuredImageCopyright":9,"featuredImageAuthor":9,"featuredImageSourceUrl":9,"featuredImageLicense":9,"featuredImageIsAiGenerated":42,"status":1305,"publishedAt":1306,"createdAt":1307,"updatedAt":1308,"seoLocalePaths":1309,"categories":1318,"author":1331,"translations":1336},"474","Migration vom OpenAI Agents SDK zur Agents API: Was ändert sich tatsächlich architektonisch?","migrating-from-openai-agents-sdk-to-the-agents-api-what-actually-changes-architecturally","\u003Cnav class=\"editorjs-toc\" data-editorjs-toc=\"true\" aria-label=\"Inhalt\">\u003Cstrong class=\"editorjs-toc__title\">Inhalt\u003C\u002Fstrong>\u003Col class=\"editorjs-toc__list editorjs-toc__list--depth-0\">\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-6\" class=\"editorjs-toc__link\">Die Migration erfolgt von einer anwendungseigenen Schleife zu einer verwalteten Harness\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-10\" class=\"editorjs-toc__link\">Die Runtime Boundary Migration Map\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-12\" class=\"editorjs-toc__link\">Was konzeptionell migrieren kann, ohne die Verantwortung zu ändern\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-16\" class=\"editorjs-toc__link\">Was nicht eins zu eins migriert werden sollte\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-19\" class=\"editorjs-toc__link\">Schritt 1 — Domänenzustand vom Agentensitzungszustand trennen\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-23\" class=\"editorjs-toc__link\">Schritt 2 — Die Runner-Denkweise in eine Sitzungs- und Ereignis-Denkweise umwandeln\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-26\" class=\"editorjs-toc__link\">Schritt 3 — Funktionstools um erforderliche Aktionen herum neu gestalten\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-30\" class=\"editorjs-toc__link\">Schritt 4 — Entscheiden, wo die Ausführung stattfinden soll\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-34\" class=\"editorjs-toc__link\">Schritt 5 — Implizite Wiederherstellung durch explizite Lebenszyklusbehandlung ersetzen\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-37\" class=\"editorjs-toc__link\">Schritt 6 — Observability rund um die neue Trace-Grenze neu aufbauen\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-41\" class=\"editorjs-toc__link\">Schritt 7 — Evals bewahren, bevor die Runtime geändert wird\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-44\" class=\"editorjs-toc__link\">Der Migration-Proof-Test\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-46\" class=\"editorjs-toc__link\">Was während der Migration gemessen werden sollte\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-48\" class=\"editorjs-toc__link\">Wann noch nicht migriert werden sollte\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-51\" class=\"editorjs-toc__link\">Wann die Migration strategisch wichtig wird\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-54\" class=\"editorjs-toc__link\">Was diese Antwort ändern würde\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-57\" class=\"editorjs-toc__link\">Einschränkungen\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-60\" class=\"editorjs-toc__link\">Fazit\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-63\" class=\"editorjs-toc__link\">FAQ\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-65\" class=\"editorjs-toc__link\">Glossar\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-67\" class=\"editorjs-toc__link\">Primärquellen und weiterführende Literatur\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-82\" class=\"editorjs-toc__link\">Die Migration erfolgt von einer anwendungseigenen Schleife zu einer verwalteten Harness\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-86\" class=\"editorjs-toc__link\">Die Runtime Boundary Migration Map\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-88\" class=\"editorjs-toc__link\">Was konzeptionell migrieren kann, ohne die Verantwortung zu ändern\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-92\" class=\"editorjs-toc__link\">Was nicht eins zu eins migriert werden sollte\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-95\" class=\"editorjs-toc__link\">Schritt 1 — Domänenzustand vom Agentensitzungszustand trennen\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-99\" class=\"editorjs-toc__link\">Schritt 2 — Die Runner-Denkweise in eine Sitzungs- und Ereignis-Denkweise umwandeln\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-102\" class=\"editorjs-toc__link\">Schritt 3 — Funktionstools um erforderliche Aktionen herum neu gestalten\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-106\" class=\"editorjs-toc__link\">Schritt 4 — Entscheiden, wo die Ausführung stattfinden soll\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-110\" class=\"editorjs-toc__link\">Schritt 5 — Implizite Wiederherstellung durch explizite Lebenszyklusverwaltung ersetzen\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-113\" class=\"editorjs-toc__link\">Schritt 6 — Observability um die neue Trace-Grenze herum neu aufbauen\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-117\" class=\"editorjs-toc__link\">Schritt 7 — Evals bewahren, bevor die Laufzeit geändert wird\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-120\" class=\"editorjs-toc__link\">Der Migrationsnachweis-Test\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-122\" class=\"editorjs-toc__link\">Was während der Migration gemessen werden sollte\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-124\" class=\"editorjs-toc__link\">Wann noch nicht migriert werden sollte\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-127\" class=\"editorjs-toc__link\">Wann die Migration strategisch wichtig wird\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-130\" class=\"editorjs-toc__link\">Was würde diese Antwort ändern?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-133\" class=\"editorjs-toc__link\">Einschränkungen\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-136\" class=\"editorjs-toc__link\">Fazit\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-139\" class=\"editorjs-toc__link\">FAQ\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-141\" class=\"editorjs-toc__link\">Glossar\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-143\" class=\"editorjs-toc__link\">Primärquellen und weiterführende Literatur\u003C\u002Fa>\u003C\u002Fli>\u003C\u002Fol>\u003C\u002Fnav>\n\u003Cp>Die Migration vom OpenAI Agents SDK zur Agents API ist keine bloße Umbenennung von Imports. Die zentrale architektonische Grenze verschiebt sich: Das SDK führt die Agent-Schleife innerhalb Ihrer Anwendung aus, während die Agents API eine verwaltete Codex-Harness und eine dauerhafte Sitzung auf der Seite von OpenAI betreibt. Die Migrationsfrage lautet daher nicht „Welche Klassen werden welchen Endpunkten zugeordnet?“, sondern „Welche Laufzeitverantwortlichkeiten wechseln über die Grenze, welche bleiben in unserer Anwendung und welche müssen neu gestaltet werden?“\u003C\u002Fp>\n\u003Caside class=\"editorjs-callout editorjs-callout--info my-6 rounded-xl border p-5 border-blue-300 bg-blue-50 dark:border-blue-900 dark:bg-blue-950\u002F20\" role=\"note\">\u003Cstrong class=\"block mb-2 text-gray-900 dark:text-gray-100\">Direkte Antwort\u003C\u002Fstrong>\u003Cdiv class=\"text-gray-700 dark:text-gray-200\">&lt;strong&gt;Eine echte Migration vom Agents SDK zur Agents API verändert die Laufzeitverantwortung.&lt;\u002Fstrong&gt; Ihre wiederverwendbare Agent-Konfiguration kann weiterhin Modell, Anweisungen und Tools enthalten, aber die Schleife, die dauerhafte Sitzung, die Orchestrierung, die Kontextkomprimierung und die Wiederherstellung wandern in die verwaltete Agents API-Laufzeit. Ihre Anwendung sollte Domänenzustand, Autorisierung, Geschäftsregeln, Funktionsimplementierungen und Audit-Logik außerhalb der Agent-Sitzung behalten. Betrachten Sie die Migration als eine Neugestaltung der Grenze, nicht als mechanische Code-Konvertierung.\u003C\u002Fdiv>\u003C\u002Faside>\n\u003Caside class=\"editorjs-callout editorjs-callout--warning my-6 rounded-xl border p-5 border-amber-300 bg-amber-50 dark:border-amber-900 dark:bg-amber-950\u002F20\" role=\"note\">\u003Cstrong class=\"block mb-2 text-gray-900 dark:text-gray-100\">Aktuell Stand 25. September 2026\u003C\u002Fstrong>\u003Cdiv class=\"text-gray-700 dark:text-gray-200\">OpenAI kennzeichnet das Agents SDK derzeit als &lt;strong&gt;funktionsvollständig&lt;\u002Fstrong&gt; und empfiehlt die Agents API für neue Agent-Anwendungen. Die Agents API befindet sich in der öffentlichen Beta. Bestehende SDK-Anwendungen werden weiterhin unterstützt, und eine sofortige Migration ist nicht automatisch erforderlich.\u003C\u002Fdiv>\u003C\u002Faside>\n\u003Caside class=\"editorjs-callout editorjs-callout--note my-6 rounded-xl border p-5 border-gray-300 bg-gray-50 dark:border-gray-700 dark:bg-gray-900\u002F40\" role=\"note\">\u003Cstrong class=\"block mb-2 text-gray-900 dark:text-gray-100\">Zum Migrationsmodell\u003C\u002Fstrong>\u003Cdiv class=\"text-gray-700 dark:text-gray-200\">Die Runtime Boundary Migration Map und der Migration Proof Test in diesem Artikel sind praktische Architekturwerkzeuge, keine offiziellen Migrationsframeworks von OpenAI. Sie leiten sich aus den aktuellen, von OpenAI dokumentierten Laufzeitunterschieden ab.\u003C\u002Fdiv>\u003C\u002Faside>\n\u003Ch2 id=\"section-6\">Die Migration erfolgt von einer anwendungseigenen Schleife zu einer verwalteten Harness\u003C\u002Fh2>\n\u003Cp>Im Agents SDK ist ein Durchlauf ein Zug auf Anwendungsebene. Der SDK-Runner ruft das Modell auf, prüft die Ausgabe, führt Tools aus, folgt Übergaben und fährt fort, bis er einen Haltepunkt erreicht. Ihr Prozess hostet diese Schleife und besitzt daher ihren Lebenszyklus.\u003C\u002Fp>\n\u003Cp>In der Agents API betreibt OpenAI die Harness. Eine Sitzung ist eine dauerhafte Instanz einer Agent-Konfiguration, die Aufgaben annimmt, Ereignisse erzeugt, für erforderliche Aktionen pausieren kann und über die Zeit fortgesetzt werden kann. OpenAI verwaltet Sitzungen, Orchestrierung, Kontextkomprimierung und Wiederherstellung; Ihre Anwendung sendet Arbeit, behandelt Funktions-Tools, empfängt Ereignisse und verwaltet optional eine selbst gehostete Ausführungsumgebung.\u003C\u002Fp>\n\u003Cp>Diese Verschiebung der Verantwortung ist die Migration. Alles andere — API-Syntax, Tool-Schemas, Ereignisbehandlung, Sitzungs-IDs — folgt daraus.\u003C\u002Fp>\n\u003Ch2 id=\"section-10\">Die Runtime Boundary Migration Map\u003C\u002Fh2>\n\u003Cdiv class=\"overflow-x-auto\">\u003Ctable class=\"w-full border-collapse\">\u003Cthead>\u003Ctr>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Anliegen\u003C\u002Fth>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Agents SDK\u003C\u002Fth>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Agents API-Migrationsziel\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Agent-Schleife\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Läuft in Ihrer Anwendung über den SDK-Runner\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Läuft in der verwalteten Codex-Harness\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Wiederverwendbare Agent-Definition\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Agent-Objekt im Anwendungscode\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Gespeicherte oder Inline-Agent-Konfiguration mit Modell, Anweisungen und Tools\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Konversations- \u002F Arbeitskontinuität\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">SDK-Sitzungsstrategie, Verlauf, Ergebnis-Fortsetzung oder Anwendungsspeicherung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Dauerhafte Agents API-Sitzung\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Tool-Ausführung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">SDK koordiniert Tool-Aufrufe in Ihrer Laufzeit\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Harness fordert Funktionsaufrufe an; Ihre Anwendung gibt Ergebnisse zurück\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Kontextverwaltung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Ihre Laufzeit \u002F SDK-Sitzungsstrategie\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Verwalteter Sitzungskontext, Komprimierung und Wiederherstellung, plus Ihre eigenen Anwendungsdatengrenzen\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Übergaben \u002F Spezialisten\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">SDK-Orchestrierungsprimitive\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Harness- \u002F Subagent-Verhalten in der Agents API; gehen Sie nicht von Eins-zu-eins-Semantik aus\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Ausführungsumgebung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Ihre Anwendungslaufzeit oder tool-spezifische Umgebung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Optionale von OpenAI gehostete oder selbst gehostete Umgebung, die an die Sitzung angehängt ist\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Streaming\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">SDK-Streaming aus dem Durchlauf\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Agents API-Sitzungsereignisstrom\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Asynchroner Lebenszyklus\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Normalerweise anwendungsverwaltet um den SDK-Durchlauf herum\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Native Sitzungszustände, asynchrone Züge und Webhooks\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Tracing \u002F Observability\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Agents SDK-Tracing und Anwendungsprotokolle\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Agents-Sitzungsprotokolle, Ereignisse, Züge, Tool-Aufrufe, Subagenten und exportierbare Traces\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Wiederherstellung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Anwendungsverantwortung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Verwaltete Harness-\u002FSitzungswiederherstellung plus anwendungseigene Wiederherstellung für externe Systeme und selbst gehostete Umgebungen\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Ch2 id=\"section-12\">Was konzeptionell migrieren kann, ohne die Verantwortung zu ändern\u003C\u002Fh2>\n\u003Cp>Mehrere Anwendungskonzepte überstehen die Migration sauber, obwohl sich ihre Darstellung ändert. Modelle, Anweisungen, JSON-Schema-Funktionsdefinitionen, MCP-Zugriff, Tool-Beschreibungen und Anforderungen an strukturierte Ausgaben sind weiterhin Anliegen der Agent-Konfiguration.\u003C\u002Fp>\n\u003Cp>Das Konfigurationsmodell der OpenAI Agents API definiert einen Agenten explizit durch Modell, Anweisungen, Tools, Reasoning und Ausgabeverhalten. Funktions-Tools bleiben Anwendungscode: Die Harness fordert einen Funktionsaufruf an, und Ihr Handler gibt das Ergebnis zurück. OpenAI weist auch darauf hin, dass Funktionsimplementierungen, die mit der Responses API verwendet werden, mit dem Sitzungsablauf der Agents API wiederverwendet werden können.\u003C\u002Fp>\n\u003Caside class=\"editorjs-callout editorjs-callout--success my-6 rounded-xl border p-5 border-emerald-300 bg-emerald-50 dark:border-emerald-900 dark:bg-emerald-950\u002F20\" role=\"note\">\u003Cstrong class=\"block mb-2 text-gray-900 dark:text-gray-100\">Guter Migrationskandidat\u003C\u002Fstrong>\u003Cdiv class=\"text-gray-700 dark:text-gray-200\">Eine reine Geschäftsfunktion wie &lt;code&gt;get_customer(customer_id)&lt;\u002Fcode&gt; sollte nicht wissen müssen, ob der Aufrufer das Agents SDK oder die Agents API ist. Behalten Sie ihre Domänenlogik hinter einer stabilen Anwendungsschnittstelle und migrieren Sie nur den agentenorientierten Adapter.\u003C\u002Fdiv>\u003C\u002Faside>\n\u003Ch2 id=\"section-16\">Was nicht eins zu eins migriert werden sollte\u003C\u002Fh2>\n\u003Cp>Das gefährliche Migrationsmuster besteht darin, jede SDK-Laufzeitabstraktion innerhalb der Agents API neu zu erstellen. Das kann dazu führen, dass Sie für eine verwaltete Harness bezahlen und dennoch eine Schatten-Harness in Ihrer Anwendung betreiben.\u003C\u002Fp>\n\u003Cdiv class=\"overflow-x-auto\">\u003Ctable class=\"w-full border-collapse\">\u003Cthead>\u003Ctr>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Annahme aus der SDK-Ära\u003C\u002Fth>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Warum eine direkte Kopie riskant ist\u003C\u002Fth>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Migrationsfrage\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Die Anwendungsschleife besitzt jede Fortsetzung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Die Agents API besitzt bereits die Harness-Schleife\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Welche Fortsetzungslogik ist Produktlogik, und welche sollte in die verwaltete Sitzung verschoben werden?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Das lokale Sitzungsobjekt ist der primäre Kontinuitätsmechanismus\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Agents API-Sitzungen sind dauerhafte Ressourcen mit eigenem Lebenszyklus\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Welcher Zustand gehört in die Sitzung und welcher in die Produktdatenbank?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Jede Unterbrechung wird synchron behandelt\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Agents API-Züge sind asynchron und können action_required-Zustände aufweisen\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Welche Aktionen benötigen Webhooks, Worker, Idempotenz und fortsetzbare Handler?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Die gesamte Tool-Ausführung erfolgt dort, wo der SDK-Prozess läuft\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Funktions-Handler und Ausführungsumgebungen können getrennt sein\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Wo sollte jedes Tool tatsächlich ausgeführt werden?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Der SDK-Trace ist die operative Zeitachse\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Die Agents API stellt Sitzungsereignisse, Züge und verwaltete Traces bereit\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Welche Audit-Daten auf Anwendungsebene benötigen weiterhin eine eigene Aufzeichnung?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Das Handoff-Objekt wird direkt auf ein gehostetes Subagent-Modell abgebildet\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Laufzeitsemantik kann abweichen\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Welche benutzersichtbare Verantwortung und welches Spezialistenverhalten müssen erhalten bleiben, nicht nur die alte Klassenstruktur?\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Ch2 id=\"section-19\">Schritt 1 — Domänenzustand vom Agentensitzungszustand trennen\u003C\u002Fh2>\n\u003Cp>Bevor Sie API-Aufrufe anfassen, klassifizieren Sie den Zustand, den Ihre SDK-Anwendung derzeit trägt. Ein Teil des Zustands existiert nur, um das Gespräch des Agenten am Laufen zu halten. Anderer Zustand ist geschäftliche Wahrheit: Benutzerberechtigungen, Projektstatus, Bestelldaten, Workflow-Genehmigung, Kundendatensätze, Dokumentversionen, Richtlinienzustand oder Anwendungskonfiguration.\u003C\u002Fp>\n\u003Cp>Die zweite Kategorie sollte nicht von einer Agents-API-Sitzung abhängig werden. Eine dauerhafte Sitzung ist nützliche Kontinuität für den Agenten; sie ist kein Ersatz für die Quelle der Wahrheit Ihres Produkts. Wenn die Sitzung verschwindet, abläuft, neu aufgebaut wird oder die Implementierung wechselt, muss Ihre Anwendung immer noch wissen, was wahr ist.\u003C\u002Fp>\n\u003Csection class=\"editorjs-comparison my-6\">\u003Ch3 class=\"mb-3 text-lg font-semibold\">Test zur Zustandsplatzierung\u003C\u002Fh3>\u003Cdiv class=\"overflow-x-auto\">\u003Ctable class=\"w-full border-collapse\">\u003Cthead>\u003Ctr>\u003Cth class=\"border border-gray-300 bg-gray-50 px-4 py-3 text-left dark:border-gray-700 dark:bg-gray-900\">\u003C\u002Fth>\u003Cth class=\"border border-gray-300 bg-gray-50 px-4 py-3 text-left font-semibold dark:border-gray-700 dark:bg-gray-900\">Zustandstyp\u003C\u002Fth>\u003Cth class=\"border border-gray-300 bg-gray-50 px-4 py-3 text-left font-semibold dark:border-gray-700 dark:bg-gray-900\">Bevorzugter Eigentümer\u003C\u002Fth>\u003Cth class=\"border border-gray-300 bg-gray-50 px-4 py-3 text-left font-semibold dark:border-gray-700 dark:bg-gray-900\">Grund\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Cth class=\"border border-gray-300 px-4 py-3 text-left font-semibold dark:border-gray-700\">Gesprächskontinuität\u003C\u002Fth>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Cth class=\"border border-gray-300 px-4 py-3 text-left font-semibold dark:border-gray-700\">Geschäftliche Wahrheit\u003C\u002Fth>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Cth class=\"border border-gray-300 px-4 py-3 text-left font-semibold dark:border-gray-700\">Dauerhaftes Artefakt\u003C\u002Fth>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Cth class=\"border border-gray-300 px-4 py-3 text-left font-semibold dark:border-gray-700\">Flüchtiger Arbeitszustand\u003C\u002Fth>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\u003C\u002Fsection>\n\u003Ch2 id=\"section-23\">Schritt 2 — Die Runner-Denkweise in eine Sitzungs- und Ereignis-Denkweise umwandeln\u003C\u002Fh2>\n\u003Cp>SDK-Anwendungen denken oft in Begriffen wie run aufrufen und ein Ergebnis erhalten. Die Agents-API denkt in Begriffen einer dauerhaften Sitzung, deren Turns asynchron laufen können. Eine Nachricht an eine inaktive Sitzung startet Arbeit; eine Nachricht während eines aktiven Turns kann ihn steuern. Fortschritt kommt über Streaming oder Webhooks.\u003C\u002Fp>\n\u003Cp>Dies beeinflusst die Anwendungsarchitektur. Lang laufende Produktionsarbeit sollte nicht davon abhängen, dass eine einzelne HTTP-Anfrage am Leben bleibt. Ihr Produkt benötigt stabile Sitzungsbezeichner, Lebenszyklus-Persistenz, Webhook-Verifizierung, idempotente Handler und eine Möglichkeit, den aktuellen Sitzungszustand nach Prozessneustarts abzugleichen.\u003C\u002Fp>\n\u003Ch2 id=\"section-26\">Schritt 3 — Funktionstools um erforderliche Aktionen herum neu gestalten\u003C\u002Fh2>\n\u003Cp>Funktionstools bleiben eine wichtige Anwendungsgrenze. Sie definieren die Funktion und ihr JSON-Schema in der Agentenkonfiguration. Wenn die Harness die Funktion benötigt, kann die Sitzung in einen Zustand eintreten, in dem eine Aktion erforderlich ist. Ihre Anwendung ruft die erforderliche Aktion ab, führt die Geschäftslogik aus und gibt das Ergebnis zurück.\u003C\u002Fp>\n\u003Cp>Das bedeutet, dass die Funktionsimplementierung sicher fortgesetzt werden können sollte. Ein Webhook kann zugestellt werden, während ein anderer Worker verarbeitet. Ein Netzwerkfehler kann nach dem externen Seiteneffekt, aber vor der Rückgabe des Ergebnisses auftreten. Die Migration ist daher ein guter Moment, um Aufruf-IDs, Idempotenzschlüssel, explizite Autorisierung, Timeout-Richtlinien und Audit-Datensätze zu folgenreichen Tools hinzuzufügen.\u003C\u002Fp>\n\u003Caside class=\"editorjs-callout editorjs-callout--warning my-6 rounded-xl border p-5 border-amber-300 bg-amber-50 dark:border-amber-900 dark:bg-amber-950\u002F20\" role=\"note\">\u003Cstrong class=\"block mb-2 text-gray-900 dark:text-gray-100\">Tool-Migrationsfalle\u003C\u002Fstrong>\u003Cdiv class=\"text-gray-700 dark:text-gray-200\">Behandeln Sie einen Funktionsaufruf aus der verwalteten Harness nicht als Autorisierung, die Aktion auszuführen. Die Harness entscheidet, &lt;em&gt;was sie aufrufen möchte&lt;\u002Fem&gt;; Ihre Anwendung entscheidet weiterhin, ob der aktuelle Benutzer, die Sitzung und der Geschäftszustand diese Aktion erlauben.\u003C\u002Fdiv>\u003C\u002Faside>\n\u003Ch2 id=\"section-30\">Schritt 4 — Entscheiden, wo die Ausführung stattfinden soll\u003C\u002Fh2>\n\u003Cp>Die Agents-API trennt die verwaltete Harness von der Ausführungsumgebung. Ein Agent kann ohne dedizierte Umgebung, in einer von OpenAI gehosteten Sandbox oder über eine selbst gehostete Umgebung arbeiten, die mit der Sitzung verbunden ist.\u003C\u002Fp>\n\u003Cp>Dies schafft eine Migrationsentscheidung, die SDK-Anwendungen möglicherweise nie explizit getroffen haben: Welcher Code sollte als Anwendungsfunktion laufen, welcher Code gehört in eine Sandbox und welche Workloads erfordern Infrastruktur, die Sie kontrollieren?\u003C\u002Fp>\n\u003Cdiv class=\"overflow-x-auto\">\u003Ctable class=\"w-full border-collapse\">\u003Cthead>\u003Ctr>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Bedarf\u003C\u002Fth>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Wahrscheinliche Grenze\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Einen bestehenden internen Dienst über kontrollierte Geschäftslogik aufrufen\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Funktionstool, das von Ihrer Anwendung behandelt wird\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Isolierten Code ausführen oder mit temporären Dateien arbeiten, ohne private Infrastruktur\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Von OpenAI gehostete Umgebung\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Auf private Netzwerkressourcen, benutzerdefinierte Systemsoftware oder kontrollierte lokale Compute-Ressourcen zugreifen\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Selbst gehostete Umgebung\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Akzeptierte Produktartefakte dauerhaft speichern\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Anwendungseigener Speicher, nicht nur das Dateisystem der Sandbox\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Einen wirkungsvollen geschäftlichen Seiteneffekt ausführen\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Anwendungsfunktion mit Autorisierungs- und Audit-Kontrollen\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Ch2 id=\"section-34\">Schritt 5 — Implizite Wiederherstellung durch explizite Lebenszyklusbehandlung ersetzen\u003C\u002Fh2>\n\u003Cp>Die verwaltete Harness bietet Wiederherstellung auf Sitzungsebene, aber Ihre Anwendung besitzt weiterhin jede externe Abhängigkeit darum herum. Selbst gehostete Umgebungen benötigen Bereitstellung, Wiederverbindung und Herunterfahren. Funktionshandler können fehlschlagen. Webhooks können erneut versucht werden. Produktseitiger Zustand kann sich ändern, während ein Agent inaktiv ist.\u003C\u002Fp>\n\u003Cp>Die Migration benötigt daher zwei Wiederherstellungsmodelle: Wiederherstellung der Agentenlaufzeit und Wiederherstellung des Geschäftsvorgangs. Die erste wird zunehmend von der Agents-API verwaltet. Die zweite bleibt Ihre Verantwortung.\u003C\u002Fp>\n\u003Ch2 id=\"section-37\">Schritt 6 — Observability rund um die neue Trace-Grenze neu aufbauen\u003C\u002Fh2>\n\u003Cp>Agents-API-Sitzungen stellen Ereignisse, gespeicherten Verlauf, Turns, Tool-Aufrufe, Subagenten und Token-Nutzung bereit. OpenAI bietet außerdem Sitzungsprotokolle in der Plattform und Trace-Export.\u003C\u002Fp>\n\u003Cp>Verwerfen Sie Ihre Anwendungs-Observability nicht, nur weil sich die Plattform-Traces verbessert haben. Produktprotokolle müssen weiterhin die Agent-Sitzung mit Benutzeridentität, Autorisierungsentscheidung, Domänenobjekt, Tool-Seiteneffekt, Genehmigungsdatensatz und endgültig akzeptiertem Ergebnis verknüpfen. Der nützliche Produktions-Trace ist die Verbindung zwischen Agent-Runtime-Evidenz und Business-Runtime-Evidenz.\u003C\u002Fp>\n\u003Caside class=\"editorjs-referral my-6\">\u003Ca href=\"https:\u002F\u002Fstajic.de\u002Fde\u002Fblog\u002Fai-agent-reliability-why-the-final-answer-is-not-enough\" class=\"flex flex-col sm:flex-row gap-4 rounded-xl border border-gray-200 dark:border-gray-700 p-4 transition hover:border-primary-500\">\u003Cdiv class=\"min-w-0 flex-1\">\u003Cstrong class=\"block text-lg text-gray-900 dark:text-gray-100\">Zuverlässigkeit von KI-Agenten: Warum die endgültige Antwort nicht ausreicht\u003C\u002Fstrong>\u003Cp class=\"mt-2 text-sm text-gray-600 dark:text-gray-300\">Die Zuverlässigkeit von Agenten hängt vom Ausführungspfad, den Tools und den Zwischenentscheidungen ab — nicht nur von der endgültigen Ausgabe.\u003C\u002Fp>\u003Cspan class=\"mt-3 inline-flex text-sm font-medium text-primary-600 dark:text-primary-400\">Lesen Sie den Artikel zur Zuverlässigkeit →\u003C\u002Fspan>\u003C\u002Fdiv>\u003C\u002Fa>\u003C\u002Faside>\n\u003Ch2 id=\"section-41\">Schritt 7 — Evals bewahren, bevor die Runtime geändert wird\u003C\u002Fh2>\n\u003Cp>Eine Migration kann erfolgreich erscheinen, weil das neue System weiterhin plausible Antworten liefert, während es stillschweigend Tool-Auswahl, Sitzungskontinuität, Übergabeverhalten, Latenz oder Fehlerbehebung ändert. Erstellen Sie die Verhaltensbasis, bevor Sie die Runtimes wechseln.\u003C\u002Fp>\n\u003Cp>Die Basis sollte repräsentative Aufgaben, erwartete Tool-Aufrufe, verbotene Aktionen, Genehmigungspunkte, Zustandskontinuität, Wiederherstellungsszenarien und Akzeptanzkriterien für die endgültige Ausgabe enthalten. Führen Sie die alte und die neue Architektur nach Möglichkeit mit denselben Fällen aus.\u003C\u002Fp>\n\u003Ch2 id=\"section-44\">Der Migration-Proof-Test\u003C\u002Fh2>\n\u003Csection class=\"editorjs-process my-6\">\u003Ch3 class=\"mb-3 text-lg font-semibold\">Beweisen Sie die neue Runtime vor dem Umstieg\u003C\u002Fh3>\u003Cdiv class=\"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4\">\u003Cdiv class=\"editorjs-process__step min-w-0  rounded-xl border border-gray-200 dark:border-gray-700 p-4\">\u003Cdiv class=\"text-xs font-semibold text-gray-500 dark:text-gray-400\">1\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 font-semibold text-gray-900 dark:text-gray-100\">1. Verhaltensbasis einfrieren\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 text-sm text-gray-600 dark:text-gray-300\">Erfassen Sie repräsentative SDK-Traces, erwartete Ausgaben, Tool-Pfade, Genehmigungspunkte und Fehlerfälle.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"editorjs-process__step min-w-0  rounded-xl border border-gray-200 dark:border-gray-700 p-4\">\u003Cdiv class=\"text-xs font-semibold text-gray-500 dark:text-gray-400\">2\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 font-semibold text-gray-900 dark:text-gray-100\">2. Zustandsverantwortung inventarisieren\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 text-sm text-gray-600 dark:text-gray-300\">Markieren Sie jedes Zustandsfeld als Agent-Sitzungszustand, autoritativen Domänenzustand, dauerhaftes Artefakt oder ephemeren Arbeitszustand.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"editorjs-process__step min-w-0  rounded-xl border border-gray-200 dark:border-gray-700 p-4\">\u003Cdiv class=\"text-xs font-semibold text-gray-500 dark:text-gray-400\">3\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 font-semibold text-gray-900 dark:text-gray-100\">3. Stabile Tool-Implementierungen wiederverwenden\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 text-sm text-gray-600 dark:text-gray-300\">Behalten Sie Geschäftsfunktionen hinter Anwendungsschnittstellen bei; ersetzen Sie nach Möglichkeit nur die agentenorientierte Integration.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"editorjs-process__step min-w-0  rounded-xl border border-gray-200 dark:border-gray-700 p-4\">\u003Cdiv class=\"text-xs font-semibold text-gray-500 dark:text-gray-400\">4\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 font-semibold text-gray-900 dark:text-gray-100\">4. Einen vertikalen Agents-API-Slice erstellen\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 text-sm text-gray-600 dark:text-gray-300\">Migrieren Sie einen produktionsnahen Workflow einschließlich Sitzungserstellung, Tools, Ereignissen, Umgebung und Persistenz.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"editorjs-process__step min-w-0  rounded-xl border border-gray-200 dark:border-gray-700 p-4\">\u003Cdiv class=\"text-xs font-semibold text-gray-500 dark:text-gray-400\">5\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 font-semibold text-gray-900 dark:text-gray-100\">5. Unterbrechungen injizieren\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 text-sm text-gray-600 dark:text-gray-300\">Testen Sie Prozessneustart, Webhook-Wiederholung, Funktions-Timeout, Wiederverbindung der selbst gehosteten Umgebung und veralteten Domänenzustand.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"editorjs-process__step min-w-0  rounded-xl border border-gray-200 dark:border-gray-700 p-4\">\u003Cdiv class=\"text-xs font-semibold text-gray-500 dark:text-gray-400\">6\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 font-semibold text-gray-900 dark:text-gray-100\">6. Traces vergleichen, nicht nur Antworten\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 text-sm text-gray-600 dark:text-gray-300\">Überprüfen Sie Tool-Auswahl, Autorisierung, Evidenzpfad, Zustandsübergänge und Seiteneffekte anhand der Basis.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"editorjs-process__step min-w-0  rounded-xl border border-gray-200 dark:border-gray-700 p-4\">\u003Cdiv class=\"text-xs font-semibold text-gray-500 dark:text-gray-400\">7\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 font-semibold text-gray-900 dark:text-gray-100\">7. Shadow-Traffic ausführen\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 text-sm text-gray-600 dark:text-gray-300\">Spielen Sie nach Möglichkeit repräsentative Aufgaben erneut ab oder spiegeln Sie sie, bevor die neue Runtime autoritativ wird.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"editorjs-process__step min-w-0  rounded-xl border border-gray-200 dark:border-gray-700 p-4\">\u003Cdiv class=\"text-xs font-semibold text-gray-500 dark:text-gray-400\">8\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 font-semibold text-gray-900 dark:text-gray-100\">8. Hinter einer umkehrbaren Grenze umstellen\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 text-sm text-gray-600 dark:text-gray-300\">Behalten Sie Integrationsadapter und Rollback-Fähigkeit bei, bis das Produktionsverhalten stabil ist.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\n\u003Ch2 id=\"section-46\">Was während der Migration gemessen werden sollte\u003C\u002Fh2>\n\u003Cdiv class=\"overflow-x-auto\">\u003Ctable class=\"w-full border-collapse\">\u003Cthead>\u003Ctr>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Dimension\u003C\u002Fth>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Migrationsprüfung\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Aufgabenerfolg\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Erfüllt die neue Runtime dieselben oder bessere Akzeptanzkriterien?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Tool-Korrektheit\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Ruft sie das richtige Tool mit gültigen Argumenten und Autorisierung auf?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Zustandskontinuität\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Kann die Arbeit über Turns, Neustarts und asynchrone Wartezeiten hinweg fortgesetzt werden?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Wiederherstellung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Was passiert nach Webhook-Verlust, Handler-Fehler, Umgebungsunterbrechung oder Timeout?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Nachverfolgbarkeit\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Kann jede folgenreiche Aktion mit Sitzung, Benutzer, Tool-Aufruf und Domänenobjekt verknüpft werden?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Kontextverhalten\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Bewahren lang laufende Sitzungen Einschränkungen, ohne veraltete Anwendungswahrheit mitzuführen?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Latenz\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Wie wirken sich Sitzungsstart, Umgebungsbereitstellung und Multi-Turn-Arbeit auf die für Benutzer sichtbare Zeit aus?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Kosten\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Was ändert sich bei Modellnutzung, Sandbox-Nutzung, wiederholtem Kontext und Infrastrukturoperationen?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Betriebslast\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Welche zuvor in der Anwendung liegenden Verantwortlichkeiten sind tatsächlich verschwunden und welche haben sich nur verschoben?\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Ch2 id=\"section-48\">Wann noch nicht migriert werden sollte\u003C\u002Fh2>\n\u003Cp>Eine bestehende Agents-SDK-Anwendung wird nicht allein dadurch zu einer schlechten Architektur, dass sich die Plattformrichtung geändert hat. OpenAI führt Wartung, Sicherheitsfixes, kritische Bugfixes und Kompatibilitätsarbeit fort. Wenn die Anwendung stabil ist, gut evaluiert ist und keine blockierte Roadmap-Anforderung hat, ist eine sofortige Runtime-Migration möglicherweise nicht gerechtfertigt.\u003C\u002Fp>\n\u003Cul>\u003Cli>Eine erforderliche SDK-Funktion ist in der Agents-API noch nicht verfügbar.\u003C\u002Fli>\u003Cli>Die Migration würde einen kritischen Produktionszeitraum stören, ohne kurzfristigen Nutzen zu bringen.\u003C\u002Fli>\u003Cli>Die Anwendung hängt von benutzerdefinierten Orchestrierungssemantiken ab, die auf dem verwalteten Harness nicht validiert wurden.\u003C\u002Fli>\u003Cli>Anbieterportabilität ist eine harte Anforderung und die aktuelle SDK-Abstraktion ist wesentlich wertvoll.\u003C\u002Fli>\u003Cli>Ihr Team hat noch keinen Geschäftszustand vom Agent-Runtime-Zustand getrennt, was den Umstieg unsicher macht.\u003C\u002Fli>\u003Cli>Das Verhalten der neuen Agents-API wurde nicht gegen repräsentative Produktionslasten getestet.\u003C\u002Fli>\u003C\u002Ful>\n\u003Ch2 id=\"section-51\">Wann die Migration strategisch wichtig wird\u003C\u002Fh2>\n\u003Cp>Die Migration wird überzeugender, wenn Produktanforderungen mit dem verwalteten Harness übereinstimmen: dauerhafte lang laufende Arbeit, plattformverwaltete Kontextkomprimierung und Wiederherstellung, neuere Agent-Runtime-Funktionen, sandboxed Ausführung, reichhaltigeres gehostetes Lifecycle-Management oder der Wunsch, die Menge an Orchestrierungscode zu reduzieren, die Ihre Anwendung betreibt.\u003C\u002Fp>\n\u003Cp>Das stärkste Signal ist nicht „das alte SDK ist funktionsvollständig“. Es ist „unsere Roadmap hängt jetzt von Funktionen ab, deren natürlicher Ort die verwaltete Agents-API-Runtime ist“.\u003C\u002Fp>\n\u003Ch2 id=\"section-54\">Was diese Antwort ändern würde\u003C\u002Fh2>\n\u003Cp>Die Migrationsstrategie würde sich ändern, wenn OpenAI automatisierte Migrationstools veröffentlicht, explizite Kompatibilitätsschichten einführt, die Sitzungssemantik der Agents API ändert, die Unterstützung für selbstgehostete Umgebungen erweitert oder einschränkt oder die Support-Richtlinie für das Agents SDK ändert.\u003C\u002Fp>\n\u003Cp>Sie würde sich auch ändern, wenn sich Ihre Produktanforderungen ändern. Ein einfacher Anfrage-Antwort-Assistent benötigt möglicherweise überhaupt keine dauerhafte verwaltete Harness. Ein lang laufender Coding-, Recherche- oder Operations-Agent kann viel stärker vom Eigentumsmodell der Agents API profitieren.\u003C\u002Fp>\n\u003Ch2 id=\"section-57\">Einschränkungen\u003C\u002Fh2>\n\u003Cp>Es gibt keine universelle Eins-zu-eins-Zuordnung von SDK zu API für die Migration, da Anwendungen das Agents SDK unterschiedlich nutzen. Einige verlassen sich stark auf Sitzungen und Übergaben; andere verwenden es als dünnen Runner um Funktionswerkzeuge. Die korrekte Migration hängt davon ab, welche Verantwortlichkeiten Ihre Anwendung heute tatsächlich besitzt.\u003C\u002Fp>\n\u003Cp>Die Agents API befindet sich zudem in der öffentlichen Beta, sodass sich Implementierungsdetails weiterentwickeln können. Betrachten Sie die Eigentumsprinzipien in diesem Artikel als beständiger als jede einzelne Endpunktform.\u003C\u002Fp>\n\u003Ch2 id=\"section-60\">Fazit\u003C\u002Fh2>\n\u003Cp>Die Migration vom Agents SDK zur Agents API lässt sich am besten als Verschiebung der Agent-Runtime-Grenze verstehen. Die verwaltete Harness übernimmt mehr von der Schleife, Sitzungskontinuität, Kompaktierung und Wiederherstellung. Ihre Anwendung sollte expliziter werden bezüglich der Verantwortlichkeiten, die bei ihr verbleiben: Domänenwahrheit, Autorisierung, Funktionsnebenwirkungen, Artefakte, Auditierbarkeit und Produktlebenszyklus.\u003C\u002Fp>\n\u003Cp>Wenn eine Migration die gesamte alte Orchestrierungsmaschinerie beibehält und lediglich SDK-Aufrufe durch Agents-API-Aufrufe ersetzt, hat sie wahrscheinlich die architektonische Chance verpasst. Das Ziel ist nicht, die alte Runtime auf der neuen nachzubilden. Das Ziel ist zu entscheiden, welche Runtime-Verantwortlichkeiten nicht mehr in Ihre Anwendung gehören.\u003C\u002Fp>\n\u003Ch2 id=\"section-63\">FAQ\u003C\u002Fh2>\n\u003Csection class=\"editorjs-faq my-6 rounded-xl border border-gray-200 p-5 dark:border-gray-700\">\u003Ch3 class=\"mb-3 text-lg font-semibold\">Migration vom Agents SDK zur Agents API\u003C\u002Fh3>\u003Cdiv id=\"faq1\" class=\"border-t border-gray-200 py-4 first:border-t-0 dark:border-gray-700\">\u003Ch4 class=\"font-semibold text-gray-900 dark:text-gray-100\">Ist die Migration vom Agents SDK zur Agents API nur ein API-Rewrite?\u003C\u002Fh4>\u003Cdiv class=\"mt-2 text-gray-600 dark:text-gray-300\">Nein. Die Hauptänderung betrifft die Runtime-Verantwortung: Das Agents SDK führt die Agent-Schleife in Ihrer Anwendung aus, während die Agents API eine verwaltete Codex-Harness und eine dauerhafte Sitzung ausführt. Zustand, Lebenszyklus, Ereignisbehandlung und Wiederherstellung sollten als Architekturbelange überprüft werden.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv id=\"faq2\" class=\"border-t border-gray-200 py-4 first:border-t-0 dark:border-gray-700\">\u003Ch4 class=\"font-semibold text-gray-900 dark:text-gray-100\">Müssen meine Funktionswerkzeuge neu geschrieben werden?\u003C\u002Fh4>\u003Cdiv class=\"mt-2 text-gray-600 dark:text-gray-300\">Die Geschäftsimplementierung kann oft wiederverwendet werden, wenn sie bereits hinter einer stabilen Anwendungsschnittstelle liegt. Die agentenseitige Integration ändert sich, weil Agents-API-Funktionsaufrufe über sitzungsbasierte erforderliche Aktionen und Ergebnisse abgewickelt werden.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv id=\"faq3\" class=\"border-t border-gray-200 py-4 first:border-t-0 dark:border-gray-700\">\u003Ch4 class=\"font-semibold text-gray-900 dark:text-gray-100\">Sollte ich Geschäftszustand in die Agents-API-Sitzung verschieben?\u003C\u002Fh4>\u003Cdiv class=\"mt-2 text-gray-600 dark:text-gray-300\">Im Allgemeinen nein. Behalten Sie autoritativen Geschäfts- und Produktzustand in Ihren eigenen Datenbanken oder Diensten. Verwenden Sie die Agentensitzung für Agentenkontinuität und Arbeitskontext, nicht als einzige Quelle der Wahrheit für Ihr Produkt.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv id=\"faq4\" class=\"border-t border-gray-200 py-4 first:border-t-0 dark:border-gray-700\">\u003Ch4 class=\"font-semibold text-gray-900 dark:text-gray-100\">Benötige ich Webhooks für die Agents API?\u003C\u002Fh4>\u003Cdiv class=\"mt-2 text-gray-600 dark:text-gray-300\">Nicht immer, da auch Streaming verfügbar ist. Webhooks sind besonders nützlich für lang laufende oder asynchrone Sitzungen, bei denen Ihre Anwendung auf Lebenszyklusänderungen reagieren sollte, ohne einen offenen Stream zu halten.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv id=\"faq5\" class=\"border-t border-gray-200 py-4 first:border-t-0 dark:border-gray-700\">\u003Ch4 class=\"font-semibold text-gray-900 dark:text-gray-100\">Sollte jede bestehende Agents-SDK-Anwendung jetzt migrieren?\u003C\u002Fh4>\u003Cdiv class=\"mt-2 text-gray-600 dark:text-gray-300\">Nein. Das SDK bleibt im Wartungsmodus unterstützt. Migrieren Sie, wenn die neue Runtime einen sinnvollen Roadmap-Wert bietet und nachdem das erforderliche Verhalten anhand produktionsnaher Evals validiert wurde.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\n\u003Ch2 id=\"section-65\">Glossar\u003C\u002Fh2>\n\u003Csection class=\"editorjs-glossary my-6 rounded-xl border border-gray-200 dark:border-gray-700 p-5\">\u003Ch3 class=\"mb-3 text-lg font-semibold\">Wichtige Migrationsbegriffe\u003C\u002Fh3>\u003Cdl>\u003Cdiv id=\"runtime-boundary\" class=\"border-t border-gray-200 dark:border-gray-700 py-3 first:border-t-0\">\u003Cdt class=\"font-semibold text-gray-900 dark:text-gray-100\">Runtime-Grenze\u003C\u002Fdt>\u003Cdd class=\"mt-1 text-gray-600 dark:text-gray-300\">Die Aufteilung der Verantwortung zwischen der plattformverwalteten Agent-Runtime und der anwendungseigenen Runtime.\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv id=\"harness\" class=\"border-t border-gray-200 dark:border-gray-700 py-3 first:border-t-0\">\u003Cdt class=\"font-semibold text-gray-900 dark:text-gray-100\">Harness\u003C\u002Fdt>\u003Cdd class=\"mt-1 text-gray-600 dark:text-gray-300\">Die Agent-Runtime, die Modellaufrufe, Werkzeuge, Kontext, Orchestrierung und fortgesetzte Ausführung koordiniert.\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv id=\"session\" class=\"border-t border-gray-200 dark:border-gray-700 py-3 first:border-t-0\">\u003Cdt class=\"font-semibold text-gray-900 dark:text-gray-100\">Sitzung\u003C\u002Fdt>\u003Cdd class=\"mt-1 text-gray-600 dark:text-gray-300\">Eine dauerhafte Agents-API-Instanz, die die Konfiguration, Konversation und gespeicherte Arbeit eines Agenten über mehrere Turns hinweg enthält.\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv id=\"required-action\" class=\"border-t border-gray-200 dark:border-gray-700 py-3 first:border-t-0\">\u003Cdt class=\"font-semibold text-gray-900 dark:text-gray-100\">Erforderliche Aktion\u003C\u002Fdt>\u003Cdd class=\"mt-1 text-gray-600 dark:text-gray-300\">Ein Sitzungszustand, in dem die Agents API externe Eingaben wie ein Funktionsergebnis oder eine Umgebungsverbindung benötigt, bevor die Arbeit fortgesetzt werden kann.\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv id=\"self-hosted-environment\" class=\"border-t border-gray-200 dark:border-gray-700 py-3 first:border-t-0\">\u003Cdt class=\"font-semibold text-gray-900 dark:text-gray-100\">Selbstgehostete Umgebung\u003C\u002Fdt>\u003Cdd class=\"mt-1 text-gray-600 dark:text-gray-300\">Eine Ausführungsumgebung, die von Ihrer Infrastruktur betrieben und mit der verwalteten Agents-API-Harness verbunden ist.\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv id=\"migration-proof-test\" class=\"border-t border-gray-200 dark:border-gray-700 py-3 first:border-t-0\">\u003Cdt class=\"font-semibold text-gray-900 dark:text-gray-100\">Migrationsnachweistest\u003C\u002Fdt>\u003Cdd class=\"mt-1 text-gray-600 dark:text-gray-300\">Eine stufenweise Validierungsmethode, die die neue Runtime mit Verhaltensbaselines, Fehlerinjektionen, Traces und umkehrbaren Cutover-Kriterien vergleicht.\u003C\u002Fdd>\u003C\u002Fdiv>\u003C\u002Fdl>\u003C\u002Fsection>\n\u003Ch2 id=\"section-67\">Primärquellen und weiterführende Literatur\u003C\u002Fh2>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents\u002Fsdk\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Agents SDK\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Aktuelle Support-Richtlinie: Das Agents SDK ist funktionsvollständig, bleibt gewartet, und neue Anwendungen sollten mit der Agents API beginnen.\u003C\u002Fp>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents\u002Frunning-agents\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Agenten mit dem Agents SDK ausführen\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Dokumentation der anwendungseigenen Agent-Schleife und des Fortsetzungsmodells des SDK.\u003C\u002Fp>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Foverview\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Agents-API-Übersicht\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Definiert die Kernkonzepte der Agents API: Agent, Umgebung, Sitzung, Ereignisse und Elemente.\u003C\u002Fp>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Farchitecture\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Agents-API-Architektur\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Erklärt die Grenzen zwischen gehosteter Harness, Anwendungsserver, OpenAI-gehosteter und selbstgehosteter Ausführungsumgebung.\u003C\u002Fp>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fconfiguration\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Agenten konfigurieren\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Definiert wiederverwendbare Agentenkonfiguration und Anpassung auf Sitzungsebene.\u003C\u002Fp>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fsessions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Sitzungen ausführen und fortsetzen\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Dokumentiert dauerhafte Sitzungen, asynchrone Turns, Streaming und Steuerung.\u003C\u002Fp>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Ftools\u002Ffunctions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Agents API Functions\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Definition von Funktionswerkzeugen und die Anwendungs-Handler-Grenze für erforderliche Funktionsergebnisse.\u003C\u002Fp>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fsessions\u002Fwebhooks\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Sitzungs-Webhooks\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Lebenszyklusereignisse für asynchrone Sitzungen, erforderliche Aktionen und selbst gehostete Umgebungsverbindungen.\u003C\u002Fp>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fobservability\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Agents API Observability und Nutzung\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Sitzungsprotokolle, Ereignisse, Turns, Werkzeugaufrufe, Subagenten, Traces und Token-Nutzungsprüfung.\u003C\u002Fp>\u003C\u002Fa>\n\u003Cp>Die Migration vom OpenAI Agents SDK zur Agents API ist keine bloße Umbenennung von Imports. Die zentrale architektonische Grenze verschiebt sich: Das SDK führt die Agentenschleife innerhalb Ihrer Anwendung aus, während die Agents API eine verwaltete Codex-Harness und eine dauerhafte Sitzung auf der Seite von OpenAI betreibt. Die Migrationsfrage lautet daher nicht „Welche Klassen werden welchen Endpunkten zugeordnet?“, sondern „Welche Laufzeitverantwortlichkeiten wechseln über die Grenze, welche bleiben in unserer Anwendung und welche müssen neu gestaltet werden?“\u003C\u002Fp>\n\u003Caside class=\"editorjs-callout editorjs-callout--info my-6 rounded-xl border p-5 border-blue-300 bg-blue-50 dark:border-blue-900 dark:bg-blue-950\u002F20\" role=\"note\">\u003Cstrong class=\"block mb-2 text-gray-900 dark:text-gray-100\">Direkte Antwort\u003C\u002Fstrong>\u003Cdiv class=\"text-gray-700 dark:text-gray-200\">&lt;strong&gt;Eine echte Migration vom Agents SDK zur Agents API verändert die Laufzeitverantwortung.&lt;\u002Fstrong&gt; Ihre wiederverwendbare Agentenkonfiguration kann weiterhin Modell, Anweisungen und Werkzeuge enthalten, aber die Schleife, die dauerhafte Sitzung, die Orchestrierung, die Kontextkomprimierung und die Wiederherstellung wandern in die verwaltete Agents API-Laufzeit. Ihre Anwendung sollte Domänenzustand, Autorisierung, Geschäftsregeln, Funktionsimplementierungen und Audit-Logik außerhalb der Agentensitzung behalten. Betrachten Sie die Migration als eine Neugestaltung der Grenze, nicht als mechanische Codekonvertierung.\u003C\u002Fdiv>\u003C\u002Faside>\n\u003Caside class=\"editorjs-callout editorjs-callout--warning my-6 rounded-xl border p-5 border-amber-300 bg-amber-50 dark:border-amber-900 dark:bg-amber-950\u002F20\" role=\"note\">\u003Cstrong class=\"block mb-2 text-gray-900 dark:text-gray-100\">Aktuell Stand 25. September 2026\u003C\u002Fstrong>\u003Cdiv class=\"text-gray-700 dark:text-gray-200\">OpenAI kennzeichnet das Agents SDK derzeit als &lt;strong&gt;funktionsvollständig&lt;\u002Fstrong&gt; und empfiehlt die Agents API für neue Agentenanwendungen. Die Agents API befindet sich in der öffentlichen Beta. Bestehende SDK-Anwendungen werden weiterhin unterstützt, und eine sofortige Migration ist nicht automatisch erforderlich.\u003C\u002Fdiv>\u003C\u002Faside>\n\u003Caside class=\"editorjs-callout editorjs-callout--note my-6 rounded-xl border p-5 border-gray-300 bg-gray-50 dark:border-gray-700 dark:bg-gray-900\u002F40\" role=\"note\">\u003Cstrong class=\"block mb-2 text-gray-900 dark:text-gray-100\">Zum Migrationsmodell\u003C\u002Fstrong>\u003Cdiv class=\"text-gray-700 dark:text-gray-200\">Die Runtime Boundary Migration Map und der Migration Proof Test in diesem Artikel sind praktische Architekturwerkzeuge, keine offiziellen Migrationsframeworks von OpenAI. Sie leiten sich aus den aktuellen, von OpenAI dokumentierten Laufzeitunterschieden ab.\u003C\u002Fdiv>\u003C\u002Faside>\n\u003Cnav class=\"editorjs-toc\" data-editorjs-toc=\"true\" aria-label=\"Inhalt\">\u003Cstrong class=\"editorjs-toc__title\">Inhalt\u003C\u002Fstrong>\u003Col class=\"editorjs-toc__list editorjs-toc__list--depth-0\">\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-6\" class=\"editorjs-toc__link\">Die Migration erfolgt von einer anwendungseigenen Schleife zu einer verwalteten Harness\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-10\" class=\"editorjs-toc__link\">Die Runtime Boundary Migration Map\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-12\" class=\"editorjs-toc__link\">Was konzeptionell migrieren kann, ohne die Verantwortung zu ändern\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-16\" class=\"editorjs-toc__link\">Was nicht eins zu eins migriert werden sollte\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-19\" class=\"editorjs-toc__link\">Schritt 1 — Domänenzustand vom Agentensitzungszustand trennen\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-23\" class=\"editorjs-toc__link\">Schritt 2 — Die Runner-Denkweise in eine Sitzungs- und Ereignis-Denkweise umwandeln\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-26\" class=\"editorjs-toc__link\">Schritt 3 — Funktionstools um erforderliche Aktionen herum neu gestalten\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-30\" class=\"editorjs-toc__link\">Schritt 4 — Entscheiden, wo die Ausführung stattfinden soll\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-34\" class=\"editorjs-toc__link\">Schritt 5 — Implizite Wiederherstellung durch explizite Lebenszyklusbehandlung ersetzen\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-37\" class=\"editorjs-toc__link\">Schritt 6 — Observability rund um die neue Trace-Grenze neu aufbauen\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-41\" class=\"editorjs-toc__link\">Schritt 7 — Evals bewahren, bevor die Runtime geändert wird\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-44\" class=\"editorjs-toc__link\">Der Migration-Proof-Test\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-46\" class=\"editorjs-toc__link\">Was während der Migration gemessen werden sollte\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-48\" class=\"editorjs-toc__link\">Wann noch nicht migriert werden sollte\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-51\" class=\"editorjs-toc__link\">Wann die Migration strategisch wichtig wird\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-54\" class=\"editorjs-toc__link\">Was diese Antwort ändern würde\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-57\" class=\"editorjs-toc__link\">Einschränkungen\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-60\" class=\"editorjs-toc__link\">Fazit\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-63\" class=\"editorjs-toc__link\">FAQ\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-65\" class=\"editorjs-toc__link\">Glossar\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-67\" class=\"editorjs-toc__link\">Primärquellen und weiterführende Literatur\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-82\" class=\"editorjs-toc__link\">Die Migration erfolgt von einer anwendungseigenen Schleife zu einer verwalteten Harness\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-86\" class=\"editorjs-toc__link\">Die Runtime Boundary Migration Map\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-88\" class=\"editorjs-toc__link\">Was konzeptionell migrieren kann, ohne die Verantwortung zu ändern\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-92\" class=\"editorjs-toc__link\">Was nicht eins zu eins migriert werden sollte\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-95\" class=\"editorjs-toc__link\">Schritt 1 — Domänenzustand vom Agentensitzungszustand trennen\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-99\" class=\"editorjs-toc__link\">Schritt 2 — Die Runner-Denkweise in eine Sitzungs- und Ereignis-Denkweise umwandeln\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-102\" class=\"editorjs-toc__link\">Schritt 3 — Funktionstools um erforderliche Aktionen herum neu gestalten\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-106\" class=\"editorjs-toc__link\">Schritt 4 — Entscheiden, wo die Ausführung stattfinden soll\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-110\" class=\"editorjs-toc__link\">Schritt 5 — Implizite Wiederherstellung durch explizite Lebenszyklusverwaltung ersetzen\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-113\" class=\"editorjs-toc__link\">Schritt 6 — Observability um die neue Trace-Grenze herum neu aufbauen\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-117\" class=\"editorjs-toc__link\">Schritt 7 — Evals bewahren, bevor die Laufzeit geändert wird\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-120\" class=\"editorjs-toc__link\">Der Migrationsnachweis-Test\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-122\" class=\"editorjs-toc__link\">Was während der Migration gemessen werden sollte\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-124\" class=\"editorjs-toc__link\">Wann noch nicht migriert werden sollte\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-127\" class=\"editorjs-toc__link\">Wann die Migration strategisch wichtig wird\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-130\" class=\"editorjs-toc__link\">Was würde diese Antwort ändern?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-133\" class=\"editorjs-toc__link\">Einschränkungen\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-136\" class=\"editorjs-toc__link\">Fazit\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-139\" class=\"editorjs-toc__link\">FAQ\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-141\" class=\"editorjs-toc__link\">Glossar\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"editorjs-toc__item\">\u003Ca href=\"#section-143\" class=\"editorjs-toc__link\">Primärquellen und weiterführende Literatur\u003C\u002Fa>\u003C\u002Fli>\u003C\u002Fol>\u003C\u002Fnav>\n\u003Ch2 id=\"section-82\">Die Migration erfolgt von einer anwendungseigenen Schleife zu einer verwalteten Harness\u003C\u002Fh2>\n\u003Cp>Im Agents SDK ist ein Durchlauf ein Turn auf Anwendungsebene. Der SDK-Runner ruft das Modell auf, prüft die Ausgabe, führt Werkzeuge aus, folgt Übergaben und fährt fort, bis er einen Haltepunkt erreicht. Ihr Prozess hostet diese Schleife und besitzt daher ihren Lebenszyklus.\u003C\u002Fp>\n\u003Cp>In der Agents API betreibt OpenAI die Harness. Eine Sitzung ist eine dauerhafte Instanz einer Agentenkonfiguration, die Aufgaben annimmt, Ereignisse erzeugt, für erforderliche Aktionen pausieren kann und über die Zeit fortgesetzt werden kann. OpenAI verwaltet Sitzungen, Orchestrierung, Kontextkomprimierung und Wiederherstellung; Ihre Anwendung sendet Arbeit, behandelt Funktionswerkzeuge, empfängt Ereignisse und verwaltet optional eine selbst gehostete Ausführungsumgebung.\u003C\u002Fp>\n\u003Cp>Diese Verschiebung der Verantwortung ist die Migration. Alles andere — API-Syntax, Werkzeugschemata, Ereignisbehandlung, Sitzungs-IDs — folgt daraus.\u003C\u002Fp>\n\u003Ch2 id=\"section-86\">Die Runtime Boundary Migration Map\u003C\u002Fh2>\n\u003Cdiv class=\"overflow-x-auto\">\u003Ctable class=\"w-full border-collapse\">\u003Cthead>\u003Ctr>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Anliegen\u003C\u002Fth>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Agents SDK\u003C\u002Fth>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Agents API-Migrationsziel\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Agentenschleife\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Läuft in Ihrer Anwendung über den SDK-Runner\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Läuft in der verwalteten Codex-Harness\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Wiederverwendbare Agentendefinition\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Agent-Objekt im Anwendungscode\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Gespeicherte oder Inline-Agentenkonfiguration mit Modell, Anweisungen und Werkzeugen\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Konversations-\u002FArbeitskontinuität\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">SDK-Sitzungsstrategie, Verlauf, Ergebnis-Fortsetzung oder Anwendungsspeicherung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Dauerhafte Agents API-Sitzung\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Werkzeugausführung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">SDK koordiniert Werkzeugaufrufe in Ihrer Laufzeit\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Harness fordert Funktionsaufrufe an; Ihre Anwendung gibt Ergebnisse zurück\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Kontextverwaltung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Ihre Laufzeit \u002F SDK-Sitzungsstrategie\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Verwalteter Sitzungskontext, Komprimierung und Wiederherstellung, plus Ihre eigenen Anwendungsdatengrenzen\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Übergaben \u002F Spezialisten\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">SDK-Orchestrierungsprimitive\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Harness-\u002FSubagentenverhalten in der Agents API; gehen Sie nicht von Eins-zu-eins-Semantik aus\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Ausführungsumgebung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Ihre Anwendungslaufzeit oder werkzeugspezifische Umgebung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Optionale von OpenAI gehostete oder selbst gehostete Umgebung, die an die Sitzung angehängt ist\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Streaming\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">SDK-Streaming aus dem Durchlauf\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Agents API-Sitzungsereignisstrom\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Asynchroner Lebenszyklus\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Normalerweise anwendungsverwaltet um den SDK-Durchlauf herum\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Native Sitzungszustände, asynchrone Turns und Webhooks\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Tracing \u002F Observability\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Agents SDK-Tracing und Anwendungsprotokolle\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Agents-Sitzungsprotokolle, Ereignisse, Turns, Werkzeugaufrufe, Subagenten und exportierbare Traces\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Wiederherstellung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Anwendungsverantwortung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Verwaltete Harness-\u002FSitzungswiederherstellung plus anwendungseigene Wiederherstellung für externe Systeme und selbst gehostete Umgebungen\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Ch2 id=\"section-88\">Was konzeptionell migrieren kann, ohne die Verantwortung zu ändern\u003C\u002Fh2>\n\u003Cp>Mehrere Anwendungskonzepte überstehen die Migration sauber, obwohl sich ihre Darstellung ändert. Modelle, Anweisungen, JSON-Schema-Funktionsdefinitionen, MCP-Zugriff, Werkzeugbeschreibungen und Anforderungen an strukturierte Ausgaben sind weiterhin Anliegen der Agentenkonfiguration.\u003C\u002Fp>\n\u003Cp>Das Konfigurationsmodell der OpenAI Agents API definiert einen Agenten explizit durch Modell, Anweisungen, Werkzeuge, Reasoning und Ausgabeverhalten. Funktionswerkzeuge bleiben Anwendungscode: Die Harness fordert einen Funktionsaufruf an, und Ihr Handler gibt das Ergebnis zurück. OpenAI weist auch darauf hin, dass Funktionsimplementierungen, die mit der Responses API verwendet werden, mit dem Sitzungsablauf der Agents API wiederverwendet werden können.\u003C\u002Fp>\n\u003Caside class=\"editorjs-callout editorjs-callout--success my-6 rounded-xl border p-5 border-emerald-300 bg-emerald-50 dark:border-emerald-900 dark:bg-emerald-950\u002F20\" role=\"note\">\u003Cstrong class=\"block mb-2 text-gray-900 dark:text-gray-100\">Guter Migrationskandidat\u003C\u002Fstrong>\u003Cdiv class=\"text-gray-700 dark:text-gray-200\">Eine reine Geschäftsfunktion wie &lt;code&gt;get_customer(customer_id)&lt;\u002Fcode&gt; sollte nicht wissen müssen, ob der Aufrufer das Agents SDK oder die Agents API ist. Behalten Sie ihre Domänenlogik hinter einer stabilen Anwendungsschnittstelle und migrieren Sie nur den agentenorientierten Adapter.\u003C\u002Fdiv>\u003C\u002Faside>\n\u003Ch2 id=\"section-92\">Was nicht eins zu eins migriert werden sollte\u003C\u002Fh2>\n\u003Cp>Das gefährliche Migrationsmuster besteht darin, jede SDK-Laufzeitabstraktion innerhalb der Agents API neu zu erstellen. Das kann dazu führen, dass Sie für ein verwaltetes Harness bezahlen und trotzdem ein Schatten-Harness in Ihrer Anwendung betreiben.\u003C\u002Fp>\n\u003Cdiv class=\"overflow-x-auto\">\u003Ctable class=\"w-full border-collapse\">\u003Cthead>\u003Ctr>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Annahme aus der SDK-Ära\u003C\u002Fth>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Warum eine direkte Kopie riskant ist\u003C\u002Fth>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Migrationsfrage\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Die Anwendungsschleife besitzt jede Fortsetzung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Die Agents API besitzt bereits die Harness-Schleife\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Welche Fortsetzungslogik ist Produktlogik, und welche sollte in die verwaltete Sitzung verschoben werden?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Das lokale Sitzungsobjekt ist der primäre Kontinuitätsmechanismus\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Agents API-Sitzungen sind dauerhafte Ressourcen mit eigenem Lebenszyklus\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Welcher Zustand gehört in die Sitzung und welcher in die Produktdatenbank?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Jede Unterbrechung wird synchron behandelt\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Agents API-Turns sind asynchron und können action_required-Zustände aufweisen\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Welche Aktionen benötigen Webhooks, Worker, Idempotenz und fortsetzbare Handler?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Die gesamte Tool-Ausführung findet dort statt, wo der SDK-Prozess läuft\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Funktionshandler und Ausführungsumgebungen können getrennt sein\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Wo sollte jedes Tool tatsächlich ausgeführt werden?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Der SDK-Trace ist die operative Zeitachse\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Die Agents API stellt Sitzungsereignisse, Turns und verwaltete Traces bereit\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Welche Audit-Daten auf Anwendungsebene benötigen noch einen eigenen Datensatz?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Das Handoff-Objekt bildet direkt auf ein gehostetes Subagenten-Modell ab\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Laufzeitsemantik kann abweichen\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Welche für den Benutzer sichtbare Verantwortlichkeit und welches Spezialistenverhalten müssen erhalten bleiben, nicht nur die alte Klassenstruktur?\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Ch2 id=\"section-95\">Schritt 1 — Domänenzustand vom Agentensitzungszustand trennen\u003C\u002Fh2>\n\u003Cp>Bevor Sie API-Aufrufe anfassen, klassifizieren Sie den Zustand, den Ihre SDK-Anwendung derzeit trägt. Ein Teil des Zustands existiert nur, um das Agentengespräch am Laufen zu halten. Anderer Zustand ist Geschäftswahrheit: Benutzerberechtigungen, Projektstatus, Bestelldaten, Workflow-Genehmigung, Kundendatensätze, Dokumentversionen, Richtlinienzustand oder Anwendungskonfiguration.\u003C\u002Fp>\n\u003Cp>Die zweite Kategorie sollte nicht von einer Agents API-Sitzung abhängig werden. Eine dauerhafte Sitzung ist nützliche Kontinuität für den Agenten; sie ist kein Ersatz für die Quelle der Wahrheit Ihres Produkts. Wenn die Sitzung verschwindet, abläuft, neu aufgebaut wird oder die Implementierung ändert, muss Ihre Anwendung trotzdem wissen, was wahr ist.\u003C\u002Fp>\n\u003Csection class=\"editorjs-comparison my-6\">\u003Ch3 class=\"mb-3 text-lg font-semibold\">Test zur Zustandsplatzierung\u003C\u002Fh3>\u003Cdiv class=\"overflow-x-auto\">\u003Ctable class=\"w-full border-collapse\">\u003Cthead>\u003Ctr>\u003Cth class=\"border border-gray-300 bg-gray-50 px-4 py-3 text-left dark:border-gray-700 dark:bg-gray-900\">\u003C\u002Fth>\u003Cth class=\"border border-gray-300 bg-gray-50 px-4 py-3 text-left font-semibold dark:border-gray-700 dark:bg-gray-900\">Zustandstyp\u003C\u002Fth>\u003Cth class=\"border border-gray-300 bg-gray-50 px-4 py-3 text-left font-semibold dark:border-gray-700 dark:bg-gray-900\">Bevorzugter Eigentümer\u003C\u002Fth>\u003Cth class=\"border border-gray-300 bg-gray-50 px-4 py-3 text-left font-semibold dark:border-gray-700 dark:bg-gray-900\">Grund\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Cth class=\"border border-gray-300 px-4 py-3 text-left font-semibold dark:border-gray-700\">Gesprächskontinuität\u003C\u002Fth>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Cth class=\"border border-gray-300 px-4 py-3 text-left font-semibold dark:border-gray-700\">Geschäftswahrheit\u003C\u002Fth>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Cth class=\"border border-gray-300 px-4 py-3 text-left font-semibold dark:border-gray-700\">Dauerhaftes Artefakt\u003C\u002Fth>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Cth class=\"border border-gray-300 px-4 py-3 text-left font-semibold dark:border-gray-700\">Arbeitszustand\u003C\u002Fth>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-3 dark:border-gray-700\">\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\u003C\u002Fsection>\n\u003Ch2 id=\"section-99\">Schritt 2 — Die Runner-Denkweise in eine Sitzungs- und Ereignis-Denkweise umwandeln\u003C\u002Fh2>\n\u003Cp>SDK-Anwendungen denken oft in Begriffen von Aufrufen von run und Empfangen eines Ergebnisses. Die Agents API denkt in Begriffen einer dauerhaften Sitzung, deren Turns asynchron laufen können. Eine Nachricht an eine inaktive Sitzung startet Arbeit; eine Nachricht während eines aktiven Turns kann sie steuern. Fortschritt kommt über Streaming oder Webhooks.\u003C\u002Fp>\n\u003Cp>Dies beeinflusst die Anwendungsarchitektur. Lang laufende Produktionsarbeit sollte nicht davon abhängen, dass eine HTTP-Anfrage am Leben bleibt. Ihr Produkt benötigt stabile Sitzungsbezeichner, Lebenszykluspersistenz, Webhook-Verifizierung, idempotente Handler und eine Möglichkeit, den aktuellen Sitzungszustand nach Prozessneustarts abzugleichen.\u003C\u002Fp>\n\u003Ch2 id=\"section-102\">Schritt 3 — Funktionstools um erforderliche Aktionen herum neu gestalten\u003C\u002Fh2>\n\u003Cp>Funktionstools bleiben eine wichtige Anwendungsgrenze. Sie definieren die Funktion und ihr JSON-Schema in der Agentenkonfiguration. Wenn das Harness die Funktion benötigt, kann die Sitzung in einen action-required-Zustand wechseln. Ihre Anwendung ruft die erforderliche Aktion ab, führt die Geschäftslogik aus und gibt das Ergebnis zurück.\u003C\u002Fp>\n\u003Cp>Das bedeutet, dass die Funktionsimplementierung sicher fortgesetzt werden können sollte. Ein Webhook kann zugestellt werden, während ein anderer Worker verarbeitet. Ein Netzwerkfehler kann nach dem externen Seiteneffekt, aber vor der Rückgabe des Ergebnisses auftreten. Die Migration ist daher ein guter Moment, um Aufruf-IDs, Idempotenzschlüssel, explizite Autorisierung, Timeout-Richtlinien und Audit-Datensätze zu folgenreichen Tools hinzuzufügen.\u003C\u002Fp>\n\u003Caside class=\"editorjs-callout editorjs-callout--warning my-6 rounded-xl border p-5 border-amber-300 bg-amber-50 dark:border-amber-900 dark:bg-amber-950\u002F20\" role=\"note\">\u003Cstrong class=\"block mb-2 text-gray-900 dark:text-gray-100\">Tool-Migrationsfalle\u003C\u002Fstrong>\u003Cdiv class=\"text-gray-700 dark:text-gray-200\">Behandeln Sie einen Funktionsaufruf vom verwalteten Harness nicht als Autorisierung zur Ausführung der Aktion. Das Harness entscheidet, &lt;em&gt;was es aufrufen möchte&lt;\u002Fem&gt;; Ihre Anwendung entscheidet weiterhin, ob der aktuelle Benutzer, die Sitzung und der Geschäftszustand diese Aktion zulassen.\u003C\u002Fdiv>\u003C\u002Faside>\n\u003Ch2 id=\"section-106\">Schritt 4 — Entscheiden, wo die Ausführung stattfinden soll\u003C\u002Fh2>\n\u003Cp>Die Agents API trennt das verwaltete Harness von der Ausführungsumgebung. Ein Agent kann ohne dedizierte Umgebung, in einer von OpenAI gehosteten Sandbox oder über eine selbst gehostete Umgebung arbeiten, die mit der Sitzung verbunden ist.\u003C\u002Fp>\n\u003Cp>Dies schafft eine Migrationsentscheidung, die SDK-Anwendungen möglicherweise nie explizit getroffen haben: Welcher Code sollte als Anwendungsfunktion laufen, welcher Code gehört in eine Sandbox und welche Workloads erfordern Infrastruktur, die Sie kontrollieren?\u003C\u002Fp>\n\u003Cdiv class=\"overflow-x-auto\">\u003Ctable class=\"w-full border-collapse\">\u003Cthead>\u003Ctr>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Bedarf\u003C\u002Fth>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Wahrscheinliche Grenze\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Einen bestehenden internen Dienst über kontrollierte Geschäftslogik aufrufen\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Funktionswerkzeug, das von Ihrer Anwendung verwaltet wird\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Isolierten Code ausführen oder mit temporären Dateien ohne private Infrastruktur arbeiten\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Von OpenAI gehostete Umgebung\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Auf private Netzwerkressourcen, benutzerdefinierte Systemsoftware oder kontrollierte lokale Rechenleistung zugreifen\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Selbst gehostete Umgebung\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Akzeptierte Produktartefakte dauerhaft speichern\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Anwendungseigener Speicher, nicht nur das Sandbox-Dateisystem\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Einen wirkungsvollen geschäftlichen Seiteneffekt ausführen\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Anwendungsfunktion mit Autorisierungs- und Audit-Kontrollen\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Ch2 id=\"section-110\">Schritt 5 — Implizite Wiederherstellung durch explizite Lebenszyklusverwaltung ersetzen\u003C\u002Fh2>\n\u003Cp>Das verwaltete Harness bietet Wiederherstellung auf Sitzungsebene, aber Ihre Anwendung besitzt weiterhin jede externe Abhängigkeit darum herum. Selbst gehostete Umgebungen benötigen Bereitstellung, Wiederverbindung und Herunterfahren. Funktionshandler können fehlschlagen. Webhooks können wiederholt werden. Der Zustand auf Produktseite kann sich ändern, während ein Agent im Leerlauf ist.\u003C\u002Fp>\n\u003Cp>Die Migration benötigt daher zwei Wiederherstellungsmodelle: Wiederherstellung der Agent-Laufzeit und Wiederherstellung des Geschäftsbetriebs. Das erste wird zunehmend von der Agents API verwaltet. Das zweite bleibt Ihre Verantwortung.\u003C\u002Fp>\n\u003Ch2 id=\"section-113\">Schritt 6 — Observability um die neue Trace-Grenze herum neu aufbauen\u003C\u002Fh2>\n\u003Cp>Agents API-Sitzungen legen Ereignisse, gespeicherten Verlauf, Turns, Tool-Aufrufe, Subagenten und Token-Nutzung offen. OpenAI bietet außerdem Sitzungsprotokolle in der Plattform und Trace-Export.\u003C\u002Fp>\n\u003Cp>Verwerfen Sie Ihre Anwendungs-Observability nicht, nur weil sich die Plattform-Traces verbessert haben. Produktprotokolle müssen weiterhin die Agent-Sitzung mit Benutzeridentität, Autorisierungsentscheidung, Domänenobjekt, Tool-Seiteneffekt, Genehmigungsdatensatz und endgültig akzeptiertem Ergebnis verbinden. Der nützliche Produktions-Trace ist die Verknüpfung zwischen Agent-Laufzeit-Nachweisen und Geschäftslaufzeit-Nachweisen.\u003C\u002Fp>\n\u003Caside class=\"editorjs-referral my-6\">\u003Ca href=\"https:\u002F\u002Fstajic.de\u002Fde\u002Fblog\u002Fai-agent-reliability-why-the-final-answer-is-not-enough\" class=\"flex flex-col sm:flex-row gap-4 rounded-xl border border-gray-200 dark:border-gray-700 p-4 transition hover:border-primary-500\">\u003Cdiv class=\"min-w-0 flex-1\">\u003Cstrong class=\"block text-lg text-gray-900 dark:text-gray-100\">Zuverlässigkeit von KI-Agenten: Warum die endgültige Antwort nicht ausreicht\u003C\u002Fstrong>\u003Cp class=\"mt-2 text-sm text-gray-600 dark:text-gray-300\">Die Zuverlässigkeit von Agenten hängt vom Ausführungspfad, den Werkzeugen und den Zwischenentscheidungen ab — nicht nur von der endgültigen Ausgabe.\u003C\u002Fp>\u003Cspan class=\"mt-3 inline-flex text-sm font-medium text-primary-600 dark:text-primary-400\">Den Zuverlässigkeitsartikel lesen →\u003C\u002Fspan>\u003C\u002Fdiv>\u003C\u002Fa>\u003C\u002Faside>\n\u003Ch2 id=\"section-117\">Schritt 7 — Evals bewahren, bevor die Laufzeit geändert wird\u003C\u002Fh2>\n\u003Cp>Eine Migration kann erfolgreich erscheinen, weil das neue System weiterhin plausible Antworten liefert, während es stillschweigend Tool-Auswahl, Sitzungskontinuität, Übergabeverhalten, Latenz oder Fehlerwiederherstellung ändert. Erstellen Sie die Verhaltensbasis, bevor Sie die Laufzeiten wechseln.\u003C\u002Fp>\n\u003Cp>Die Basis sollte repräsentative Aufgaben, erwartete Tool-Aufrufe, verbotene Aktionen, Genehmigungspunkte, Zustandskontinuität, Wiederherstellungsszenarien und Akzeptanzkriterien für die endgültige Ausgabe enthalten. Führen Sie die alte und die neue Architektur nach Möglichkeit gegen dieselben Fälle aus.\u003C\u002Fp>\n\u003Ch2 id=\"section-120\">Der Migrationsnachweis-Test\u003C\u002Fh2>\n\u003Csection class=\"editorjs-process my-6\">\u003Ch3 class=\"mb-3 text-lg font-semibold\">Die neue Laufzeit beweisen, bevor umgestellt wird\u003C\u002Fh3>\u003Cdiv class=\"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4\">\u003Cdiv class=\"editorjs-process__step min-w-0  rounded-xl border border-gray-200 dark:border-gray-700 p-4\">\u003Cdiv class=\"text-xs font-semibold text-gray-500 dark:text-gray-400\">1\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 font-semibold text-gray-900 dark:text-gray-100\">1. Die Verhaltensbasis einfrieren\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 text-sm text-gray-600 dark:text-gray-300\">Repräsentative SDK-Traces, erwartete Ausgaben, Tool-Pfade, Genehmigungspunkte und Fehlerfälle erfassen.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"editorjs-process__step min-w-0  rounded-xl border border-gray-200 dark:border-gray-700 p-4\">\u003Cdiv class=\"text-xs font-semibold text-gray-500 dark:text-gray-400\">2\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 font-semibold text-gray-900 dark:text-gray-100\">2. Zustandsverantwortung inventarisieren\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 text-sm text-gray-600 dark:text-gray-300\">Jedes Zustandsfeld als Agent-Sitzungszustand, autoritativen Domänenzustand, dauerhaftes Artefakt oder ephemeren Arbeitszustand markieren.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"editorjs-process__step min-w-0  rounded-xl border border-gray-200 dark:border-gray-700 p-4\">\u003Cdiv class=\"text-xs font-semibold text-gray-500 dark:text-gray-400\">3\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 font-semibold text-gray-900 dark:text-gray-100\">3. Stabile Tool-Implementierungen wiederverwenden\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 text-sm text-gray-600 dark:text-gray-300\">Geschäftsfunktionen hinter Anwendungsschnittstellen beibehalten; nach Möglichkeit nur die agentenseitige Integration ersetzen.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"editorjs-process__step min-w-0  rounded-xl border border-gray-200 dark:border-gray-700 p-4\">\u003Cdiv class=\"text-xs font-semibold text-gray-500 dark:text-gray-400\">4\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 font-semibold text-gray-900 dark:text-gray-100\">4. Einen vertikalen Agents API-Slice erstellen\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 text-sm text-gray-600 dark:text-gray-300\">Einen produktionsnahen Workflow migrieren, einschließlich Sitzungserstellung, Tools, Ereignissen, Umgebung und Persistenz.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"editorjs-process__step min-w-0  rounded-xl border border-gray-200 dark:border-gray-700 p-4\">\u003Cdiv class=\"text-xs font-semibold text-gray-500 dark:text-gray-400\">5\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 font-semibold text-gray-900 dark:text-gray-100\">5. Unterbrechungen injizieren\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 text-sm text-gray-600 dark:text-gray-300\">Prozessneustart, Webhook-Wiederholung, Funktions-Timeout, Wiederverbindung der selbst gehosteten Umgebung und veralteten Domänenzustand testen.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"editorjs-process__step min-w-0  rounded-xl border border-gray-200 dark:border-gray-700 p-4\">\u003Cdiv class=\"text-xs font-semibold text-gray-500 dark:text-gray-400\">6\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 font-semibold text-gray-900 dark:text-gray-100\">6. Traces vergleichen, nicht nur Antworten\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 text-sm text-gray-600 dark:text-gray-300\">Tool-Auswahl, Autorisierung, Nachweispfad, Zustandsübergänge und Seiteneffekte gegen die Basis verifizieren.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"editorjs-process__step min-w-0  rounded-xl border border-gray-200 dark:border-gray-700 p-4\">\u003Cdiv class=\"text-xs font-semibold text-gray-500 dark:text-gray-400\">7\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 font-semibold text-gray-900 dark:text-gray-100\">7. Shadow-Traffic ausführen\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 text-sm text-gray-600 dark:text-gray-300\">Wo machbar, repräsentative Aufgaben wiedergeben oder spiegeln, bevor die neue Laufzeit autoritativ wird.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"editorjs-process__step min-w-0  rounded-xl border border-gray-200 dark:border-gray-700 p-4\">\u003Cdiv class=\"text-xs font-semibold text-gray-500 dark:text-gray-400\">8\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 font-semibold text-gray-900 dark:text-gray-100\">8. Hinter einer umkehrbaren Grenze umstellen\u003C\u002Fdiv>\u003Cdiv class=\"mt-1 text-sm text-gray-600 dark:text-gray-300\">Integrationsadapter und Rollback-Fähigkeit beibehalten, bis das Produktionsverhalten stabil ist.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\n\u003Ch2 id=\"section-122\">Was während der Migration gemessen werden sollte\u003C\u002Fh2>\n\u003Cdiv class=\"overflow-x-auto\">\u003Ctable class=\"w-full border-collapse\">\u003Cthead>\u003Ctr>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Dimension\u003C\u002Fth>\u003Cth class=\"border border-gray-300 px-4 py-2 text-left font-semibold\">Migrationsprüfung\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Aufgabenerfolg\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Erfüllt die neue Laufzeit dieselben oder bessere Akzeptanzkriterien?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Tool-Korrektheit\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Ruft sie das richtige Tool mit gültigen Argumenten und Autorisierung auf?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Zustandskontinuität\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Kann die Arbeit über Turns, Neustarts und asynchrone Wartezeiten hinweg fortgesetzt werden?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Wiederherstellung\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Was passiert nach Webhook-Verlust, Handler-Fehler, Umgebungsunterbrechung oder Timeout?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Nachverfolgbarkeit\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Kann jede folgenreiche Aktion mit Sitzung, Benutzer, Tool-Aufruf und Domänenobjekt verknüpft werden?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Kontextverhalten\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Bewahren lang laufende Sitzungen Einschränkungen, ohne veraltete Anwendungswahrheit mitzuführen?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Latenz\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Wie wirken sich Sitzungsstart, Umgebungsbereitstellung und mehrzügige Arbeit auf die für Benutzer sichtbare Zeit aus?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Kosten\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Was ändert sich bei Modellnutzung, Sandbox-Nutzung, wiederholtem Kontext und Infrastrukturoperationen?\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Betriebslast\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Welche zuvor anwendungseigenen Verantwortlichkeiten sind tatsächlich verschwunden und welche haben sich nur verschoben?\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Ch2 id=\"section-124\">Wann noch nicht migriert werden sollte\u003C\u002Fh2>\n\u003Cp>Eine bestehende Agents SDK-Anwendung wird nicht allein dadurch zu einer schlechten Architektur, dass sich die Plattformrichtung geändert hat. OpenAI führt Wartung, Sicherheitsfixes, kritische Bugfixes und Kompatibilitätsarbeit fort. Wenn die Anwendung stabil und gut evaluiert ist und keine blockierte Roadmap-Anforderung hat, ist eine sofortige Laufzeitmigration möglicherweise nicht gerechtfertigt.\u003C\u002Fp>\n\u003Cul>\u003Cli>Eine erforderliche SDK-Fähigkeit ist in der Agents API noch nicht verfügbar.\u003C\u002Fli>\u003Cli>Die Migration würde einen kritischen Produktionszeitraum stören, ohne kurzfristigen Nutzen zu liefern.\u003C\u002Fli>\u003Cli>Die Anwendung hängt von benutzerdefinierten Orchestrierungssemantiken ab, die auf dem verwalteten Harness nicht validiert wurden.\u003C\u002Fli>\u003Cli>Anbieterportabilität ist eine harte Anforderung und die aktuelle SDK-Abstraktion ist wesentlich wertvoll.\u003C\u002Fli>\u003Cli>Ihr Team hat den Geschäftszustand noch nicht vom Agent-Laufzeitzustand getrennt, was die Umstellung unsicher macht.\u003C\u002Fli>\u003Cli>Das Verhalten der neuen Agents API wurde nicht gegen repräsentative Produktionsworkloads getestet.\u003C\u002Fli>\u003C\u002Ful>\n\u003Ch2 id=\"section-127\">Wann die Migration strategisch wichtig wird\u003C\u002Fh2>\n\u003Cp>Die Migration wird überzeugender, wenn die Produktanforderungen mit dem verwalteten Harness übereinstimmen: dauerhafte lang laufende Arbeit, plattformverwaltete Kontextkomprimierung und Wiederherstellung, neuere Agent-Runtime-Funktionen, sandboxed Ausführung, umfangreichere gehostete Lebenszyklusverwaltung oder der Wunsch, die Menge an Orchestrierungscode zu reduzieren, die Ihre Anwendung betreibt.\u003C\u002Fp>\n\u003Cp>Das stärkste Signal ist nicht „das alte SDK ist funktionsvollständig“. Es ist „unsere Roadmap hängt jetzt von Fähigkeiten ab, deren natürlicher Ort die verwaltete Agents-API-Runtime ist“.\u003C\u002Fp>\n\u003Ch2 id=\"section-130\">Was würde diese Antwort ändern?\u003C\u002Fh2>\n\u003Cp>Die Migrationsstrategie würde sich ändern, wenn OpenAI automatisierte Migrationstools veröffentlicht, explizite Kompatibilitätsschichten einführt, die Sitzungssemantik der Agents-API ändert, die Unterstützung für selbstgehostete Umgebungen erweitert oder einschränkt oder die Support-Richtlinie für das Agents SDK ändert.\u003C\u002Fp>\n\u003Cp>Sie würde sich auch ändern, wenn sich Ihre Produktanforderungen ändern. Ein einfacher Anfrage-Antwort-Assistent benötigt möglicherweise überhaupt kein dauerhaftes verwaltetes Harness. Ein lang laufender Coding-, Recherche- oder Operations-Agent kann viel stärker vom Eigentumsmodell der Agents-API profitieren.\u003C\u002Fp>\n\u003Ch2 id=\"section-133\">Einschränkungen\u003C\u002Fh2>\n\u003Cp>Es gibt keine universelle Eins-zu-eins-Zuordnung von SDK zu API für die Migration, da Anwendungen das Agents SDK unterschiedlich nutzen. Einige verlassen sich stark auf Sitzungen und Übergaben; andere verwenden es als dünnen Runner um Funktionswerkzeuge. Die richtige Migration hängt davon ab, welche Verantwortlichkeiten Ihre Anwendung heute tatsächlich besitzt.\u003C\u002Fp>\n\u003Cp>Die Agents-API befindet sich zudem in der öffentlichen Beta, sodass sich Implementierungsdetails weiterentwickeln können. Betrachten Sie die Eigentumsprinzipien in diesem Artikel als beständiger als jede einzelne Endpunktform.\u003C\u002Fp>\n\u003Ch2 id=\"section-136\">Fazit\u003C\u002Fh2>\n\u003Cp>Die Migration vom Agents SDK zur Agents-API lässt sich am besten als Verschiebung der Agent-Runtime-Grenze verstehen. Das verwaltete Harness übernimmt mehr von der Schleife, Sitzungskontinuität, Komprimierung und Wiederherstellung. Ihre Anwendung sollte expliziter werden bezüglich der Verantwortlichkeiten, die bei Ihnen verbleiben: Domänenwahrheit, Autorisierung, Funktionsnebenwirkungen, Artefakte, Auditierbarkeit und Produktlebenszyklus.\u003C\u002Fp>\n\u003Cp>Wenn eine Migration die gesamte alte Orchestrierungsmaschinerie beibehält und lediglich SDK-Aufrufe durch Agents-API-Aufrufe ersetzt, hat sie wahrscheinlich die architektonische Chance verpasst. Das Ziel ist nicht, die alte Runtime auf der neuen nachzubilden. Das Ziel ist zu entscheiden, welche Runtime-Verantwortlichkeiten nicht mehr in Ihre Anwendung gehören.\u003C\u002Fp>\n\u003Ch2 id=\"section-139\">FAQ\u003C\u002Fh2>\n\u003Csection class=\"editorjs-faq my-6 rounded-xl border border-gray-200 p-5 dark:border-gray-700\">\u003Ch3 class=\"mb-3 text-lg font-semibold\">Migration vom Agents SDK zur Agents-API\u003C\u002Fh3>\u003Cdiv id=\"faq1\" class=\"border-t border-gray-200 py-4 first:border-t-0 dark:border-gray-700\">\u003Ch4 class=\"font-semibold text-gray-900 dark:text-gray-100\">Ist die Migration vom Agents SDK zur Agents-API nur ein API-Rewrite?\u003C\u002Fh4>\u003Cdiv class=\"mt-2 text-gray-600 dark:text-gray-300\">Nein. Die Hauptänderung ist die Runtime-Eigentümerschaft: Das Agents SDK führt die Agent-Schleife in Ihrer Anwendung aus, während die Agents-API ein verwaltetes Codex-Harness und eine dauerhafte Sitzung betreibt. Zustand, Lebenszyklus, Ereignisbehandlung und Wiederherstellung sollten als Architekturanliegen überprüft werden.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv id=\"faq2\" class=\"border-t border-gray-200 py-4 first:border-t-0 dark:border-gray-700\">\u003Ch4 class=\"font-semibold text-gray-900 dark:text-gray-100\">Müssen meine Funktionswerkzeuge neu geschrieben werden?\u003C\u002Fh4>\u003Cdiv class=\"mt-2 text-gray-600 dark:text-gray-300\">Die Geschäftsimplementierung kann oft wiederverwendet werden, wenn sie bereits hinter einer stabilen Anwendungsschnittstelle liegt. Die agentenorientierte Integration ändert sich, weil Agents-API-Funktionsaufrufe über sitzungserforderliche Aktionen und Ergebnisse abgewickelt werden.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv id=\"faq3\" class=\"border-t border-gray-200 py-4 first:border-t-0 dark:border-gray-700\">\u003Ch4 class=\"font-semibold text-gray-900 dark:text-gray-100\">Sollte ich Geschäftszustand in die Agents-API-Sitzung verschieben?\u003C\u002Fh4>\u003Cdiv class=\"mt-2 text-gray-600 dark:text-gray-300\">Im Allgemeinen nein. Behalten Sie autoritativen Geschäfts- und Produktzustand in Ihren eigenen Datenbanken oder Diensten. Verwenden Sie die Agent-Sitzung für Agentenkontinuität und Arbeitskontext, nicht als einzige Wahrheitsquelle für Ihr Produkt.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv id=\"faq4\" class=\"border-t border-gray-200 py-4 first:border-t-0 dark:border-gray-700\">\u003Ch4 class=\"font-semibold text-gray-900 dark:text-gray-100\">Benötige ich Webhooks für die Agents-API?\u003C\u002Fh4>\u003Cdiv class=\"mt-2 text-gray-600 dark:text-gray-300\">Nicht immer, da auch Streaming verfügbar ist. Webhooks sind besonders nützlich für lang laufende oder asynchrone Sitzungen, bei denen Ihre Anwendung auf Lebenszyklusänderungen reagieren sollte, ohne einen offenen Stream zu halten.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv id=\"faq5\" class=\"border-t border-gray-200 py-4 first:border-t-0 dark:border-gray-700\">\u003Ch4 class=\"font-semibold text-gray-900 dark:text-gray-100\">Sollte jede bestehende Agents-SDK-Anwendung jetzt migrieren?\u003C\u002Fh4>\u003Cdiv class=\"mt-2 text-gray-600 dark:text-gray-300\">Nein. Das SDK bleibt im Wartungsmodus unterstützt. Migrieren Sie, wenn die neue Runtime einen sinnvollen Roadmap-Wert bietet und nachdem das erforderliche Verhalten anhand produktionsnaher Evals validiert wurde.\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\n\u003Ch2 id=\"section-141\">Glossar\u003C\u002Fh2>\n\u003Csection class=\"editorjs-glossary my-6 rounded-xl border border-gray-200 dark:border-gray-700 p-5\">\u003Ch3 class=\"mb-3 text-lg font-semibold\">Wichtige Migrationsbegriffe\u003C\u002Fh3>\u003Cdl>\u003Cdiv id=\"runtime-boundary\" class=\"border-t border-gray-200 dark:border-gray-700 py-3 first:border-t-0\">\u003Cdt class=\"font-semibold text-gray-900 dark:text-gray-100\">Runtime-Grenze\u003C\u002Fdt>\u003Cdd class=\"mt-1 text-gray-600 dark:text-gray-300\">Die Aufteilung der Verantwortung zwischen der plattformverwalteten Agent-Runtime und der anwendungseigenen Runtime.\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv id=\"harness\" class=\"border-t border-gray-200 dark:border-gray-700 py-3 first:border-t-0\">\u003Cdt class=\"font-semibold text-gray-900 dark:text-gray-100\">Harness\u003C\u002Fdt>\u003Cdd class=\"mt-1 text-gray-600 dark:text-gray-300\">Die Agent-Runtime, die Modellaufrufe, Werkzeuge, Kontext, Orchestrierung und fortgesetzte Ausführung koordiniert.\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv id=\"session\" class=\"border-t border-gray-200 dark:border-gray-700 py-3 first:border-t-0\">\u003Cdt class=\"font-semibold text-gray-900 dark:text-gray-100\">Sitzung\u003C\u002Fdt>\u003Cdd class=\"mt-1 text-gray-600 dark:text-gray-300\">Eine dauerhafte Agents-API-Instanz, die die Konfiguration, Konversation und gespeicherte Arbeit eines Agenten über mehrere Turns hinweg enthält.\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv id=\"required-action\" class=\"border-t border-gray-200 dark:border-gray-700 py-3 first:border-t-0\">\u003Cdt class=\"font-semibold text-gray-900 dark:text-gray-100\">Erforderliche Aktion\u003C\u002Fdt>\u003Cdd class=\"mt-1 text-gray-600 dark:text-gray-300\">Ein Sitzungszustand, in dem die Agents-API externe Eingaben wie ein Funktionsergebnis oder eine Umgebungsverbindung benötigt, bevor die Arbeit fortgesetzt werden kann.\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv id=\"self-hosted-environment\" class=\"border-t border-gray-200 dark:border-gray-700 py-3 first:border-t-0\">\u003Cdt class=\"font-semibold text-gray-900 dark:text-gray-100\">Selbstgehostete Umgebung\u003C\u002Fdt>\u003Cdd class=\"mt-1 text-gray-600 dark:text-gray-300\">Eine Ausführungsumgebung, die von Ihrer Infrastruktur betrieben und mit dem verwalteten Agents-API-Harness verbunden ist.\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv id=\"migration-proof-test\" class=\"border-t border-gray-200 dark:border-gray-700 py-3 first:border-t-0\">\u003Cdt class=\"font-semibold text-gray-900 dark:text-gray-100\">Migrationsnachweistest\u003C\u002Fdt>\u003Cdd class=\"mt-1 text-gray-600 dark:text-gray-300\">Eine stufenweise Validierungsmethode, die die neue Runtime mit Verhaltensbaselines, Fehlerinjektionen, Traces und umkehrbaren Cutover-Kriterien vergleicht.\u003C\u002Fdd>\u003C\u002Fdiv>\u003C\u002Fdl>\u003C\u002Fsection>\n\u003Ch2 id=\"section-143\">Primärquellen und weiterführende Literatur\u003C\u002Fh2>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents\u002Fsdk\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Agents SDK\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Aktuelle Support-Richtlinie: Das Agents SDK ist funktionsvollständig, bleibt gewartet, und neue Anwendungen sollten mit der Agents-API beginnen.\u003C\u002Fp>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents\u002Frunning-agents\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Agenten mit dem Agents SDK ausführen\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Dokumentation der anwendungseigenen Agentenschleife des SDK und des Fortsetzungsmodells.\u003C\u002Fp>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Foverview\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Übersicht über die Agents API\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Definiert die Kernkonzepte der Agents API: Agent, Umgebung, Sitzung, Ereignisse und Elemente.\u003C\u002Fp>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Farchitecture\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Architektur der Agents API\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Erläutert die Grenzen zwischen gehostetem Harness, Anwendungsserver, von OpenAI gehosteter und selbst gehosteter Ausführungsumgebung.\u003C\u002Fp>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fconfiguration\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Agenten konfigurieren\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Definiert wiederverwendbare Agentenkonfiguration und Anpassung auf Sitzungsebene.\u003C\u002Fp>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fsessions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Sitzungen ausführen und fortsetzen\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Dokumentiert dauerhafte Sitzungen, asynchrone Turns, Streaming und Steuerung.\u003C\u002Fp>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Ftools\u002Ffunctions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Funktionen der Agents API\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Definition von Funktionswerkzeugen und die Anwendungs-Handler-Grenze für erforderliche Funktionsergebnisse.\u003C\u002Fp>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fsessions\u002Fwebhooks\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Sitzungs-Webhooks\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Lebenszyklusereignisse für asynchrone Sitzungen, erforderliche Aktionen und Verbindungen zu selbst gehosteten Umgebungen.\u003C\u002Fp>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fobservability\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"editorjs-link-tool block border border-gray-200 dark:border-gray-700 rounded-lg p-4 transition text-gray-900 dark:text-gray-100 hover:border-primary-500 hover:bg-primary-50 dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-gray-100\">\u003Cstrong class=\"block font-semibold\">OpenAI — Observability und Nutzung der Agents API\u003C\u002Fstrong>\u003Cp class=\"text-sm text-gray-600 dark:text-gray-400\">Sitzungsprotokolle, Ereignisse, Turns, Werkzeugaufrufe, Subagenten, Traces und Überprüfung der Token-Nutzung.\u003C\u002Fp>\u003C\u002Fa>",{"time":211,"blocks":212,"version":1301},1790352251947,[213,221,227,235,242,249,254,259,264,269,274,328,333,338,343,350,355,360,393,398,403,408,442,447,452,457,462,467,472,478,483,488,493,516,521,526,531,536,541,546,555,560,565,570,575,607,612,646,651,656,670,675,680,685,690,695,700,705,710,715,720,725,730,735,761,766,796,801,811,820,829,838,847,856,865,874,883,887,891,895,898,902,905,909,913,917,920,946,949,953,957,960,963,967,985,988,992,996,1014,1017,1021,1025,1028,1032,1035,1039,1042,1046,1049,1063,1067,1071,1075,1079,1083,1087,1092,1096,1100,1104,1108,1131,1134,1151,1154,1158,1167,1170,1174,1178,1182,1186,1190,1193,1197,1201,1204,1208,1211,1214,1229,1232,1244,1247,1253,1259,1265,1272,1277,1282,1288,1294],{"id":214,"data":215,"type":219,"tunes":220},"24Foq4L2Wb",{"title":216,"maxLevel":217,"minLevel":218},"Inhalt",3,2,"tableOfContents",{},{"id":222,"data":223,"type":225,"tunes":226},"intro",{"text":224},"Die Migration vom OpenAI Agents SDK zur Agents API ist keine bloße Umbenennung von Imports. Die zentrale architektonische Grenze verschiebt sich: Das SDK führt die Agent-Schleife innerhalb Ihrer Anwendung aus, während die Agents API eine verwaltete Codex-Harness und eine dauerhafte Sitzung auf der Seite von OpenAI betreibt. Die Migrationsfrage lautet daher nicht „Welche Klassen werden welchen Endpunkten zugeordnet?“, sondern „Welche Laufzeitverantwortlichkeiten wechseln über die Grenze, welche bleiben in unserer Anwendung und welche müssen neu gestaltet werden?“","paragraph",{},{"id":228,"data":229,"type":233,"tunes":234},"direct",{"body":230,"title":231,"variant":232},"\u003Cstrong>Eine echte Migration vom Agents SDK zur Agents API verändert die Laufzeitverantwortung.\u003C\u002Fstrong> Ihre wiederverwendbare Agent-Konfiguration kann weiterhin Modell, Anweisungen und Tools enthalten, aber die Schleife, die dauerhafte Sitzung, die Orchestrierung, die Kontextkomprimierung und die Wiederherstellung wandern in die verwaltete Agents API-Laufzeit. Ihre Anwendung sollte Domänenzustand, Autorisierung, Geschäftsregeln, Funktionsimplementierungen und Audit-Logik außerhalb der Agent-Sitzung behalten. Betrachten Sie die Migration als eine Neugestaltung der Grenze, nicht als mechanische Code-Konvertierung.","Direkte Antwort","info","callout",{},{"id":236,"data":237,"type":233,"tunes":241},"current",{"body":238,"title":239,"variant":240},"OpenAI kennzeichnet das Agents SDK derzeit als \u003Cstrong>funktionsvollständig\u003C\u002Fstrong> und empfiehlt die Agents API für neue Agent-Anwendungen. Die Agents API befindet sich in der öffentlichen Beta. Bestehende SDK-Anwendungen werden weiterhin unterstützt, und eine sofortige Migration ist nicht automatisch erforderlich.","Aktuell Stand 25. September 2026","warning",{},{"id":243,"data":244,"type":233,"tunes":248},"model-note",{"body":245,"title":246,"variant":247},"Die Runtime Boundary Migration Map und der Migration Proof Test in diesem Artikel sind praktische Architekturwerkzeuge, keine offiziellen Migrationsframeworks von OpenAI. Sie leiten sich aus den aktuellen, von OpenAI dokumentierten Laufzeitunterschieden ab.","Zum Migrationsmodell","note",{},{"id":250,"data":251,"type":41,"tunes":253},"h-boundary",{"text":252,"level":218},"Die Migration erfolgt von einer anwendungseigenen Schleife zu einer verwalteten Harness",{},{"id":255,"data":256,"type":225,"tunes":258},"p-boundary-1",{"text":257},"Im Agents SDK ist ein Durchlauf ein Zug auf Anwendungsebene. Der SDK-Runner ruft das Modell auf, prüft die Ausgabe, führt Tools aus, folgt Übergaben und fährt fort, bis er einen Haltepunkt erreicht. Ihr Prozess hostet diese Schleife und besitzt daher ihren Lebenszyklus.",{},{"id":260,"data":261,"type":225,"tunes":263},"p-boundary-2",{"text":262},"In der Agents API betreibt OpenAI die Harness. Eine Sitzung ist eine dauerhafte Instanz einer Agent-Konfiguration, die Aufgaben annimmt, Ereignisse erzeugt, für erforderliche Aktionen pausieren kann und über die Zeit fortgesetzt werden kann. OpenAI verwaltet Sitzungen, Orchestrierung, Kontextkomprimierung und Wiederherstellung; Ihre Anwendung sendet Arbeit, behandelt Funktions-Tools, empfängt Ereignisse und verwaltet optional eine selbst gehostete Ausführungsumgebung.",{},{"id":265,"data":266,"type":225,"tunes":268},"p-boundary-3",{"text":267},"Diese Verschiebung der Verantwortung ist die Migration. Alles andere — API-Syntax, Tool-Schemas, Ereignisbehandlung, Sitzungs-IDs — folgt daraus.",{},{"id":270,"data":271,"type":41,"tunes":273},"h-map",{"text":272,"level":218},"Die Runtime Boundary Migration Map",{},{"id":275,"data":276,"type":326,"tunes":327},"migration-map",{"content":277,"stretched":42,"withHeadings":13},[278,282,286,290,294,298,302,306,310,314,318,322],[279,280,281],"Anliegen","Agents SDK","Agents API-Migrationsziel",[283,284,285],"Agent-Schleife","Läuft in Ihrer Anwendung über den SDK-Runner","Läuft in der verwalteten Codex-Harness",[287,288,289],"Wiederverwendbare Agent-Definition","Agent-Objekt im Anwendungscode","Gespeicherte oder Inline-Agent-Konfiguration mit Modell, Anweisungen und Tools",[291,292,293],"Konversations- \u002F Arbeitskontinuität","SDK-Sitzungsstrategie, Verlauf, Ergebnis-Fortsetzung oder Anwendungsspeicherung","Dauerhafte Agents API-Sitzung",[295,296,297],"Tool-Ausführung","SDK koordiniert Tool-Aufrufe in Ihrer Laufzeit","Harness fordert Funktionsaufrufe an; Ihre Anwendung gibt Ergebnisse zurück",[299,300,301],"Kontextverwaltung","Ihre Laufzeit \u002F SDK-Sitzungsstrategie","Verwalteter Sitzungskontext, Komprimierung und Wiederherstellung, plus Ihre eigenen Anwendungsdatengrenzen",[303,304,305],"Übergaben \u002F Spezialisten","SDK-Orchestrierungsprimitive","Harness- \u002F Subagent-Verhalten in der Agents API; gehen Sie nicht von Eins-zu-eins-Semantik aus",[307,308,309],"Ausführungsumgebung","Ihre Anwendungslaufzeit oder tool-spezifische Umgebung","Optionale von OpenAI gehostete oder selbst gehostete Umgebung, die an die Sitzung angehängt ist",[311,312,313],"Streaming","SDK-Streaming aus dem Durchlauf","Agents API-Sitzungsereignisstrom",[315,316,317],"Asynchroner Lebenszyklus","Normalerweise anwendungsverwaltet um den SDK-Durchlauf herum","Native Sitzungszustände, asynchrone Züge und Webhooks",[319,320,321],"Tracing \u002F Observability","Agents SDK-Tracing und Anwendungsprotokolle","Agents-Sitzungsprotokolle, Ereignisse, Züge, Tool-Aufrufe, Subagenten und exportierbare Traces",[323,324,325],"Wiederherstellung","Anwendungsverantwortung","Verwaltete Harness-\u002FSitzungswiederherstellung plus anwendungseigene Wiederherstellung für externe Systeme und selbst gehostete Umgebungen","table",{},{"id":329,"data":330,"type":41,"tunes":332},"h-conceptual",{"text":331,"level":218},"Was konzeptionell migrieren kann, ohne die Verantwortung zu ändern",{},{"id":334,"data":335,"type":225,"tunes":337},"p-conceptual-1",{"text":336},"Mehrere Anwendungskonzepte überstehen die Migration sauber, obwohl sich ihre Darstellung ändert. Modelle, Anweisungen, JSON-Schema-Funktionsdefinitionen, MCP-Zugriff, Tool-Beschreibungen und Anforderungen an strukturierte Ausgaben sind weiterhin Anliegen der Agent-Konfiguration.",{},{"id":339,"data":340,"type":225,"tunes":342},"p-conceptual-2",{"text":341},"Das Konfigurationsmodell der OpenAI Agents API definiert einen Agenten explizit durch Modell, Anweisungen, Tools, Reasoning und Ausgabeverhalten. Funktions-Tools bleiben Anwendungscode: Die Harness fordert einen Funktionsaufruf an, und Ihr Handler gibt das Ergebnis zurück. OpenAI weist auch darauf hin, dass Funktionsimplementierungen, die mit der Responses API verwendet werden, mit dem Sitzungsablauf der Agents API wiederverwendet werden können.",{},{"id":344,"data":345,"type":233,"tunes":349},"good-candidate",{"body":346,"title":347,"variant":348},"Eine reine Geschäftsfunktion wie \u003Ccode>get_customer(customer_id)\u003C\u002Fcode> sollte nicht wissen müssen, ob der Aufrufer das Agents SDK oder die Agents API ist. Behalten Sie ihre Domänenlogik hinter einer stabilen Anwendungsschnittstelle und migrieren Sie nur den agentenorientierten Adapter.","Guter Migrationskandidat","success",{},{"id":351,"data":352,"type":41,"tunes":354},"h-no-one",{"text":353,"level":218},"Was nicht eins zu eins migriert werden sollte",{},{"id":356,"data":357,"type":225,"tunes":359},"p-no-one-1",{"text":358},"Das gefährliche Migrationsmuster besteht darin, jede SDK-Laufzeitabstraktion innerhalb der Agents API neu zu erstellen. Das kann dazu führen, dass Sie für eine verwaltete Harness bezahlen und dennoch eine Schatten-Harness in Ihrer Anwendung betreiben.",{},{"id":361,"data":362,"type":326,"tunes":392},"no-one-table",{"content":363,"stretched":42,"withHeadings":13},[364,368,372,376,380,384,388],[365,366,367],"Annahme aus der SDK-Ära","Warum eine direkte Kopie riskant ist","Migrationsfrage",[369,370,371],"Die Anwendungsschleife besitzt jede Fortsetzung","Die Agents API besitzt bereits die Harness-Schleife","Welche Fortsetzungslogik ist Produktlogik, und welche sollte in die verwaltete Sitzung verschoben werden?",[373,374,375],"Das lokale Sitzungsobjekt ist der primäre Kontinuitätsmechanismus","Agents API-Sitzungen sind dauerhafte Ressourcen mit eigenem Lebenszyklus","Welcher Zustand gehört in die Sitzung und welcher in die Produktdatenbank?",[377,378,379],"Jede Unterbrechung wird synchron behandelt","Agents API-Züge sind asynchron und können action_required-Zustände aufweisen","Welche Aktionen benötigen Webhooks, Worker, Idempotenz und fortsetzbare Handler?",[381,382,383],"Die gesamte Tool-Ausführung erfolgt dort, wo der SDK-Prozess läuft","Funktions-Handler und Ausführungsumgebungen können getrennt sein","Wo sollte jedes Tool tatsächlich ausgeführt werden?",[385,386,387],"Der SDK-Trace ist die operative Zeitachse","Die Agents API stellt Sitzungsereignisse, Züge und verwaltete Traces bereit","Welche Audit-Daten auf Anwendungsebene benötigen weiterhin eine eigene Aufzeichnung?",[389,390,391],"Das Handoff-Objekt wird direkt auf ein gehostetes Subagent-Modell abgebildet","Laufzeitsemantik kann abweichen","Welche benutzersichtbare Verantwortung und welches Spezialistenverhalten müssen erhalten bleiben, nicht nur die alte Klassenstruktur?",{},{"id":394,"data":395,"type":41,"tunes":397},"h-domain",{"text":396,"level":218},"Schritt 1 — Domänenzustand vom Agentensitzungszustand trennen",{},{"id":399,"data":400,"type":225,"tunes":402},"p-domain-1",{"text":401},"Bevor Sie API-Aufrufe anfassen, klassifizieren Sie den Zustand, den Ihre SDK-Anwendung derzeit trägt. Ein Teil des Zustands existiert nur, um das Gespräch des Agenten am Laufen zu halten. Anderer Zustand ist geschäftliche Wahrheit: Benutzerberechtigungen, Projektstatus, Bestelldaten, Workflow-Genehmigung, Kundendatensätze, Dokumentversionen, Richtlinienzustand oder Anwendungskonfiguration.",{},{"id":404,"data":405,"type":225,"tunes":407},"p-domain-2",{"text":406},"Die zweite Kategorie sollte nicht von einer Agents-API-Sitzung abhängig werden. Eine dauerhafte Sitzung ist nützliche Kontinuität für den Agenten; sie ist kein Ersatz für die Quelle der Wahrheit Ihres Produkts. Wenn die Sitzung verschwindet, abläuft, neu aufgebaut wird oder die Implementierung wechselt, muss Ihre Anwendung immer noch wissen, was wahr ist.",{},{"id":409,"data":410,"type":440,"tunes":441},"state-test",{"rows":411,"title":429,"layout":326,"columns":430},[412,417,421,425],{"id":413,"label":414,"values":415},"conversation","Gesprächskontinuität",[416,416,416],"",{"id":418,"label":419,"values":420},"domain","Geschäftliche Wahrheit",[416,416,416],{"id":422,"label":423,"values":424},"artifact","Dauerhaftes Artefakt",[416,416,416],{"id":426,"label":427,"values":428},"ephemeral","Flüchtiger Arbeitszustand",[416,416,416],"Test zur Zustandsplatzierung",[431,434,437],{"id":432,"label":433},"type","Zustandstyp",{"id":435,"label":436},"place","Bevorzugter Eigentümer",{"id":438,"label":439},"reason","Grund","comparison",{},{"id":443,"data":444,"type":41,"tunes":446},"h-events",{"text":445,"level":218},"Schritt 2 — Die Runner-Denkweise in eine Sitzungs- und Ereignis-Denkweise umwandeln",{},{"id":448,"data":449,"type":225,"tunes":451},"p-events-1",{"text":450},"SDK-Anwendungen denken oft in Begriffen wie run aufrufen und ein Ergebnis erhalten. Die Agents-API denkt in Begriffen einer dauerhaften Sitzung, deren Turns asynchron laufen können. Eine Nachricht an eine inaktive Sitzung startet Arbeit; eine Nachricht während eines aktiven Turns kann ihn steuern. Fortschritt kommt über Streaming oder Webhooks.",{},{"id":453,"data":454,"type":225,"tunes":456},"p-events-2",{"text":455},"Dies beeinflusst die Anwendungsarchitektur. Lang laufende Produktionsarbeit sollte nicht davon abhängen, dass eine einzelne HTTP-Anfrage am Leben bleibt. Ihr Produkt benötigt stabile Sitzungsbezeichner, Lebenszyklus-Persistenz, Webhook-Verifizierung, idempotente Handler und eine Möglichkeit, den aktuellen Sitzungszustand nach Prozessneustarts abzugleichen.",{},{"id":458,"data":459,"type":41,"tunes":461},"h-functions",{"text":460,"level":218},"Schritt 3 — Funktionstools um erforderliche Aktionen herum neu gestalten",{},{"id":463,"data":464,"type":225,"tunes":466},"p-functions-1",{"text":465},"Funktionstools bleiben eine wichtige Anwendungsgrenze. Sie definieren die Funktion und ihr JSON-Schema in der Agentenkonfiguration. Wenn die Harness die Funktion benötigt, kann die Sitzung in einen Zustand eintreten, in dem eine Aktion erforderlich ist. Ihre Anwendung ruft die erforderliche Aktion ab, führt die Geschäftslogik aus und gibt das Ergebnis zurück.",{},{"id":468,"data":469,"type":225,"tunes":471},"p-functions-2",{"text":470},"Das bedeutet, dass die Funktionsimplementierung sicher fortgesetzt werden können sollte. Ein Webhook kann zugestellt werden, während ein anderer Worker verarbeitet. Ein Netzwerkfehler kann nach dem externen Seiteneffekt, aber vor der Rückgabe des Ergebnisses auftreten. Die Migration ist daher ein guter Moment, um Aufruf-IDs, Idempotenzschlüssel, explizite Autorisierung, Timeout-Richtlinien und Audit-Datensätze zu folgenreichen Tools hinzuzufügen.",{},{"id":473,"data":474,"type":233,"tunes":477},"tool-trap",{"body":475,"title":476,"variant":240},"Behandeln Sie einen Funktionsaufruf aus der verwalteten Harness nicht als Autorisierung, die Aktion auszuführen. Die Harness entscheidet, \u003Cem>was sie aufrufen möchte\u003C\u002Fem>; Ihre Anwendung entscheidet weiterhin, ob der aktuelle Benutzer, die Sitzung und der Geschäftszustand diese Aktion erlauben.","Tool-Migrationsfalle",{},{"id":479,"data":480,"type":41,"tunes":482},"h-environment",{"text":481,"level":218},"Schritt 4 — Entscheiden, wo die Ausführung stattfinden soll",{},{"id":484,"data":485,"type":225,"tunes":487},"p-env-1",{"text":486},"Die Agents-API trennt die verwaltete Harness von der Ausführungsumgebung. Ein Agent kann ohne dedizierte Umgebung, in einer von OpenAI gehosteten Sandbox oder über eine selbst gehostete Umgebung arbeiten, die mit der Sitzung verbunden ist.",{},{"id":489,"data":490,"type":225,"tunes":492},"p-env-2",{"text":491},"Dies schafft eine Migrationsentscheidung, die SDK-Anwendungen möglicherweise nie explizit getroffen haben: Welcher Code sollte als Anwendungsfunktion laufen, welcher Code gehört in eine Sandbox und welche Workloads erfordern Infrastruktur, die Sie kontrollieren?",{},{"id":494,"data":495,"type":326,"tunes":515},"environment-table",{"content":496,"stretched":42,"withHeadings":13},[497,500,503,506,509,512],[498,499],"Bedarf","Wahrscheinliche Grenze",[501,502],"Einen bestehenden internen Dienst über kontrollierte Geschäftslogik aufrufen","Funktionstool, das von Ihrer Anwendung behandelt wird",[504,505],"Isolierten Code ausführen oder mit temporären Dateien arbeiten, ohne private Infrastruktur","Von OpenAI gehostete Umgebung",[507,508],"Auf private Netzwerkressourcen, benutzerdefinierte Systemsoftware oder kontrollierte lokale Compute-Ressourcen zugreifen","Selbst gehostete Umgebung",[510,511],"Akzeptierte Produktartefakte dauerhaft speichern","Anwendungseigener Speicher, nicht nur das Dateisystem der Sandbox",[513,514],"Einen wirkungsvollen geschäftlichen Seiteneffekt ausführen","Anwendungsfunktion mit Autorisierungs- und Audit-Kontrollen",{},{"id":517,"data":518,"type":41,"tunes":520},"h-recovery",{"text":519,"level":218},"Schritt 5 — Implizite Wiederherstellung durch explizite Lebenszyklusbehandlung ersetzen",{},{"id":522,"data":523,"type":225,"tunes":525},"p-recovery-1",{"text":524},"Die verwaltete Harness bietet Wiederherstellung auf Sitzungsebene, aber Ihre Anwendung besitzt weiterhin jede externe Abhängigkeit darum herum. Selbst gehostete Umgebungen benötigen Bereitstellung, Wiederverbindung und Herunterfahren. Funktionshandler können fehlschlagen. Webhooks können erneut versucht werden. Produktseitiger Zustand kann sich ändern, während ein Agent inaktiv ist.",{},{"id":527,"data":528,"type":225,"tunes":530},"p-recovery-2",{"text":529},"Die Migration benötigt daher zwei Wiederherstellungsmodelle: Wiederherstellung der Agentenlaufzeit und Wiederherstellung des Geschäftsvorgangs. Die erste wird zunehmend von der Agents-API verwaltet. Die zweite bleibt Ihre Verantwortung.",{},{"id":532,"data":533,"type":41,"tunes":535},"h-observability",{"text":534,"level":218},"Schritt 6 — Observability rund um die neue Trace-Grenze neu aufbauen",{},{"id":537,"data":538,"type":225,"tunes":540},"p-obs-1",{"text":539},"Agents-API-Sitzungen stellen Ereignisse, gespeicherten Verlauf, Turns, Tool-Aufrufe, Subagenten und Token-Nutzung bereit. OpenAI bietet außerdem Sitzungsprotokolle in der Plattform und Trace-Export.",{},{"id":542,"data":543,"type":225,"tunes":545},"p-obs-2",{"text":544},"Verwerfen Sie Ihre Anwendungs-Observability nicht, nur weil sich die Plattform-Traces verbessert haben. Produktprotokolle müssen weiterhin die Agent-Sitzung mit Benutzeridentität, Autorisierungsentscheidung, Domänenobjekt, Tool-Seiteneffekt, Genehmigungsdatensatz und endgültig akzeptiertem Ergebnis verknüpfen. Der nützliche Produktions-Trace ist die Verbindung zwischen Agent-Runtime-Evidenz und Business-Runtime-Evidenz.",{},{"id":547,"data":548,"type":553,"tunes":554},"ref-reliability",{"url":549,"title":550,"excerpt":551,"ctaLabel":552},"https:\u002F\u002Fstajic.de\u002Fde\u002Fblog\u002Fai-agent-reliability-why-the-final-answer-is-not-enough","Zuverlässigkeit von KI-Agenten: Warum die endgültige Antwort nicht ausreicht","Die Zuverlässigkeit von Agenten hängt vom Ausführungspfad, den Tools und den Zwischenentscheidungen ab — nicht nur von der endgültigen Ausgabe.","Lesen Sie den Artikel zur Zuverlässigkeit","referralArticle",{},{"id":556,"data":557,"type":41,"tunes":559},"h-evals",{"text":558,"level":218},"Schritt 7 — Evals bewahren, bevor die Runtime geändert wird",{},{"id":561,"data":562,"type":225,"tunes":564},"p-evals-1",{"text":563},"Eine Migration kann erfolgreich erscheinen, weil das neue System weiterhin plausible Antworten liefert, während es stillschweigend Tool-Auswahl, Sitzungskontinuität, Übergabeverhalten, Latenz oder Fehlerbehebung ändert. Erstellen Sie die Verhaltensbasis, bevor Sie die Runtimes wechseln.",{},{"id":566,"data":567,"type":225,"tunes":569},"p-evals-2",{"text":568},"Die Basis sollte repräsentative Aufgaben, erwartete Tool-Aufrufe, verbotene Aktionen, Genehmigungspunkte, Zustandskontinuität, Wiederherstellungsszenarien und Akzeptanzkriterien für die endgültige Ausgabe enthalten. Führen Sie die alte und die neue Architektur nach Möglichkeit mit denselben Fällen aus.",{},{"id":571,"data":572,"type":41,"tunes":574},"h-proof",{"text":573,"level":218},"Der Migration-Proof-Test",{},{"id":576,"data":577,"type":605,"tunes":606},"proof-flow",{"steps":578,"title":603,"orientation":604},[579,582,585,588,591,594,597,600],{"label":580,"description":581},"1. Verhaltensbasis einfrieren","Erfassen Sie repräsentative SDK-Traces, erwartete Ausgaben, Tool-Pfade, Genehmigungspunkte und Fehlerfälle.",{"label":583,"description":584},"2. Zustandsverantwortung inventarisieren","Markieren Sie jedes Zustandsfeld als Agent-Sitzungszustand, autoritativen Domänenzustand, dauerhaftes Artefakt oder ephemeren Arbeitszustand.",{"label":586,"description":587},"3. Stabile Tool-Implementierungen wiederverwenden","Behalten Sie Geschäftsfunktionen hinter Anwendungsschnittstellen bei; ersetzen Sie nach Möglichkeit nur die agentenorientierte Integration.",{"label":589,"description":590},"4. Einen vertikalen Agents-API-Slice erstellen","Migrieren Sie einen produktionsnahen Workflow einschließlich Sitzungserstellung, Tools, Ereignissen, Umgebung und Persistenz.",{"label":592,"description":593},"5. Unterbrechungen injizieren","Testen Sie Prozessneustart, Webhook-Wiederholung, Funktions-Timeout, Wiederverbindung der selbst gehosteten Umgebung und veralteten Domänenzustand.",{"label":595,"description":596},"6. Traces vergleichen, nicht nur Antworten","Überprüfen Sie Tool-Auswahl, Autorisierung, Evidenzpfad, Zustandsübergänge und Seiteneffekte anhand der Basis.",{"label":598,"description":599},"7. Shadow-Traffic ausführen","Spielen Sie nach Möglichkeit repräsentative Aufgaben erneut ab oder spiegeln Sie sie, bevor die neue Runtime autoritativ wird.",{"label":601,"description":602},"8. Hinter einer umkehrbaren Grenze umstellen","Behalten Sie Integrationsadapter und Rollback-Fähigkeit bei, bis das Produktionsverhalten stabil ist.","Beweisen Sie die neue Runtime vor dem Umstieg","auto","processFlow",{},{"id":608,"data":609,"type":41,"tunes":611},"h-metrics",{"text":610,"level":218},"Was während der Migration gemessen werden sollte",{},{"id":613,"data":614,"type":326,"tunes":645},"metrics-table",{"content":615,"stretched":42,"withHeadings":13},[616,619,622,625,628,630,633,636,639,642],[617,618],"Dimension","Migrationsprüfung",[620,621],"Aufgabenerfolg","Erfüllt die neue Runtime dieselben oder bessere Akzeptanzkriterien?",[623,624],"Tool-Korrektheit","Ruft sie das richtige Tool mit gültigen Argumenten und Autorisierung auf?",[626,627],"Zustandskontinuität","Kann die Arbeit über Turns, Neustarts und asynchrone Wartezeiten hinweg fortgesetzt werden?",[323,629],"Was passiert nach Webhook-Verlust, Handler-Fehler, Umgebungsunterbrechung oder Timeout?",[631,632],"Nachverfolgbarkeit","Kann jede folgenreiche Aktion mit Sitzung, Benutzer, Tool-Aufruf und Domänenobjekt verknüpft werden?",[634,635],"Kontextverhalten","Bewahren lang laufende Sitzungen Einschränkungen, ohne veraltete Anwendungswahrheit mitzuführen?",[637,638],"Latenz","Wie wirken sich Sitzungsstart, Umgebungsbereitstellung und Multi-Turn-Arbeit auf die für Benutzer sichtbare Zeit aus?",[640,641],"Kosten","Was ändert sich bei Modellnutzung, Sandbox-Nutzung, wiederholtem Kontext und Infrastrukturoperationen?",[643,644],"Betriebslast","Welche zuvor in der Anwendung liegenden Verantwortlichkeiten sind tatsächlich verschwunden und welche haben sich nur verschoben?",{},{"id":647,"data":648,"type":41,"tunes":650},"h-not-yet",{"text":649,"level":218},"Wann noch nicht migriert werden sollte",{},{"id":652,"data":653,"type":225,"tunes":655},"p-not-yet-1",{"text":654},"Eine bestehende Agents-SDK-Anwendung wird nicht allein dadurch zu einer schlechten Architektur, dass sich die Plattformrichtung geändert hat. OpenAI führt Wartung, Sicherheitsfixes, kritische Bugfixes und Kompatibilitätsarbeit fort. Wenn die Anwendung stabil ist, gut evaluiert ist und keine blockierte Roadmap-Anforderung hat, ist eine sofortige Runtime-Migration möglicherweise nicht gerechtfertigt.",{},{"id":657,"data":658,"type":668,"tunes":669},"not-yet-list",{"meta":659,"items":660,"style":667},{},[661,662,663,664,665,666],"Eine erforderliche SDK-Funktion ist in der Agents-API noch nicht verfügbar.","Die Migration würde einen kritischen Produktionszeitraum stören, ohne kurzfristigen Nutzen zu bringen.","Die Anwendung hängt von benutzerdefinierten Orchestrierungssemantiken ab, die auf dem verwalteten Harness nicht validiert wurden.","Anbieterportabilität ist eine harte Anforderung und die aktuelle SDK-Abstraktion ist wesentlich wertvoll.","Ihr Team hat noch keinen Geschäftszustand vom Agent-Runtime-Zustand getrennt, was den Umstieg unsicher macht.","Das Verhalten der neuen Agents-API wurde nicht gegen repräsentative Produktionslasten getestet.","unordered","list",{},{"id":671,"data":672,"type":41,"tunes":674},"h-when",{"text":673,"level":218},"Wann die Migration strategisch wichtig wird",{},{"id":676,"data":677,"type":225,"tunes":679},"p-when-1",{"text":678},"Die Migration wird überzeugender, wenn Produktanforderungen mit dem verwalteten Harness übereinstimmen: dauerhafte lang laufende Arbeit, plattformverwaltete Kontextkomprimierung und Wiederherstellung, neuere Agent-Runtime-Funktionen, sandboxed Ausführung, reichhaltigeres gehostetes Lifecycle-Management oder der Wunsch, die Menge an Orchestrierungscode zu reduzieren, die Ihre Anwendung betreibt.",{},{"id":681,"data":682,"type":225,"tunes":684},"p-when-2",{"text":683},"Das stärkste Signal ist nicht „das alte SDK ist funktionsvollständig“. Es ist „unsere Roadmap hängt jetzt von Funktionen ab, deren natürlicher Ort die verwaltete Agents-API-Runtime ist“.",{},{"id":686,"data":687,"type":41,"tunes":689},"h-change",{"text":688,"level":218},"Was diese Antwort ändern würde",{},{"id":691,"data":692,"type":225,"tunes":694},"p-change-1",{"text":693},"Die Migrationsstrategie würde sich ändern, wenn OpenAI automatisierte Migrationstools veröffentlicht, explizite Kompatibilitätsschichten einführt, die Sitzungssemantik der Agents API ändert, die Unterstützung für selbstgehostete Umgebungen erweitert oder einschränkt oder die Support-Richtlinie für das Agents SDK ändert.",{},{"id":696,"data":697,"type":225,"tunes":699},"p-change-2",{"text":698},"Sie würde sich auch ändern, wenn sich Ihre Produktanforderungen ändern. Ein einfacher Anfrage-Antwort-Assistent benötigt möglicherweise überhaupt keine dauerhafte verwaltete Harness. Ein lang laufender Coding-, Recherche- oder Operations-Agent kann viel stärker vom Eigentumsmodell der Agents API profitieren.",{},{"id":701,"data":702,"type":41,"tunes":704},"h-limitations",{"text":703,"level":218},"Einschränkungen",{},{"id":706,"data":707,"type":225,"tunes":709},"p-limit-1",{"text":708},"Es gibt keine universelle Eins-zu-eins-Zuordnung von SDK zu API für die Migration, da Anwendungen das Agents SDK unterschiedlich nutzen. Einige verlassen sich stark auf Sitzungen und Übergaben; andere verwenden es als dünnen Runner um Funktionswerkzeuge. Die korrekte Migration hängt davon ab, welche Verantwortlichkeiten Ihre Anwendung heute tatsächlich besitzt.",{},{"id":711,"data":712,"type":225,"tunes":714},"p-limit-2",{"text":713},"Die Agents API befindet sich zudem in der öffentlichen Beta, sodass sich Implementierungsdetails weiterentwickeln können. Betrachten Sie die Eigentumsprinzipien in diesem Artikel als beständiger als jede einzelne Endpunktform.",{},{"id":716,"data":717,"type":41,"tunes":719},"h-conclusion",{"text":718,"level":218},"Fazit",{},{"id":721,"data":722,"type":225,"tunes":724},"p-conclusion-1",{"text":723},"Die Migration vom Agents SDK zur Agents API lässt sich am besten als Verschiebung der Agent-Runtime-Grenze verstehen. Die verwaltete Harness übernimmt mehr von der Schleife, Sitzungskontinuität, Kompaktierung und Wiederherstellung. Ihre Anwendung sollte expliziter werden bezüglich der Verantwortlichkeiten, die bei ihr verbleiben: Domänenwahrheit, Autorisierung, Funktionsnebenwirkungen, Artefakte, Auditierbarkeit und Produktlebenszyklus.",{},{"id":726,"data":727,"type":225,"tunes":729},"p-conclusion-2",{"text":728},"Wenn eine Migration die gesamte alte Orchestrierungsmaschinerie beibehält und lediglich SDK-Aufrufe durch Agents-API-Aufrufe ersetzt, hat sie wahrscheinlich die architektonische Chance verpasst. Das Ziel ist nicht, die alte Runtime auf der neuen nachzubilden. Das Ziel ist zu entscheiden, welche Runtime-Verantwortlichkeiten nicht mehr in Ihre Anwendung gehören.",{},{"id":731,"data":732,"type":41,"tunes":734},"h-faq",{"text":733,"level":218},"FAQ",{},{"id":736,"data":737,"type":736,"tunes":760},"faq",{"items":738,"title":759},[739,743,747,751,755],{"id":740,"answer":741,"question":742},"faq1","Nein. Die Hauptänderung betrifft die Runtime-Verantwortung: Das Agents SDK führt die Agent-Schleife in Ihrer Anwendung aus, während die Agents API eine verwaltete Codex-Harness und eine dauerhafte Sitzung ausführt. Zustand, Lebenszyklus, Ereignisbehandlung und Wiederherstellung sollten als Architekturbelange überprüft werden.","Ist die Migration vom Agents SDK zur Agents API nur ein API-Rewrite?",{"id":744,"answer":745,"question":746},"faq2","Die Geschäftsimplementierung kann oft wiederverwendet werden, wenn sie bereits hinter einer stabilen Anwendungsschnittstelle liegt. Die agentenseitige Integration ändert sich, weil Agents-API-Funktionsaufrufe über sitzungsbasierte erforderliche Aktionen und Ergebnisse abgewickelt werden.","Müssen meine Funktionswerkzeuge neu geschrieben werden?",{"id":748,"answer":749,"question":750},"faq3","Im Allgemeinen nein. Behalten Sie autoritativen Geschäfts- und Produktzustand in Ihren eigenen Datenbanken oder Diensten. Verwenden Sie die Agentensitzung für Agentenkontinuität und Arbeitskontext, nicht als einzige Quelle der Wahrheit für Ihr Produkt.","Sollte ich Geschäftszustand in die Agents-API-Sitzung verschieben?",{"id":752,"answer":753,"question":754},"faq4","Nicht immer, da auch Streaming verfügbar ist. Webhooks sind besonders nützlich für lang laufende oder asynchrone Sitzungen, bei denen Ihre Anwendung auf Lebenszyklusänderungen reagieren sollte, ohne einen offenen Stream zu halten.","Benötige ich Webhooks für die Agents API?",{"id":756,"answer":757,"question":758},"faq5","Nein. Das SDK bleibt im Wartungsmodus unterstützt. Migrieren Sie, wenn die neue Runtime einen sinnvollen Roadmap-Wert bietet und nachdem das erforderliche Verhalten anhand produktionsnaher Evals validiert wurde.","Sollte jede bestehende Agents-SDK-Anwendung jetzt migrieren?","Migration vom Agents SDK zur Agents API",{},{"id":762,"data":763,"type":41,"tunes":765},"h-glossary",{"text":764,"level":218},"Glossar",{},{"id":767,"data":768,"type":767,"tunes":795},"glossary",{"title":769,"entries":770},"Wichtige Migrationsbegriffe",[771,775,779,783,787,791],{"term":772,"anchor":773,"definition":774},"Runtime-Grenze","runtime-boundary","Die Aufteilung der Verantwortung zwischen der plattformverwalteten Agent-Runtime und der anwendungseigenen Runtime.",{"term":776,"anchor":777,"definition":778},"Harness","harness","Die Agent-Runtime, die Modellaufrufe, Werkzeuge, Kontext, Orchestrierung und fortgesetzte Ausführung koordiniert.",{"term":780,"anchor":781,"definition":782},"Sitzung","session","Eine dauerhafte Agents-API-Instanz, die die Konfiguration, Konversation und gespeicherte Arbeit eines Agenten über mehrere Turns hinweg enthält.",{"term":784,"anchor":785,"definition":786},"Erforderliche Aktion","required-action","Ein Sitzungszustand, in dem die Agents API externe Eingaben wie ein Funktionsergebnis oder eine Umgebungsverbindung benötigt, bevor die Arbeit fortgesetzt werden kann.",{"term":788,"anchor":789,"definition":790},"Selbstgehostete Umgebung","self-hosted-environment","Eine Ausführungsumgebung, die von Ihrer Infrastruktur betrieben und mit der verwalteten Agents-API-Harness verbunden ist.",{"term":792,"anchor":793,"definition":794},"Migrationsnachweistest","migration-proof-test","Eine stufenweise Validierungsmethode, die die neue Runtime mit Verhaltensbaselines, Fehlerinjektionen, Traces und umkehrbaren Cutover-Kriterien vergleicht.",{},{"id":797,"data":798,"type":41,"tunes":800},"h-sources",{"text":799,"level":218},"Primärquellen und weiterführende Literatur",{},{"id":802,"data":803,"type":809,"tunes":810},"src-sdk",{"link":804,"meta":805},"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents\u002Fsdk",{"image":806,"title":807,"description":808},{"url":416},"OpenAI — Agents SDK","Aktuelle Support-Richtlinie: Das Agents SDK ist funktionsvollständig, bleibt gewartet, und neue Anwendungen sollten mit der Agents API beginnen.","linkTool",{},{"id":812,"data":813,"type":809,"tunes":819},"src-running-sdk",{"link":814,"meta":815},"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents\u002Frunning-agents",{"image":816,"title":817,"description":818},{"url":416},"OpenAI — Agenten mit dem Agents SDK ausführen","Dokumentation der anwendungseigenen Agent-Schleife und des Fortsetzungsmodells des SDK.",{},{"id":821,"data":822,"type":809,"tunes":828},"src-api-overview",{"link":823,"meta":824},"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Foverview",{"image":825,"title":826,"description":827},{"url":416},"OpenAI — Agents-API-Übersicht","Definiert die Kernkonzepte der Agents API: Agent, Umgebung, Sitzung, Ereignisse und Elemente.",{},{"id":830,"data":831,"type":809,"tunes":837},"src-api-architecture",{"link":832,"meta":833},"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Farchitecture",{"image":834,"title":835,"description":836},{"url":416},"OpenAI — Agents-API-Architektur","Erklärt die Grenzen zwischen gehosteter Harness, Anwendungsserver, OpenAI-gehosteter und selbstgehosteter Ausführungsumgebung.",{},{"id":839,"data":840,"type":809,"tunes":846},"src-api-config",{"link":841,"meta":842},"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fconfiguration",{"image":843,"title":844,"description":845},{"url":416},"OpenAI — Agenten konfigurieren","Definiert wiederverwendbare Agentenkonfiguration und Anpassung auf Sitzungsebene.",{},{"id":848,"data":849,"type":809,"tunes":855},"src-api-sessions",{"link":850,"meta":851},"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fsessions",{"image":852,"title":853,"description":854},{"url":416},"OpenAI — Sitzungen ausführen und fortsetzen","Dokumentiert dauerhafte Sitzungen, asynchrone Turns, Streaming und Steuerung.",{},{"id":857,"data":858,"type":809,"tunes":864},"src-api-functions",{"link":859,"meta":860},"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Ftools\u002Ffunctions",{"image":861,"title":862,"description":863},{"url":416},"OpenAI — Agents API Functions","Definition von Funktionswerkzeugen und die Anwendungs-Handler-Grenze für erforderliche Funktionsergebnisse.",{},{"id":866,"data":867,"type":809,"tunes":873},"src-api-webhooks",{"link":868,"meta":869},"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fsessions\u002Fwebhooks",{"image":870,"title":871,"description":872},{"url":416},"OpenAI — Sitzungs-Webhooks","Lebenszyklusereignisse für asynchrone Sitzungen, erforderliche Aktionen und selbst gehostete Umgebungsverbindungen.",{},{"id":875,"data":876,"type":809,"tunes":882},"src-api-observability",{"link":877,"meta":878},"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fobservability",{"image":879,"title":880,"description":881},{"url":416},"OpenAI — Agents API Observability und Nutzung","Sitzungsprotokolle, Ereignisse, Turns, Werkzeugaufrufe, Subagenten, Traces und Token-Nutzungsprüfung.",{},{"id":222,"data":884,"type":225,"tunes":886},{"text":885},"Die Migration vom OpenAI Agents SDK zur Agents API ist keine bloße Umbenennung von Imports. Die zentrale architektonische Grenze verschiebt sich: Das SDK führt die Agentenschleife innerhalb Ihrer Anwendung aus, während die Agents API eine verwaltete Codex-Harness und eine dauerhafte Sitzung auf der Seite von OpenAI betreibt. Die Migrationsfrage lautet daher nicht „Welche Klassen werden welchen Endpunkten zugeordnet?“, sondern „Welche Laufzeitverantwortlichkeiten wechseln über die Grenze, welche bleiben in unserer Anwendung und welche müssen neu gestaltet werden?“",{},{"id":228,"data":888,"type":233,"tunes":890},{"body":889,"title":231,"variant":232},"\u003Cstrong>Eine echte Migration vom Agents SDK zur Agents API verändert die Laufzeitverantwortung.\u003C\u002Fstrong> Ihre wiederverwendbare Agentenkonfiguration kann weiterhin Modell, Anweisungen und Werkzeuge enthalten, aber die Schleife, die dauerhafte Sitzung, die Orchestrierung, die Kontextkomprimierung und die Wiederherstellung wandern in die verwaltete Agents API-Laufzeit. Ihre Anwendung sollte Domänenzustand, Autorisierung, Geschäftsregeln, Funktionsimplementierungen und Audit-Logik außerhalb der Agentensitzung behalten. Betrachten Sie die Migration als eine Neugestaltung der Grenze, nicht als mechanische Codekonvertierung.",{},{"id":236,"data":892,"type":233,"tunes":894},{"body":893,"title":239,"variant":240},"OpenAI kennzeichnet das Agents SDK derzeit als \u003Cstrong>funktionsvollständig\u003C\u002Fstrong> und empfiehlt die Agents API für neue Agentenanwendungen. Die Agents API befindet sich in der öffentlichen Beta. Bestehende SDK-Anwendungen werden weiterhin unterstützt, und eine sofortige Migration ist nicht automatisch erforderlich.",{},{"id":243,"data":896,"type":233,"tunes":897},{"body":245,"title":246,"variant":247},{},{"id":899,"data":900,"type":219,"tunes":901},"toc",{"title":216,"maxLevel":217,"minLevel":218},{},{"id":250,"data":903,"type":41,"tunes":904},{"text":252,"level":218},{},{"id":255,"data":906,"type":225,"tunes":908},{"text":907},"Im Agents SDK ist ein Durchlauf ein Turn auf Anwendungsebene. Der SDK-Runner ruft das Modell auf, prüft die Ausgabe, führt Werkzeuge aus, folgt Übergaben und fährt fort, bis er einen Haltepunkt erreicht. Ihr Prozess hostet diese Schleife und besitzt daher ihren Lebenszyklus.",{},{"id":260,"data":910,"type":225,"tunes":912},{"text":911},"In der Agents API betreibt OpenAI die Harness. Eine Sitzung ist eine dauerhafte Instanz einer Agentenkonfiguration, die Aufgaben annimmt, Ereignisse erzeugt, für erforderliche Aktionen pausieren kann und über die Zeit fortgesetzt werden kann. OpenAI verwaltet Sitzungen, Orchestrierung, Kontextkomprimierung und Wiederherstellung; Ihre Anwendung sendet Arbeit, behandelt Funktionswerkzeuge, empfängt Ereignisse und verwaltet optional eine selbst gehostete Ausführungsumgebung.",{},{"id":265,"data":914,"type":225,"tunes":916},{"text":915},"Diese Verschiebung der Verantwortung ist die Migration. Alles andere — API-Syntax, Werkzeugschemata, Ereignisbehandlung, Sitzungs-IDs — folgt daraus.",{},{"id":270,"data":918,"type":41,"tunes":919},{"text":272,"level":218},{},{"id":275,"data":921,"type":326,"tunes":945},{"content":922,"stretched":42,"withHeadings":13},[923,924,926,929,931,934,935,937,939,940,942,944],[279,280,281],[925,284,285],"Agentenschleife",[927,288,928],"Wiederverwendbare Agentendefinition","Gespeicherte oder Inline-Agentenkonfiguration mit Modell, Anweisungen und Werkzeugen",[930,292,293],"Konversations-\u002FArbeitskontinuität",[932,933,297],"Werkzeugausführung","SDK koordiniert Werkzeugaufrufe in Ihrer Laufzeit",[299,300,301],[303,304,936],"Harness-\u002FSubagentenverhalten in der Agents API; gehen Sie nicht von Eins-zu-eins-Semantik aus",[307,938,309],"Ihre Anwendungslaufzeit oder werkzeugspezifische Umgebung",[311,312,313],[315,316,941],"Native Sitzungszustände, asynchrone Turns und Webhooks",[319,320,943],"Agents-Sitzungsprotokolle, Ereignisse, Turns, Werkzeugaufrufe, Subagenten und exportierbare Traces",[323,324,325],{},{"id":329,"data":947,"type":41,"tunes":948},{"text":331,"level":218},{},{"id":334,"data":950,"type":225,"tunes":952},{"text":951},"Mehrere Anwendungskonzepte überstehen die Migration sauber, obwohl sich ihre Darstellung ändert. Modelle, Anweisungen, JSON-Schema-Funktionsdefinitionen, MCP-Zugriff, Werkzeugbeschreibungen und Anforderungen an strukturierte Ausgaben sind weiterhin Anliegen der Agentenkonfiguration.",{},{"id":339,"data":954,"type":225,"tunes":956},{"text":955},"Das Konfigurationsmodell der OpenAI Agents API definiert einen Agenten explizit durch Modell, Anweisungen, Werkzeuge, Reasoning und Ausgabeverhalten. Funktionswerkzeuge bleiben Anwendungscode: Die Harness fordert einen Funktionsaufruf an, und Ihr Handler gibt das Ergebnis zurück. OpenAI weist auch darauf hin, dass Funktionsimplementierungen, die mit der Responses API verwendet werden, mit dem Sitzungsablauf der Agents API wiederverwendet werden können.",{},{"id":344,"data":958,"type":233,"tunes":959},{"body":346,"title":347,"variant":348},{},{"id":351,"data":961,"type":41,"tunes":962},{"text":353,"level":218},{},{"id":356,"data":964,"type":225,"tunes":966},{"text":965},"Das gefährliche Migrationsmuster besteht darin, jede SDK-Laufzeitabstraktion innerhalb der Agents API neu zu erstellen. Das kann dazu führen, dass Sie für ein verwaltetes Harness bezahlen und trotzdem ein Schatten-Harness in Ihrer Anwendung betreiben.",{},{"id":361,"data":968,"type":326,"tunes":984},{"content":969,"stretched":42,"withHeadings":13},[970,971,972,973,975,978,981],[365,366,367],[369,370,371],[373,374,375],[377,974,379],"Agents API-Turns sind asynchron und können action_required-Zustände aufweisen",[976,977,383],"Die gesamte Tool-Ausführung findet dort statt, wo der SDK-Prozess läuft","Funktionshandler und Ausführungsumgebungen können getrennt sein",[385,979,980],"Die Agents API stellt Sitzungsereignisse, Turns und verwaltete Traces bereit","Welche Audit-Daten auf Anwendungsebene benötigen noch einen eigenen Datensatz?",[982,390,983],"Das Handoff-Objekt bildet direkt auf ein gehostetes Subagenten-Modell ab","Welche für den Benutzer sichtbare Verantwortlichkeit und welches Spezialistenverhalten müssen erhalten bleiben, nicht nur die alte Klassenstruktur?",{},{"id":394,"data":986,"type":41,"tunes":987},{"text":396,"level":218},{},{"id":399,"data":989,"type":225,"tunes":991},{"text":990},"Bevor Sie API-Aufrufe anfassen, klassifizieren Sie den Zustand, den Ihre SDK-Anwendung derzeit trägt. Ein Teil des Zustands existiert nur, um das Agentengespräch am Laufen zu halten. Anderer Zustand ist Geschäftswahrheit: Benutzerberechtigungen, Projektstatus, Bestelldaten, Workflow-Genehmigung, Kundendatensätze, Dokumentversionen, Richtlinienzustand oder Anwendungskonfiguration.",{},{"id":404,"data":993,"type":225,"tunes":995},{"text":994},"Die zweite Kategorie sollte nicht von einer Agents API-Sitzung abhängig werden. Eine dauerhafte Sitzung ist nützliche Kontinuität für den Agenten; sie ist kein Ersatz für die Quelle der Wahrheit Ihres Produkts. Wenn die Sitzung verschwindet, abläuft, neu aufgebaut wird oder die Implementierung ändert, muss Ihre Anwendung trotzdem wissen, was wahr ist.",{},{"id":409,"data":997,"type":440,"tunes":1013},{"rows":998,"title":429,"layout":326,"columns":1009},[999,1001,1004,1006],{"id":413,"label":414,"values":1000},[416,416,416],{"id":418,"label":1002,"values":1003},"Geschäftswahrheit",[416,416,416],{"id":422,"label":423,"values":1005},[416,416,416],{"id":426,"label":1007,"values":1008},"Arbeitszustand",[416,416,416],[1010,1011,1012],{"id":432,"label":433},{"id":435,"label":436},{"id":438,"label":439},{},{"id":443,"data":1015,"type":41,"tunes":1016},{"text":445,"level":218},{},{"id":448,"data":1018,"type":225,"tunes":1020},{"text":1019},"SDK-Anwendungen denken oft in Begriffen von Aufrufen von run und Empfangen eines Ergebnisses. Die Agents API denkt in Begriffen einer dauerhaften Sitzung, deren Turns asynchron laufen können. Eine Nachricht an eine inaktive Sitzung startet Arbeit; eine Nachricht während eines aktiven Turns kann sie steuern. Fortschritt kommt über Streaming oder Webhooks.",{},{"id":453,"data":1022,"type":225,"tunes":1024},{"text":1023},"Dies beeinflusst die Anwendungsarchitektur. Lang laufende Produktionsarbeit sollte nicht davon abhängen, dass eine HTTP-Anfrage am Leben bleibt. Ihr Produkt benötigt stabile Sitzungsbezeichner, Lebenszykluspersistenz, Webhook-Verifizierung, idempotente Handler und eine Möglichkeit, den aktuellen Sitzungszustand nach Prozessneustarts abzugleichen.",{},{"id":458,"data":1026,"type":41,"tunes":1027},{"text":460,"level":218},{},{"id":463,"data":1029,"type":225,"tunes":1031},{"text":1030},"Funktionstools bleiben eine wichtige Anwendungsgrenze. Sie definieren die Funktion und ihr JSON-Schema in der Agentenkonfiguration. Wenn das Harness die Funktion benötigt, kann die Sitzung in einen action-required-Zustand wechseln. Ihre Anwendung ruft die erforderliche Aktion ab, führt die Geschäftslogik aus und gibt das Ergebnis zurück.",{},{"id":468,"data":1033,"type":225,"tunes":1034},{"text":470},{},{"id":473,"data":1036,"type":233,"tunes":1038},{"body":1037,"title":476,"variant":240},"Behandeln Sie einen Funktionsaufruf vom verwalteten Harness nicht als Autorisierung zur Ausführung der Aktion. Das Harness entscheidet, \u003Cem>was es aufrufen möchte\u003C\u002Fem>; Ihre Anwendung entscheidet weiterhin, ob der aktuelle Benutzer, die Sitzung und der Geschäftszustand diese Aktion zulassen.",{},{"id":479,"data":1040,"type":41,"tunes":1041},{"text":481,"level":218},{},{"id":484,"data":1043,"type":225,"tunes":1045},{"text":1044},"Die Agents API trennt das verwaltete Harness von der Ausführungsumgebung. Ein Agent kann ohne dedizierte Umgebung, in einer von OpenAI gehosteten Sandbox oder über eine selbst gehostete Umgebung arbeiten, die mit der Sitzung verbunden ist.",{},{"id":489,"data":1047,"type":225,"tunes":1048},{"text":491},{},{"id":494,"data":1050,"type":326,"tunes":1062},{"content":1051,"stretched":42,"withHeadings":13},[1052,1053,1055,1057,1059,1061],[498,499],[501,1054],"Funktionswerkzeug, das von Ihrer Anwendung verwaltet wird",[1056,505],"Isolierten Code ausführen oder mit temporären Dateien ohne private Infrastruktur arbeiten",[1058,508],"Auf private Netzwerkressourcen, benutzerdefinierte Systemsoftware oder kontrollierte lokale Rechenleistung zugreifen",[510,1060],"Anwendungseigener Speicher, nicht nur das Sandbox-Dateisystem",[513,514],{},{"id":517,"data":1064,"type":41,"tunes":1066},{"text":1065,"level":218},"Schritt 5 — Implizite Wiederherstellung durch explizite Lebenszyklusverwaltung ersetzen",{},{"id":522,"data":1068,"type":225,"tunes":1070},{"text":1069},"Das verwaltete Harness bietet Wiederherstellung auf Sitzungsebene, aber Ihre Anwendung besitzt weiterhin jede externe Abhängigkeit darum herum. Selbst gehostete Umgebungen benötigen Bereitstellung, Wiederverbindung und Herunterfahren. Funktionshandler können fehlschlagen. Webhooks können wiederholt werden. Der Zustand auf Produktseite kann sich ändern, während ein Agent im Leerlauf ist.",{},{"id":527,"data":1072,"type":225,"tunes":1074},{"text":1073},"Die Migration benötigt daher zwei Wiederherstellungsmodelle: Wiederherstellung der Agent-Laufzeit und Wiederherstellung des Geschäftsbetriebs. Das erste wird zunehmend von der Agents API verwaltet. Das zweite bleibt Ihre Verantwortung.",{},{"id":532,"data":1076,"type":41,"tunes":1078},{"text":1077,"level":218},"Schritt 6 — Observability um die neue Trace-Grenze herum neu aufbauen",{},{"id":537,"data":1080,"type":225,"tunes":1082},{"text":1081},"Agents API-Sitzungen legen Ereignisse, gespeicherten Verlauf, Turns, Tool-Aufrufe, Subagenten und Token-Nutzung offen. OpenAI bietet außerdem Sitzungsprotokolle in der Plattform und Trace-Export.",{},{"id":542,"data":1084,"type":225,"tunes":1086},{"text":1085},"Verwerfen Sie Ihre Anwendungs-Observability nicht, nur weil sich die Plattform-Traces verbessert haben. Produktprotokolle müssen weiterhin die Agent-Sitzung mit Benutzeridentität, Autorisierungsentscheidung, Domänenobjekt, Tool-Seiteneffekt, Genehmigungsdatensatz und endgültig akzeptiertem Ergebnis verbinden. Der nützliche Produktions-Trace ist die Verknüpfung zwischen Agent-Laufzeit-Nachweisen und Geschäftslaufzeit-Nachweisen.",{},{"id":547,"data":1088,"type":553,"tunes":1091},{"url":549,"title":550,"excerpt":1089,"ctaLabel":1090},"Die Zuverlässigkeit von Agenten hängt vom Ausführungspfad, den Werkzeugen und den Zwischenentscheidungen ab — nicht nur von der endgültigen Ausgabe.","Den Zuverlässigkeitsartikel lesen",{},{"id":556,"data":1093,"type":41,"tunes":1095},{"text":1094,"level":218},"Schritt 7 — Evals bewahren, bevor die Laufzeit geändert wird",{},{"id":561,"data":1097,"type":225,"tunes":1099},{"text":1098},"Eine Migration kann erfolgreich erscheinen, weil das neue System weiterhin plausible Antworten liefert, während es stillschweigend Tool-Auswahl, Sitzungskontinuität, Übergabeverhalten, Latenz oder Fehlerwiederherstellung ändert. Erstellen Sie die Verhaltensbasis, bevor Sie die Laufzeiten wechseln.",{},{"id":566,"data":1101,"type":225,"tunes":1103},{"text":1102},"Die Basis sollte repräsentative Aufgaben, erwartete Tool-Aufrufe, verbotene Aktionen, Genehmigungspunkte, Zustandskontinuität, Wiederherstellungsszenarien und Akzeptanzkriterien für die endgültige Ausgabe enthalten. Führen Sie die alte und die neue Architektur nach Möglichkeit gegen dieselben Fälle aus.",{},{"id":571,"data":1105,"type":41,"tunes":1107},{"text":1106,"level":218},"Der Migrationsnachweis-Test",{},{"id":576,"data":1109,"type":605,"tunes":1130},{"steps":1110,"title":1129,"orientation":604},[1111,1114,1116,1118,1121,1123,1125,1127],{"label":1112,"description":1113},"1. Die Verhaltensbasis einfrieren","Repräsentative SDK-Traces, erwartete Ausgaben, Tool-Pfade, Genehmigungspunkte und Fehlerfälle erfassen.",{"label":583,"description":1115},"Jedes Zustandsfeld als Agent-Sitzungszustand, autoritativen Domänenzustand, dauerhaftes Artefakt oder ephemeren Arbeitszustand markieren.",{"label":586,"description":1117},"Geschäftsfunktionen hinter Anwendungsschnittstellen beibehalten; nach Möglichkeit nur die agentenseitige Integration ersetzen.",{"label":1119,"description":1120},"4. Einen vertikalen Agents API-Slice erstellen","Einen produktionsnahen Workflow migrieren, einschließlich Sitzungserstellung, Tools, Ereignissen, Umgebung und Persistenz.",{"label":592,"description":1122},"Prozessneustart, Webhook-Wiederholung, Funktions-Timeout, Wiederverbindung der selbst gehosteten Umgebung und veralteten Domänenzustand testen.",{"label":595,"description":1124},"Tool-Auswahl, Autorisierung, Nachweispfad, Zustandsübergänge und Seiteneffekte gegen die Basis verifizieren.",{"label":598,"description":1126},"Wo machbar, repräsentative Aufgaben wiedergeben oder spiegeln, bevor die neue Laufzeit autoritativ wird.",{"label":601,"description":1128},"Integrationsadapter und Rollback-Fähigkeit beibehalten, bis das Produktionsverhalten stabil ist.","Die neue Laufzeit beweisen, bevor umgestellt wird",{},{"id":608,"data":1132,"type":41,"tunes":1133},{"text":610,"level":218},{},{"id":613,"data":1135,"type":326,"tunes":1150},{"content":1136,"stretched":42,"withHeadings":13},[1137,1138,1140,1141,1142,1143,1144,1145,1147,1148],[617,618],[620,1139],"Erfüllt die neue Laufzeit dieselben oder bessere Akzeptanzkriterien?",[623,624],[626,627],[323,629],[631,632],[634,635],[637,1146],"Wie wirken sich Sitzungsstart, Umgebungsbereitstellung und mehrzügige Arbeit auf die für Benutzer sichtbare Zeit aus?",[640,641],[643,1149],"Welche zuvor anwendungseigenen Verantwortlichkeiten sind tatsächlich verschwunden und welche haben sich nur verschoben?",{},{"id":647,"data":1152,"type":41,"tunes":1153},{"text":649,"level":218},{},{"id":652,"data":1155,"type":225,"tunes":1157},{"text":1156},"Eine bestehende Agents SDK-Anwendung wird nicht allein dadurch zu einer schlechten Architektur, dass sich die Plattformrichtung geändert hat. OpenAI führt Wartung, Sicherheitsfixes, kritische Bugfixes und Kompatibilitätsarbeit fort. Wenn die Anwendung stabil und gut evaluiert ist und keine blockierte Roadmap-Anforderung hat, ist eine sofortige Laufzeitmigration möglicherweise nicht gerechtfertigt.",{},{"id":657,"data":1159,"type":668,"tunes":1166},{"meta":1160,"items":1161,"style":667},{},[1162,1163,663,664,1164,1165],"Eine erforderliche SDK-Fähigkeit ist in der Agents API noch nicht verfügbar.","Die Migration würde einen kritischen Produktionszeitraum stören, ohne kurzfristigen Nutzen zu liefern.","Ihr Team hat den Geschäftszustand noch nicht vom Agent-Laufzeitzustand getrennt, was die Umstellung unsicher macht.","Das Verhalten der neuen Agents API wurde nicht gegen repräsentative Produktionsworkloads getestet.",{},{"id":671,"data":1168,"type":41,"tunes":1169},{"text":673,"level":218},{},{"id":676,"data":1171,"type":225,"tunes":1173},{"text":1172},"Die Migration wird überzeugender, wenn die Produktanforderungen mit dem verwalteten Harness übereinstimmen: dauerhafte lang laufende Arbeit, plattformverwaltete Kontextkomprimierung und Wiederherstellung, neuere Agent-Runtime-Funktionen, sandboxed Ausführung, umfangreichere gehostete Lebenszyklusverwaltung oder der Wunsch, die Menge an Orchestrierungscode zu reduzieren, die Ihre Anwendung betreibt.",{},{"id":681,"data":1175,"type":225,"tunes":1177},{"text":1176},"Das stärkste Signal ist nicht „das alte SDK ist funktionsvollständig“. Es ist „unsere Roadmap hängt jetzt von Fähigkeiten ab, deren natürlicher Ort die verwaltete Agents-API-Runtime ist“.",{},{"id":686,"data":1179,"type":41,"tunes":1181},{"text":1180,"level":218},"Was würde diese Antwort ändern?",{},{"id":691,"data":1183,"type":225,"tunes":1185},{"text":1184},"Die Migrationsstrategie würde sich ändern, wenn OpenAI automatisierte Migrationstools veröffentlicht, explizite Kompatibilitätsschichten einführt, die Sitzungssemantik der Agents-API ändert, die Unterstützung für selbstgehostete Umgebungen erweitert oder einschränkt oder die Support-Richtlinie für das Agents SDK ändert.",{},{"id":696,"data":1187,"type":225,"tunes":1189},{"text":1188},"Sie würde sich auch ändern, wenn sich Ihre Produktanforderungen ändern. Ein einfacher Anfrage-Antwort-Assistent benötigt möglicherweise überhaupt kein dauerhaftes verwaltetes Harness. Ein lang laufender Coding-, Recherche- oder Operations-Agent kann viel stärker vom Eigentumsmodell der Agents-API profitieren.",{},{"id":701,"data":1191,"type":41,"tunes":1192},{"text":703,"level":218},{},{"id":706,"data":1194,"type":225,"tunes":1196},{"text":1195},"Es gibt keine universelle Eins-zu-eins-Zuordnung von SDK zu API für die Migration, da Anwendungen das Agents SDK unterschiedlich nutzen. Einige verlassen sich stark auf Sitzungen und Übergaben; andere verwenden es als dünnen Runner um Funktionswerkzeuge. Die richtige Migration hängt davon ab, welche Verantwortlichkeiten Ihre Anwendung heute tatsächlich besitzt.",{},{"id":711,"data":1198,"type":225,"tunes":1200},{"text":1199},"Die Agents-API befindet sich zudem in der öffentlichen Beta, sodass sich Implementierungsdetails weiterentwickeln können. Betrachten Sie die Eigentumsprinzipien in diesem Artikel als beständiger als jede einzelne Endpunktform.",{},{"id":716,"data":1202,"type":41,"tunes":1203},{"text":718,"level":218},{},{"id":721,"data":1205,"type":225,"tunes":1207},{"text":1206},"Die Migration vom Agents SDK zur Agents-API lässt sich am besten als Verschiebung der Agent-Runtime-Grenze verstehen. Das verwaltete Harness übernimmt mehr von der Schleife, Sitzungskontinuität, Komprimierung und Wiederherstellung. Ihre Anwendung sollte expliziter werden bezüglich der Verantwortlichkeiten, die bei Ihnen verbleiben: Domänenwahrheit, Autorisierung, Funktionsnebenwirkungen, Artefakte, Auditierbarkeit und Produktlebenszyklus.",{},{"id":726,"data":1209,"type":225,"tunes":1210},{"text":728},{},{"id":731,"data":1212,"type":41,"tunes":1213},{"text":733,"level":218},{},{"id":736,"data":1215,"type":736,"tunes":1228},{"items":1216,"title":1227},[1217,1220,1222,1224,1226],{"id":740,"answer":1218,"question":1219},"Nein. Die Hauptänderung ist die Runtime-Eigentümerschaft: Das Agents SDK führt die Agent-Schleife in Ihrer Anwendung aus, während die Agents-API ein verwaltetes Codex-Harness und eine dauerhafte Sitzung betreibt. Zustand, Lebenszyklus, Ereignisbehandlung und Wiederherstellung sollten als Architekturanliegen überprüft werden.","Ist die Migration vom Agents SDK zur Agents-API nur ein API-Rewrite?",{"id":744,"answer":1221,"question":746},"Die Geschäftsimplementierung kann oft wiederverwendet werden, wenn sie bereits hinter einer stabilen Anwendungsschnittstelle liegt. Die agentenorientierte Integration ändert sich, weil Agents-API-Funktionsaufrufe über sitzungserforderliche Aktionen und Ergebnisse abgewickelt werden.",{"id":748,"answer":1223,"question":750},"Im Allgemeinen nein. Behalten Sie autoritativen Geschäfts- und Produktzustand in Ihren eigenen Datenbanken oder Diensten. Verwenden Sie die Agent-Sitzung für Agentenkontinuität und Arbeitskontext, nicht als einzige Wahrheitsquelle für Ihr Produkt.",{"id":752,"answer":753,"question":1225},"Benötige ich Webhooks für die Agents-API?",{"id":756,"answer":757,"question":758},"Migration vom Agents SDK zur Agents-API",{},{"id":762,"data":1230,"type":41,"tunes":1231},{"text":764,"level":218},{},{"id":767,"data":1233,"type":767,"tunes":1243},{"title":769,"entries":1234},[1235,1236,1237,1238,1240,1242],{"term":772,"anchor":773,"definition":774},{"term":776,"anchor":777,"definition":778},{"term":780,"anchor":781,"definition":782},{"term":784,"anchor":785,"definition":1239},"Ein Sitzungszustand, in dem die Agents-API externe Eingaben wie ein Funktionsergebnis oder eine Umgebungsverbindung benötigt, bevor die Arbeit fortgesetzt werden kann.",{"term":788,"anchor":789,"definition":1241},"Eine Ausführungsumgebung, die von Ihrer Infrastruktur betrieben und mit dem verwalteten Agents-API-Harness verbunden ist.",{"term":792,"anchor":793,"definition":794},{},{"id":797,"data":1245,"type":41,"tunes":1246},{"text":799,"level":218},{},{"id":802,"data":1248,"type":809,"tunes":1252},{"link":804,"meta":1249},{"image":1250,"title":807,"description":1251},{"url":416},"Aktuelle Support-Richtlinie: Das Agents SDK ist funktionsvollständig, bleibt gewartet, und neue Anwendungen sollten mit der Agents-API beginnen.",{},{"id":812,"data":1254,"type":809,"tunes":1258},{"link":814,"meta":1255},{"image":1256,"title":817,"description":1257},{"url":416},"Dokumentation der anwendungseigenen Agentenschleife des SDK und des Fortsetzungsmodells.",{},{"id":821,"data":1260,"type":809,"tunes":1264},{"link":823,"meta":1261},{"image":1262,"title":1263,"description":827},{"url":416},"OpenAI — Übersicht über die Agents API",{},{"id":830,"data":1266,"type":809,"tunes":1271},{"link":832,"meta":1267},{"image":1268,"title":1269,"description":1270},{"url":416},"OpenAI — Architektur der Agents API","Erläutert die Grenzen zwischen gehostetem Harness, Anwendungsserver, von OpenAI gehosteter und selbst gehosteter Ausführungsumgebung.",{},{"id":839,"data":1273,"type":809,"tunes":1276},{"link":841,"meta":1274},{"image":1275,"title":844,"description":845},{"url":416},{},{"id":848,"data":1278,"type":809,"tunes":1281},{"link":850,"meta":1279},{"image":1280,"title":853,"description":854},{"url":416},{},{"id":857,"data":1283,"type":809,"tunes":1287},{"link":859,"meta":1284},{"image":1285,"title":1286,"description":863},{"url":416},"OpenAI — Funktionen der Agents API",{},{"id":866,"data":1289,"type":809,"tunes":1293},{"link":868,"meta":1290},{"image":1291,"title":871,"description":1292},{"url":416},"Lebenszyklusereignisse für asynchrone Sitzungen, erforderliche Aktionen und Verbindungen zu selbst gehosteten Umgebungen.",{},{"id":875,"data":1295,"type":809,"tunes":1300},{"link":877,"meta":1296},{"image":1297,"title":1298,"description":1299},{"url":416},"OpenAI — Observability und Nutzung der Agents API","Sitzungsprotokolle, Ereignisse, Turns, Werkzeugaufrufe, Subagenten, Traces und Überprüfung der Token-Nutzung.",{},"2.31","Die Migration vom OpenAI Agents SDK zur neuen Agents API ist keine reine Umbenennung von Imports. Die Laufzeitgrenze verschiebt sich: Die Agent-Schleife, die dauerhafte Sitzung, die Orchestrierung, die Kontextkomprimierung und die Wiederherstellung bewegen sich in Richtung einer verwalteten Harness. Dieser Leitfaden zeigt, was verschoben werden sollte, was in Ihrer Anwendung bleiben sollte und wie Sie die Migration vor dem Cutover nachweisen können.","\u002Fuploads\u002F2026\u002F09\u002Fmigrating-from-openai-agents-sdk-to-the-agents-api-what-actually-changes-architecturally-1790352171968-ienxr9.webp","migrating-from-openai-agents-sdk-to-the-agents-api-what-actually-changes-architecturally-1790352171968-ienxr9","PUBLISHED","2026-09-25T12:01:00.000Z","2026-09-25T16:01:18.925Z","2026-09-25T16:11:21.632Z",{"en":1310,"de":1311,"sr":1312,"es":1313,"fr":1314,"it":1315,"ru":1316,"zh":1317},"\u002Fblog\u002Fmigrating-from-openai-agents-sdk-to-the-agents-api-what-actually-changes-architecturally","\u002Fde\u002Fblog\u002Fmigrating-from-openai-agents-sdk-to-the-agents-api-what-actually-changes-architecturally","\u002Fsr\u002Fblog\u002Fmigrating-from-openai-agents-sdk-to-the-agents-api-what-actually-changes-architecturally","\u002Fes\u002Fblog\u002Fmigrating-from-openai-agents-sdk-to-the-agents-api-what-actually-changes-architecturally","\u002Ffr\u002Fblog\u002Fmigrating-from-openai-agents-sdk-to-the-agents-api-what-actually-changes-architecturally","\u002Fit\u002Fblog\u002Fmigrating-from-openai-agents-sdk-to-the-agents-api-what-actually-changes-architecturally","\u002Fru\u002Fblog\u002Fmigrating-from-openai-agents-sdk-to-the-agents-api-what-actually-changes-architecturally","\u002Fzh\u002Fblog\u002Fmigrating-from-openai-agents-sdk-to-the-agents-api-what-actually-changes-architecturally",[1319,1323,1327],{"id":1320,"name":1321,"slug":1322},70,"Phasen (Plan → Execute → Verify)","phases",{"id":1324,"name":1325,"slug":1326},73,"Verifikation & Diffing","verification-and-diffing",{"id":1328,"name":1329,"slug":1330},71,"Risikoregister","risk-register",{"id":1332,"login":1333,"email":1334,"displayName":1335},"20","rooth8233","aleksandar@stajic.de","Aleksandar Stajić",[1337,1984],{"lang":7,"title":207,"content":209,"contentJson":1338,"excerpt":1302},{"time":211,"blocks":1339,"version":1301},[1340,1343,1346,1349,1352,1355,1358,1361,1364,1367,1370,1386,1389,1392,1395,1398,1401,1404,1415,1418,1421,1424,1440,1443,1446,1449,1452,1455,1458,1461,1464,1467,1470,1480,1483,1486,1489,1492,1495,1498,1501,1504,1507,1510,1513,1525,1528,1542,1545,1548,1553,1556,1559,1562,1565,1568,1571,1574,1577,1580,1583,1586,1589,1592,1601,1604,1614,1617,1622,1627,1632,1637,1642,1647,1652,1657,1662,1665,1668,1671,1674,1677,1680,1683,1686,1689,1692,1708,1711,1714,1717,1720,1723,1726,1737,1740,1743,1746,1762,1765,1768,1771,1774,1777,1780,1783,1786,1789,1792,1802,1805,1808,1811,1814,1817,1820,1823,1826,1829,1832,1835,1847,1850,1864,1867,1870,1875,1878,1881,1884,1887,1890,1893,1896,1899,1902,1905,1908,1911,1914,1923,1926,1936,1939,1944,1949,1954,1959,1964,1969,1974,1979],{"id":214,"data":1341,"type":219,"tunes":1342},{"title":216,"maxLevel":217,"minLevel":218},{},{"id":222,"data":1344,"type":225,"tunes":1345},{"text":224},{},{"id":228,"data":1347,"type":233,"tunes":1348},{"body":230,"title":231,"variant":232},{},{"id":236,"data":1350,"type":233,"tunes":1351},{"body":238,"title":239,"variant":240},{},{"id":243,"data":1353,"type":233,"tunes":1354},{"body":245,"title":246,"variant":247},{},{"id":250,"data":1356,"type":41,"tunes":1357},{"text":252,"level":218},{},{"id":255,"data":1359,"type":225,"tunes":1360},{"text":257},{},{"id":260,"data":1362,"type":225,"tunes":1363},{"text":262},{},{"id":265,"data":1365,"type":225,"tunes":1366},{"text":267},{},{"id":270,"data":1368,"type":41,"tunes":1369},{"text":272,"level":218},{},{"id":275,"data":1371,"type":326,"tunes":1385},{"content":1372,"stretched":42,"withHeadings":13},[1373,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384],[279,280,281],[283,284,285],[287,288,289],[291,292,293],[295,296,297],[299,300,301],[303,304,305],[307,308,309],[311,312,313],[315,316,317],[319,320,321],[323,324,325],{},{"id":329,"data":1387,"type":41,"tunes":1388},{"text":331,"level":218},{},{"id":334,"data":1390,"type":225,"tunes":1391},{"text":336},{},{"id":339,"data":1393,"type":225,"tunes":1394},{"text":341},{},{"id":344,"data":1396,"type":233,"tunes":1397},{"body":346,"title":347,"variant":348},{},{"id":351,"data":1399,"type":41,"tunes":1400},{"text":353,"level":218},{},{"id":356,"data":1402,"type":225,"tunes":1403},{"text":358},{},{"id":361,"data":1405,"type":326,"tunes":1414},{"content":1406,"stretched":42,"withHeadings":13},[1407,1408,1409,1410,1411,1412,1413],[365,366,367],[369,370,371],[373,374,375],[377,378,379],[381,382,383],[385,386,387],[389,390,391],{},{"id":394,"data":1416,"type":41,"tunes":1417},{"text":396,"level":218},{},{"id":399,"data":1419,"type":225,"tunes":1420},{"text":401},{},{"id":404,"data":1422,"type":225,"tunes":1423},{"text":406},{},{"id":409,"data":1425,"type":440,"tunes":1439},{"rows":1426,"title":429,"layout":326,"columns":1435},[1427,1429,1431,1433],{"id":413,"label":414,"values":1428},[416,416,416],{"id":418,"label":419,"values":1430},[416,416,416],{"id":422,"label":423,"values":1432},[416,416,416],{"id":426,"label":427,"values":1434},[416,416,416],[1436,1437,1438],{"id":432,"label":433},{"id":435,"label":436},{"id":438,"label":439},{},{"id":443,"data":1441,"type":41,"tunes":1442},{"text":445,"level":218},{},{"id":448,"data":1444,"type":225,"tunes":1445},{"text":450},{},{"id":453,"data":1447,"type":225,"tunes":1448},{"text":455},{},{"id":458,"data":1450,"type":41,"tunes":1451},{"text":460,"level":218},{},{"id":463,"data":1453,"type":225,"tunes":1454},{"text":465},{},{"id":468,"data":1456,"type":225,"tunes":1457},{"text":470},{},{"id":473,"data":1459,"type":233,"tunes":1460},{"body":475,"title":476,"variant":240},{},{"id":479,"data":1462,"type":41,"tunes":1463},{"text":481,"level":218},{},{"id":484,"data":1465,"type":225,"tunes":1466},{"text":486},{},{"id":489,"data":1468,"type":225,"tunes":1469},{"text":491},{},{"id":494,"data":1471,"type":326,"tunes":1479},{"content":1472,"stretched":42,"withHeadings":13},[1473,1474,1475,1476,1477,1478],[498,499],[501,502],[504,505],[507,508],[510,511],[513,514],{},{"id":517,"data":1481,"type":41,"tunes":1482},{"text":519,"level":218},{},{"id":522,"data":1484,"type":225,"tunes":1485},{"text":524},{},{"id":527,"data":1487,"type":225,"tunes":1488},{"text":529},{},{"id":532,"data":1490,"type":41,"tunes":1491},{"text":534,"level":218},{},{"id":537,"data":1493,"type":225,"tunes":1494},{"text":539},{},{"id":542,"data":1496,"type":225,"tunes":1497},{"text":544},{},{"id":547,"data":1499,"type":553,"tunes":1500},{"url":549,"title":550,"excerpt":551,"ctaLabel":552},{},{"id":556,"data":1502,"type":41,"tunes":1503},{"text":558,"level":218},{},{"id":561,"data":1505,"type":225,"tunes":1506},{"text":563},{},{"id":566,"data":1508,"type":225,"tunes":1509},{"text":568},{},{"id":571,"data":1511,"type":41,"tunes":1512},{"text":573,"level":218},{},{"id":576,"data":1514,"type":605,"tunes":1524},{"steps":1515,"title":603,"orientation":604},[1516,1517,1518,1519,1520,1521,1522,1523],{"label":580,"description":581},{"label":583,"description":584},{"label":586,"description":587},{"label":589,"description":590},{"label":592,"description":593},{"label":595,"description":596},{"label":598,"description":599},{"label":601,"description":602},{},{"id":608,"data":1526,"type":41,"tunes":1527},{"text":610,"level":218},{},{"id":613,"data":1529,"type":326,"tunes":1541},{"content":1530,"stretched":42,"withHeadings":13},[1531,1532,1533,1534,1535,1536,1537,1538,1539,1540],[617,618],[620,621],[623,624],[626,627],[323,629],[631,632],[634,635],[637,638],[640,641],[643,644],{},{"id":647,"data":1543,"type":41,"tunes":1544},{"text":649,"level":218},{},{"id":652,"data":1546,"type":225,"tunes":1547},{"text":654},{},{"id":657,"data":1549,"type":668,"tunes":1552},{"meta":1550,"items":1551,"style":667},{},[661,662,663,664,665,666],{},{"id":671,"data":1554,"type":41,"tunes":1555},{"text":673,"level":218},{},{"id":676,"data":1557,"type":225,"tunes":1558},{"text":678},{},{"id":681,"data":1560,"type":225,"tunes":1561},{"text":683},{},{"id":686,"data":1563,"type":41,"tunes":1564},{"text":688,"level":218},{},{"id":691,"data":1566,"type":225,"tunes":1567},{"text":693},{},{"id":696,"data":1569,"type":225,"tunes":1570},{"text":698},{},{"id":701,"data":1572,"type":41,"tunes":1573},{"text":703,"level":218},{},{"id":706,"data":1575,"type":225,"tunes":1576},{"text":708},{},{"id":711,"data":1578,"type":225,"tunes":1579},{"text":713},{},{"id":716,"data":1581,"type":41,"tunes":1582},{"text":718,"level":218},{},{"id":721,"data":1584,"type":225,"tunes":1585},{"text":723},{},{"id":726,"data":1587,"type":225,"tunes":1588},{"text":728},{},{"id":731,"data":1590,"type":41,"tunes":1591},{"text":733,"level":218},{},{"id":736,"data":1593,"type":736,"tunes":1600},{"items":1594,"title":759},[1595,1596,1597,1598,1599],{"id":740,"answer":741,"question":742},{"id":744,"answer":745,"question":746},{"id":748,"answer":749,"question":750},{"id":752,"answer":753,"question":754},{"id":756,"answer":757,"question":758},{},{"id":762,"data":1602,"type":41,"tunes":1603},{"text":764,"level":218},{},{"id":767,"data":1605,"type":767,"tunes":1613},{"title":769,"entries":1606},[1607,1608,1609,1610,1611,1612],{"term":772,"anchor":773,"definition":774},{"term":776,"anchor":777,"definition":778},{"term":780,"anchor":781,"definition":782},{"term":784,"anchor":785,"definition":786},{"term":788,"anchor":789,"definition":790},{"term":792,"anchor":793,"definition":794},{},{"id":797,"data":1615,"type":41,"tunes":1616},{"text":799,"level":218},{},{"id":802,"data":1618,"type":809,"tunes":1621},{"link":804,"meta":1619},{"image":1620,"title":807,"description":808},{"url":416},{},{"id":812,"data":1623,"type":809,"tunes":1626},{"link":814,"meta":1624},{"image":1625,"title":817,"description":818},{"url":416},{},{"id":821,"data":1628,"type":809,"tunes":1631},{"link":823,"meta":1629},{"image":1630,"title":826,"description":827},{"url":416},{},{"id":830,"data":1633,"type":809,"tunes":1636},{"link":832,"meta":1634},{"image":1635,"title":835,"description":836},{"url":416},{},{"id":839,"data":1638,"type":809,"tunes":1641},{"link":841,"meta":1639},{"image":1640,"title":844,"description":845},{"url":416},{},{"id":848,"data":1643,"type":809,"tunes":1646},{"link":850,"meta":1644},{"image":1645,"title":853,"description":854},{"url":416},{},{"id":857,"data":1648,"type":809,"tunes":1651},{"link":859,"meta":1649},{"image":1650,"title":862,"description":863},{"url":416},{},{"id":866,"data":1653,"type":809,"tunes":1656},{"link":868,"meta":1654},{"image":1655,"title":871,"description":872},{"url":416},{},{"id":875,"data":1658,"type":809,"tunes":1661},{"link":877,"meta":1659},{"image":1660,"title":880,"description":881},{"url":416},{},{"id":222,"data":1663,"type":225,"tunes":1664},{"text":885},{},{"id":228,"data":1666,"type":233,"tunes":1667},{"body":889,"title":231,"variant":232},{},{"id":236,"data":1669,"type":233,"tunes":1670},{"body":893,"title":239,"variant":240},{},{"id":243,"data":1672,"type":233,"tunes":1673},{"body":245,"title":246,"variant":247},{},{"id":899,"data":1675,"type":219,"tunes":1676},{"title":216,"maxLevel":217,"minLevel":218},{},{"id":250,"data":1678,"type":41,"tunes":1679},{"text":252,"level":218},{},{"id":255,"data":1681,"type":225,"tunes":1682},{"text":907},{},{"id":260,"data":1684,"type":225,"tunes":1685},{"text":911},{},{"id":265,"data":1687,"type":225,"tunes":1688},{"text":915},{},{"id":270,"data":1690,"type":41,"tunes":1691},{"text":272,"level":218},{},{"id":275,"data":1693,"type":326,"tunes":1707},{"content":1694,"stretched":42,"withHeadings":13},[1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706],[279,280,281],[925,284,285],[927,288,928],[930,292,293],[932,933,297],[299,300,301],[303,304,936],[307,938,309],[311,312,313],[315,316,941],[319,320,943],[323,324,325],{},{"id":329,"data":1709,"type":41,"tunes":1710},{"text":331,"level":218},{},{"id":334,"data":1712,"type":225,"tunes":1713},{"text":951},{},{"id":339,"data":1715,"type":225,"tunes":1716},{"text":955},{},{"id":344,"data":1718,"type":233,"tunes":1719},{"body":346,"title":347,"variant":348},{},{"id":351,"data":1721,"type":41,"tunes":1722},{"text":353,"level":218},{},{"id":356,"data":1724,"type":225,"tunes":1725},{"text":965},{},{"id":361,"data":1727,"type":326,"tunes":1736},{"content":1728,"stretched":42,"withHeadings":13},[1729,1730,1731,1732,1733,1734,1735],[365,366,367],[369,370,371],[373,374,375],[377,974,379],[976,977,383],[385,979,980],[982,390,983],{},{"id":394,"data":1738,"type":41,"tunes":1739},{"text":396,"level":218},{},{"id":399,"data":1741,"type":225,"tunes":1742},{"text":990},{},{"id":404,"data":1744,"type":225,"tunes":1745},{"text":994},{},{"id":409,"data":1747,"type":440,"tunes":1761},{"rows":1748,"title":429,"layout":326,"columns":1757},[1749,1751,1753,1755],{"id":413,"label":414,"values":1750},[416,416,416],{"id":418,"label":1002,"values":1752},[416,416,416],{"id":422,"label":423,"values":1754},[416,416,416],{"id":426,"label":1007,"values":1756},[416,416,416],[1758,1759,1760],{"id":432,"label":433},{"id":435,"label":436},{"id":438,"label":439},{},{"id":443,"data":1763,"type":41,"tunes":1764},{"text":445,"level":218},{},{"id":448,"data":1766,"type":225,"tunes":1767},{"text":1019},{},{"id":453,"data":1769,"type":225,"tunes":1770},{"text":1023},{},{"id":458,"data":1772,"type":41,"tunes":1773},{"text":460,"level":218},{},{"id":463,"data":1775,"type":225,"tunes":1776},{"text":1030},{},{"id":468,"data":1778,"type":225,"tunes":1779},{"text":470},{},{"id":473,"data":1781,"type":233,"tunes":1782},{"body":1037,"title":476,"variant":240},{},{"id":479,"data":1784,"type":41,"tunes":1785},{"text":481,"level":218},{},{"id":484,"data":1787,"type":225,"tunes":1788},{"text":1044},{},{"id":489,"data":1790,"type":225,"tunes":1791},{"text":491},{},{"id":494,"data":1793,"type":326,"tunes":1801},{"content":1794,"stretched":42,"withHeadings":13},[1795,1796,1797,1798,1799,1800],[498,499],[501,1054],[1056,505],[1058,508],[510,1060],[513,514],{},{"id":517,"data":1803,"type":41,"tunes":1804},{"text":1065,"level":218},{},{"id":522,"data":1806,"type":225,"tunes":1807},{"text":1069},{},{"id":527,"data":1809,"type":225,"tunes":1810},{"text":1073},{},{"id":532,"data":1812,"type":41,"tunes":1813},{"text":1077,"level":218},{},{"id":537,"data":1815,"type":225,"tunes":1816},{"text":1081},{},{"id":542,"data":1818,"type":225,"tunes":1819},{"text":1085},{},{"id":547,"data":1821,"type":553,"tunes":1822},{"url":549,"title":550,"excerpt":1089,"ctaLabel":1090},{},{"id":556,"data":1824,"type":41,"tunes":1825},{"text":1094,"level":218},{},{"id":561,"data":1827,"type":225,"tunes":1828},{"text":1098},{},{"id":566,"data":1830,"type":225,"tunes":1831},{"text":1102},{},{"id":571,"data":1833,"type":41,"tunes":1834},{"text":1106,"level":218},{},{"id":576,"data":1836,"type":605,"tunes":1846},{"steps":1837,"title":1129,"orientation":604},[1838,1839,1840,1841,1842,1843,1844,1845],{"label":1112,"description":1113},{"label":583,"description":1115},{"label":586,"description":1117},{"label":1119,"description":1120},{"label":592,"description":1122},{"label":595,"description":1124},{"label":598,"description":1126},{"label":601,"description":1128},{},{"id":608,"data":1848,"type":41,"tunes":1849},{"text":610,"level":218},{},{"id":613,"data":1851,"type":326,"tunes":1863},{"content":1852,"stretched":42,"withHeadings":13},[1853,1854,1855,1856,1857,1858,1859,1860,1861,1862],[617,618],[620,1139],[623,624],[626,627],[323,629],[631,632],[634,635],[637,1146],[640,641],[643,1149],{},{"id":647,"data":1865,"type":41,"tunes":1866},{"text":649,"level":218},{},{"id":652,"data":1868,"type":225,"tunes":1869},{"text":1156},{},{"id":657,"data":1871,"type":668,"tunes":1874},{"meta":1872,"items":1873,"style":667},{},[1162,1163,663,664,1164,1165],{},{"id":671,"data":1876,"type":41,"tunes":1877},{"text":673,"level":218},{},{"id":676,"data":1879,"type":225,"tunes":1880},{"text":1172},{},{"id":681,"data":1882,"type":225,"tunes":1883},{"text":1176},{},{"id":686,"data":1885,"type":41,"tunes":1886},{"text":1180,"level":218},{},{"id":691,"data":1888,"type":225,"tunes":1889},{"text":1184},{},{"id":696,"data":1891,"type":225,"tunes":1892},{"text":1188},{},{"id":701,"data":1894,"type":41,"tunes":1895},{"text":703,"level":218},{},{"id":706,"data":1897,"type":225,"tunes":1898},{"text":1195},{},{"id":711,"data":1900,"type":225,"tunes":1901},{"text":1199},{},{"id":716,"data":1903,"type":41,"tunes":1904},{"text":718,"level":218},{},{"id":721,"data":1906,"type":225,"tunes":1907},{"text":1206},{},{"id":726,"data":1909,"type":225,"tunes":1910},{"text":728},{},{"id":731,"data":1912,"type":41,"tunes":1913},{"text":733,"level":218},{},{"id":736,"data":1915,"type":736,"tunes":1922},{"items":1916,"title":1227},[1917,1918,1919,1920,1921],{"id":740,"answer":1218,"question":1219},{"id":744,"answer":1221,"question":746},{"id":748,"answer":1223,"question":750},{"id":752,"answer":753,"question":1225},{"id":756,"answer":757,"question":758},{},{"id":762,"data":1924,"type":41,"tunes":1925},{"text":764,"level":218},{},{"id":767,"data":1927,"type":767,"tunes":1935},{"title":769,"entries":1928},[1929,1930,1931,1932,1933,1934],{"term":772,"anchor":773,"definition":774},{"term":776,"anchor":777,"definition":778},{"term":780,"anchor":781,"definition":782},{"term":784,"anchor":785,"definition":1239},{"term":788,"anchor":789,"definition":1241},{"term":792,"anchor":793,"definition":794},{},{"id":797,"data":1937,"type":41,"tunes":1938},{"text":799,"level":218},{},{"id":802,"data":1940,"type":809,"tunes":1943},{"link":804,"meta":1941},{"image":1942,"title":807,"description":1251},{"url":416},{},{"id":812,"data":1945,"type":809,"tunes":1948},{"link":814,"meta":1946},{"image":1947,"title":817,"description":1257},{"url":416},{},{"id":821,"data":1950,"type":809,"tunes":1953},{"link":823,"meta":1951},{"image":1952,"title":1263,"description":827},{"url":416},{},{"id":830,"data":1955,"type":809,"tunes":1958},{"link":832,"meta":1956},{"image":1957,"title":1269,"description":1270},{"url":416},{},{"id":839,"data":1960,"type":809,"tunes":1963},{"link":841,"meta":1961},{"image":1962,"title":844,"description":845},{"url":416},{},{"id":848,"data":1965,"type":809,"tunes":1968},{"link":850,"meta":1966},{"image":1967,"title":853,"description":854},{"url":416},{},{"id":857,"data":1970,"type":809,"tunes":1973},{"link":859,"meta":1971},{"image":1972,"title":1286,"description":863},{"url":416},{},{"id":866,"data":1975,"type":809,"tunes":1978},{"link":868,"meta":1976},{"image":1977,"title":871,"description":1292},{"url":416},{},{"id":875,"data":1980,"type":809,"tunes":1983},{"link":877,"meta":1981},{"image":1982,"title":1298,"description":1299},{"url":416},{},{"lang":1985,"title":1986,"content":1987,"contentJson":1988,"excerpt":2855},"en","Migrating from OpenAI Agents SDK to the Agents API: What Actually Changes Architecturally?","{\"time\":1790352173087,\"blocks\":[{\"id\":\"24Foq4L2Wb\",\"type\":\"tableOfContents\",\"data\":{\"title\":\"Contents\",\"minLevel\":2,\"maxLevel\":3},\"tunes\":{}},{\"id\":\"intro\",\"type\":\"paragraph\",\"data\":{\"text\":\"Migrating from the OpenAI Agents SDK to the Agents API is not an import rename. The core architectural boundary changes: the SDK runs the agent loop inside your application, while the Agents API runs a managed Codex harness and durable session on OpenAI's side. The migration question is therefore not “Which classes map to which endpoints?” but “Which runtime responsibilities move across the boundary, which stay in our application, and which need to be redesigned?”\"},\"tunes\":{}},{\"id\":\"direct\",\"type\":\"callout\",\"data\":{\"variant\":\"info\",\"title\":\"Direct answer\",\"body\":\"\u003Cstrong>A real Agents SDK → Agents API migration changes runtime ownership.\u003C\u002Fstrong> Your reusable agent configuration can still contain model, instructions and tools, but the loop, durable session, orchestration, context compaction and recovery move toward the managed Agents API runtime. Your application should keep domain state, authorization, business rules, function implementations and audit logic outside the agent session. Treat the migration as a boundary redesign, not a mechanical code conversion.\"},\"tunes\":{}},{\"id\":\"current\",\"type\":\"callout\",\"data\":{\"variant\":\"warning\",\"title\":\"Current as of 25 September 2026\",\"body\":\"OpenAI currently marks the Agents SDK as \u003Cstrong>feature complete\u003C\u002Fstrong> and recommends the Agents API for new agent applications. The Agents API is in public beta. Existing SDK applications remain supported, and immediate migration is not automatically required.\"},\"tunes\":{}},{\"id\":\"model-note\",\"type\":\"callout\",\"data\":{\"variant\":\"note\",\"title\":\"About the migration model\",\"body\":\"The Runtime Boundary Migration Map and Migration Proof Test in this article are practical architecture tools, not official OpenAI migration frameworks. They are derived from the current runtime differences documented by OpenAI.\"},\"tunes\":{}},{\"id\":\"h-boundary\",\"type\":\"header\",\"data\":{\"text\":\"The migration is from an application-owned loop to a managed harness\",\"level\":2},\"tunes\":{}},{\"id\":\"p-boundary-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"In the Agents SDK, one run is an application-level turn. The SDK runner calls the model, inspects the output, executes tools, follows handoffs and continues until it reaches a stopping point. Your process hosts that loop and therefore owns its lifecycle.\"},\"tunes\":{}},{\"id\":\"p-boundary-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"In the Agents API, OpenAI runs the harness. A session is a durable instance of an agent configuration that accepts tasks, produces events, can pause for required actions, and can continue over time. OpenAI manages sessions, orchestration, context compaction and recovery; your application sends work, handles function tools, receives events and optionally manages a self-hosted execution environment.\"},\"tunes\":{}},{\"id\":\"p-boundary-3\",\"type\":\"paragraph\",\"data\":{\"text\":\"That ownership shift is the migration. Everything else — API syntax, tool schemas, event handling, session IDs — follows from it.\"},\"tunes\":{}},{\"id\":\"h-map\",\"type\":\"header\",\"data\":{\"text\":\"The Runtime Boundary Migration Map\",\"level\":2},\"tunes\":{}},{\"id\":\"migration-map\",\"type\":\"table\",\"data\":{\"withHeadings\":true,\"stretched\":false,\"content\":[[\"Concern\",\"Agents SDK\",\"Agents API migration target\"],[\"Agent loop\",\"Runs in your application through the SDK runner\",\"Runs in the managed Codex harness\"],[\"Reusable agent definition\",\"Agent object in application code\",\"Saved or inline agent configuration with model, instructions and tools\"],[\"Conversation \u002F work continuity\",\"SDK session strategy, history, result continuation or application storage\",\"Durable Agents API session\"],[\"Tool execution\",\"SDK coordinates tool calls in your runtime\",\"Harness requests function calls; your application returns results\"],[\"Context management\",\"Your runtime \u002F SDK session strategy\",\"Managed session context, compaction and recovery, plus your own application data boundaries\"],[\"Handoffs \u002F specialists\",\"SDK orchestration primitives\",\"Harness \u002F subagent behaviour in Agents API; do not assume one-to-one semantics\"],[\"Execution environment\",\"Your application runtime or tool-specific environment\",\"Optional OpenAI-hosted or self-hosted environment attached to the session\"],[\"Streaming\",\"SDK streaming from the run\",\"Agents API session event stream\"],[\"Async lifecycle\",\"Usually application-managed around the SDK run\",\"Native session states, asynchronous turns and webhooks\"],[\"Tracing \u002F observability\",\"Agents SDK tracing and application logs\",\"Agents session logs, events, turns, tool calls, subagents and exportable traces\"],[\"Recovery\",\"Application responsibility\",\"Managed harness\u002Fsession recovery plus application-owned recovery for external systems and self-hosted environments\"]]},\"tunes\":{}},{\"id\":\"h-conceptual\",\"type\":\"header\",\"data\":{\"text\":\"What can migrate conceptually without changing ownership\",\"level\":2},\"tunes\":{}},{\"id\":\"p-conceptual-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"Several application concepts survive the migration cleanly even though their representation changes. Models, instructions, JSON-schema function definitions, MCP access, tool descriptions and structured output requirements are still agent configuration concerns.\"},\"tunes\":{}},{\"id\":\"p-conceptual-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"OpenAI's Agents API configuration model explicitly defines an agent through model, instructions, tools, reasoning and output behaviour. Function tools remain application code: the harness requests a function call, and your handler returns the result. OpenAI also notes that function implementations used with the Responses API can be reused with the Agents API session flow.\"},\"tunes\":{}},{\"id\":\"good-candidate\",\"type\":\"callout\",\"data\":{\"variant\":\"success\",\"title\":\"Good migration candidate\",\"body\":\"A pure business function such as \u003Ccode>get_customer(customer_id)\u003C\u002Fcode> should not need to know whether the caller is the Agents SDK or the Agents API. Keep its domain logic behind a stable application interface and migrate only the agent-facing adapter.\"},\"tunes\":{}},{\"id\":\"h-no-one\",\"type\":\"header\",\"data\":{\"text\":\"What should not be migrated one-to-one\",\"level\":2},\"tunes\":{}},{\"id\":\"p-no-one-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"The dangerous migration pattern is to recreate every SDK runtime abstraction inside the Agents API. That can leave you paying for a managed harness while still operating a shadow harness in your application.\"},\"tunes\":{}},{\"id\":\"no-one-table\",\"type\":\"table\",\"data\":{\"withHeadings\":true,\"stretched\":false,\"content\":[[\"SDK-era assumption\",\"Why a direct copy is risky\",\"Migration question\"],[\"Application loop owns every continuation\",\"The Agents API already owns the harness loop\",\"Which continuation logic is product logic, and which should move to the managed session?\"],[\"Local session object is the primary continuity mechanism\",\"Agents API sessions are durable resources with their own lifecycle\",\"Which state belongs in the session versus the product database?\"],[\"Every interruption is handled synchronously\",\"Agents API turns are asynchronous and can surface action_required states\",\"Which actions need webhooks, workers, idempotency and resumable handlers?\"],[\"All tool execution happens where the SDK process runs\",\"Function handlers and execution environments can be separate\",\"Where should each tool actually execute?\"],[\"SDK trace is the operational timeline\",\"Agents API exposes session events, turns and managed traces\",\"What application-level audit data still needs its own record?\"],[\"Handoff object maps directly to a hosted subagent model\",\"Runtime semantics can differ\",\"What user-visible ownership and specialist behaviour must be preserved, not merely the old class structure?\"]]},\"tunes\":{}},{\"id\":\"h-domain\",\"type\":\"header\",\"data\":{\"text\":\"Step 1 — Separate domain state from agent session state\",\"level\":2},\"tunes\":{}},{\"id\":\"p-domain-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"Before touching API calls, classify the state your SDK application currently carries. Some state exists only to keep the agent conversation moving. Other state is business truth: user permissions, project status, order data, workflow approval, customer records, document versions, policy state or application configuration.\"},\"tunes\":{}},{\"id\":\"p-domain-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"The second category should not become dependent on an Agents API session. A durable session is useful continuity for the agent; it is not a replacement for your product's source of truth. If the session disappears, expires, is rebuilt, or changes implementation, your application must still know what is true.\"},\"tunes\":{}},{\"id\":\"state-test\",\"type\":\"comparison\",\"data\":{\"title\":\"State placement test\",\"layout\":\"table\",\"columns\":[{\"id\":\"type\",\"label\":\"State type\"},{\"id\":\"place\",\"label\":\"Preferred owner\"},{\"id\":\"reason\",\"label\":\"Reason\"}],\"rows\":[{\"id\":\"conversation\",\"label\":\"Conversation continuity\",\"values\":[\"\",\"\",\"\"]},{\"id\":\"domain\",\"label\":\"Business truth\",\"values\":[\"\",\"\",\"\"]},{\"id\":\"artifact\",\"label\":\"Durable artifact\",\"values\":[\"\",\"\",\"\"]},{\"id\":\"ephemeral\",\"label\":\"Working scratch state\",\"values\":[\"\",\"\",\"\"]}]},\"tunes\":{}},{\"id\":\"h-events\",\"type\":\"header\",\"data\":{\"text\":\"Step 2 — Convert the runner mindset into a session-and-events mindset\",\"level\":2},\"tunes\":{}},{\"id\":\"p-events-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"SDK applications often think in terms of calling run and receiving a result. The Agents API thinks in terms of a durable session whose turns can run asynchronously. A message to an idle session starts work; a message during an active turn can steer it. Progress arrives through streaming or webhooks.\"},\"tunes\":{}},{\"id\":\"p-events-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"This affects application architecture. Long-running production work should not depend on one HTTP request remaining alive. Your product needs stable session identifiers, lifecycle persistence, webhook verification, idempotent handlers and a way to reconcile current session state after process restarts.\"},\"tunes\":{}},{\"id\":\"h-functions\",\"type\":\"header\",\"data\":{\"text\":\"Step 3 — Redesign function tools around required actions\",\"level\":2},\"tunes\":{}},{\"id\":\"p-functions-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"Function tools remain an important application boundary. You define the function and its JSON schema in the agent configuration. When the harness needs the function, the session can enter an action-required state. Your application retrieves the required action, executes the business logic and returns the result.\"},\"tunes\":{}},{\"id\":\"p-functions-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"That means the function implementation should be safe to resume. A webhook may be delivered while another worker is processing. A network failure can occur after the external side effect but before the result is returned. Migration is therefore a good moment to add call IDs, idempotency keys, explicit authorization, timeout policies and audit records to consequential tools.\"},\"tunes\":{}},{\"id\":\"tool-trap\",\"type\":\"callout\",\"data\":{\"variant\":\"warning\",\"title\":\"Tool migration trap\",\"body\":\"Do not treat a function call from the managed harness as authorization to perform the action. The harness decides \u003Cem>what it wants to call\u003C\u002Fem>; your application still decides whether the current user, session and business state allow that action.\"},\"tunes\":{}},{\"id\":\"h-environment\",\"type\":\"header\",\"data\":{\"text\":\"Step 4 — Decide where execution should happen\",\"level\":2},\"tunes\":{}},{\"id\":\"p-env-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"The Agents API separates the managed harness from the execution environment. An agent can operate without a dedicated environment, in an OpenAI-hosted sandbox, or through a self-hosted environment connected to the session.\"},\"tunes\":{}},{\"id\":\"p-env-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"This creates a migration decision that SDK applications may never have made explicitly: which code should run as an application function, which code belongs in a sandbox, and which workloads require infrastructure you control?\"},\"tunes\":{}},{\"id\":\"environment-table\",\"type\":\"table\",\"data\":{\"withHeadings\":true,\"stretched\":false,\"content\":[[\"Need\",\"Likely boundary\"],[\"Call an existing internal service through controlled business logic\",\"Function tool handled by your application\"],[\"Run isolated code or work with temporary files without private infrastructure\",\"OpenAI-hosted environment\"],[\"Access private network resources, custom system software or controlled local compute\",\"Self-hosted environment\"],[\"Persist accepted product artifacts\",\"Application-owned storage, not only sandbox filesystem\"],[\"Execute a high-impact business side effect\",\"Application function with authorization and audit controls\"]]},\"tunes\":{}},{\"id\":\"h-recovery\",\"type\":\"header\",\"data\":{\"text\":\"Step 5 — Replace implicit recovery with explicit lifecycle handling\",\"level\":2},\"tunes\":{}},{\"id\":\"p-recovery-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"The managed harness provides session-level recovery, but your application still owns every external dependency around it. Self-hosted environments need provisioning, reconnection and shutdown. Function handlers can fail. Webhooks can be retried. Product-side state can change while an agent is idle.\"},\"tunes\":{}},{\"id\":\"p-recovery-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"Migration therefore needs two recovery models: agent-runtime recovery and business-operation recovery. The first is increasingly managed by the Agents API. The second remains your responsibility.\"},\"tunes\":{}},{\"id\":\"h-observability\",\"type\":\"header\",\"data\":{\"text\":\"Step 6 — Rebuild observability around the new trace boundary\",\"level\":2},\"tunes\":{}},{\"id\":\"p-obs-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"Agents API sessions expose events, saved history, turns, tool calls, subagents and token usage. OpenAI also provides session logs in the platform and trace export.\"},\"tunes\":{}},{\"id\":\"p-obs-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"Do not discard your application observability because platform traces improved. Product logs still need to connect the agent session to user identity, authorization decision, domain object, tool side effect, approval record and final accepted result. The useful production trace is the join between agent-runtime evidence and business-runtime evidence.\"},\"tunes\":{}},{\"id\":\"ref-reliability\",\"type\":\"referralArticle\",\"data\":{\"url\":\"https:\u002F\u002Fstajic.de\u002Fblog\u002Fai-agent-reliability-why-the-final-answer-is-not-enough\",\"title\":\"AI Agent Reliability: Why the Final Answer Is Not Enough\",\"excerpt\":\"Agent reliability depends on the execution path, tools and intermediate decisions — not only the final output.\",\"ctaLabel\":\"Read the reliability article\"},\"tunes\":{}},{\"id\":\"h-evals\",\"type\":\"header\",\"data\":{\"text\":\"Step 7 — Preserve evals before changing the runtime\",\"level\":2},\"tunes\":{}},{\"id\":\"p-evals-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"A migration can appear successful because the new system still produces plausible answers while silently changing tool choice, session continuity, handoff behaviour, latency or failure recovery. Build the behavioural baseline before switching runtimes.\"},\"tunes\":{}},{\"id\":\"p-evals-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"The baseline should include representative tasks, expected tool calls, forbidden actions, approval points, state continuity, recovery scenarios and final-output acceptance criteria. Run the old and new architectures against the same cases wherever possible.\"},\"tunes\":{}},{\"id\":\"h-proof\",\"type\":\"header\",\"data\":{\"text\":\"The Migration Proof Test\",\"level\":2},\"tunes\":{}},{\"id\":\"proof-flow\",\"type\":\"processFlow\",\"data\":{\"title\":\"Prove the new runtime before cutting over\",\"orientation\":\"auto\",\"steps\":[{\"label\":\"1. Freeze the behavioural baseline\",\"description\":\"Capture representative SDK traces, expected outputs, tool paths, approval points and failure cases.\"},{\"label\":\"2. Inventory state ownership\",\"description\":\"Mark each state field as agent-session state, authoritative domain state, durable artifact or ephemeral working state.\"},{\"label\":\"3. Reuse stable tool implementations\",\"description\":\"Keep business functions behind application interfaces; replace only the agent-facing integration where possible.\"},{\"label\":\"4. Build one Agents API vertical slice\",\"description\":\"Migrate one production-shaped workflow including session creation, tools, events, environment and persistence.\"},{\"label\":\"5. Inject interruptions\",\"description\":\"Test process restart, webhook retry, function timeout, self-hosted environment reconnect and stale domain state.\"},{\"label\":\"6. Compare traces, not only answers\",\"description\":\"Verify tool choice, authorization, evidence path, state transitions and side effects against the baseline.\"},{\"label\":\"7. Run shadow traffic\",\"description\":\"Where feasible, replay or mirror representative tasks before making the new runtime authoritative.\"},{\"label\":\"8. Cut over behind a reversible boundary\",\"description\":\"Keep integration adapters and rollback capability until production behaviour is stable.\"}]},\"tunes\":{}},{\"id\":\"h-metrics\",\"type\":\"header\",\"data\":{\"text\":\"What to measure during migration\",\"level\":2},\"tunes\":{}},{\"id\":\"metrics-table\",\"type\":\"table\",\"data\":{\"withHeadings\":true,\"stretched\":false,\"content\":[[\"Dimension\",\"Migration check\"],[\"Task success\",\"Does the new runtime meet the same or better acceptance criteria?\"],[\"Tool correctness\",\"Does it call the right tool with valid arguments and authorization?\"],[\"State continuity\",\"Can work resume across turns, restarts and asynchronous waits?\"],[\"Recovery\",\"What happens after webhook loss, handler failure, environment disconnect or timeout?\"],[\"Traceability\",\"Can every consequential action be joined to session, user, tool call and domain object?\"],[\"Context behaviour\",\"Do long-running sessions preserve constraints without carrying stale application truth?\"],[\"Latency\",\"How do session startup, environment provisioning and multi-turn work affect user-visible time?\"],[\"Cost\",\"What changes in model usage, sandbox usage, repeated context and infrastructure operations?\"],[\"Operational load\",\"Which previously application-owned responsibilities actually disappeared, and which merely moved?\"]]},\"tunes\":{}},{\"id\":\"h-not-yet\",\"type\":\"header\",\"data\":{\"text\":\"When not to migrate yet\",\"level\":2},\"tunes\":{}},{\"id\":\"p-not-yet-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"An existing Agents SDK application does not become bad architecture simply because the platform direction changed. OpenAI continues maintenance, security fixes, critical bug fixes and compatibility work. If the application is stable, well evaluated and has no blocked roadmap requirement, an immediate runtime migration may not be justified.\"},\"tunes\":{}},{\"id\":\"not-yet-list\",\"type\":\"list\",\"data\":{\"style\":\"unordered\",\"meta\":{},\"items\":[\"A required SDK capability is not yet available in the Agents API.\",\"The migration would disrupt a critical production period without delivering near-term value.\",\"The application depends on custom orchestration semantics that have not been validated on the managed harness.\",\"Provider portability is a hard requirement and the current SDK abstraction is materially valuable.\",\"Your team has not yet separated business state from agent runtime state, making cutover unsafe.\",\"The new Agents API behaviour has not been tested against representative production workloads.\"]},\"tunes\":{}},{\"id\":\"h-when\",\"type\":\"header\",\"data\":{\"text\":\"When the migration becomes strategically important\",\"level\":2},\"tunes\":{}},{\"id\":\"p-when-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"Migration becomes more compelling when product requirements align with the managed harness: durable long-running work, platform-managed context compaction and recovery, newer agent-runtime capabilities, sandboxed execution, richer hosted lifecycle management, or a desire to reduce the amount of orchestration code your application operates.\"},\"tunes\":{}},{\"id\":\"p-when-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"The strongest signal is not “the old SDK is feature complete.” It is “our roadmap now depends on capabilities whose natural home is the managed Agents API runtime.”\"},\"tunes\":{}},{\"id\":\"h-change\",\"type\":\"header\",\"data\":{\"text\":\"What would change this answer?\",\"level\":2},\"tunes\":{}},{\"id\":\"p-change-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"The migration strategy would change if OpenAI publishes automated migration tooling, introduces explicit compatibility layers, changes Agents API session semantics, expands or narrows self-hosted environment support, or changes the support policy for the Agents SDK.\"},\"tunes\":{}},{\"id\":\"p-change-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"It would also change if your product requirements change. A simple request-response assistant may not need a durable managed harness at all. A long-running coding, research or operations agent can benefit much more from the Agents API ownership model.\"},\"tunes\":{}},{\"id\":\"h-limitations\",\"type\":\"header\",\"data\":{\"text\":\"Limitations\",\"level\":2},\"tunes\":{}},{\"id\":\"p-limit-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"There is no universal one-to-one SDK-to-API migration map because applications use the Agents SDK differently. Some rely heavily on sessions and handoffs; others use it as a thin runner around function tools. The correct migration depends on which responsibilities your application actually owns today.\"},\"tunes\":{}},{\"id\":\"p-limit-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"The Agents API is also in public beta, so implementation details can evolve. Treat the ownership principles in this article as more durable than any individual endpoint shape.\"},\"tunes\":{}},{\"id\":\"h-conclusion\",\"type\":\"header\",\"data\":{\"text\":\"Conclusion\",\"level\":2},\"tunes\":{}},{\"id\":\"p-conclusion-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"Migrating from the Agents SDK to the Agents API is best understood as moving the agent-runtime boundary. The managed harness takes over more of the loop, session continuity, compaction and recovery. Your application should become more explicit about the responsibilities that remain yours: domain truth, authorization, function side effects, artifacts, auditability and product lifecycle.\"},\"tunes\":{}},{\"id\":\"p-conclusion-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"If a migration leaves all of the old orchestration machinery in place and merely replaces SDK calls with Agents API calls, it has probably missed the architectural opportunity. The goal is not to reproduce the old runtime on top of the new one. The goal is to decide which runtime responsibilities no longer belong in your application.\"},\"tunes\":{}},{\"id\":\"h-faq\",\"type\":\"header\",\"data\":{\"text\":\"FAQ\",\"level\":2},\"tunes\":{}},{\"id\":\"faq\",\"type\":\"faq\",\"data\":{\"title\":\"Migrating from Agents SDK to Agents API\",\"items\":[{\"id\":\"faq1\",\"question\":\"Is migrating from the Agents SDK to the Agents API just an API rewrite?\",\"answer\":\"No. The main change is runtime ownership: the Agents SDK runs the agent loop in your application, while the Agents API runs a managed Codex harness and durable session. State, lifecycle, event handling and recovery should be reviewed as architecture concerns.\"},{\"id\":\"faq2\",\"question\":\"Do my function tools need to be rewritten?\",\"answer\":\"The business implementation often can be reused if it is already behind a stable application interface. The agent-facing integration changes because Agents API function calls are handled through session required actions and results.\"},{\"id\":\"faq3\",\"question\":\"Should I move business state into the Agents API session?\",\"answer\":\"Generally no. Keep authoritative business and product state in your own databases or services. Use the agent session for agent continuity and working context, not as the sole source of truth for your product.\"},{\"id\":\"faq4\",\"question\":\"Do I need webhooks for the Agents API?\",\"answer\":\"Not always, because streaming is also available. Webhooks are especially useful for long-running or asynchronous sessions where your application should react to lifecycle changes without holding an open stream.\"},{\"id\":\"faq5\",\"question\":\"Should every existing Agents SDK application migrate now?\",\"answer\":\"No. The SDK remains supported in maintenance mode. Migrate when the new runtime provides meaningful roadmap value and after required behaviour has been validated against production-shaped evals.\"}]},\"tunes\":{}},{\"id\":\"h-glossary\",\"type\":\"header\",\"data\":{\"text\":\"Glossary\",\"level\":2},\"tunes\":{}},{\"id\":\"glossary\",\"type\":\"glossary\",\"data\":{\"title\":\"Key migration terms\",\"entries\":[{\"term\":\"Runtime boundary\",\"definition\":\"The division of responsibility between the platform-managed agent runtime and the application-owned runtime.\",\"anchor\":\"runtime-boundary\"},{\"term\":\"Harness\",\"definition\":\"The agent runtime that coordinates model calls, tools, context, orchestration and continued execution.\",\"anchor\":\"harness\"},{\"term\":\"Session\",\"definition\":\"A durable Agents API instance that holds an agent's configuration, conversation and saved work across turns.\",\"anchor\":\"session\"},{\"term\":\"Required action\",\"definition\":\"A session state in which the Agents API needs external input such as a function result or environment connection before work can continue.\",\"anchor\":\"required-action\"},{\"term\":\"Self-hosted environment\",\"definition\":\"An execution environment operated by your infrastructure and connected to the managed Agents API harness.\",\"anchor\":\"self-hosted-environment\"},{\"term\":\"Migration proof test\",\"definition\":\"A staged validation method that compares the new runtime against behavioural baselines, failure injections, traces and reversible cutover criteria.\",\"anchor\":\"migration-proof-test\"}]},\"tunes\":{}},{\"id\":\"h-sources\",\"type\":\"header\",\"data\":{\"text\":\"Primary sources and further reading\",\"level\":2},\"tunes\":{}},{\"id\":\"src-sdk\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents\u002Fsdk\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Agents SDK\",\"description\":\"Current support policy: the Agents SDK is feature complete, remains maintained, and new applications should start with the Agents API.\"}},\"tunes\":{}},{\"id\":\"src-running-sdk\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents\u002Frunning-agents\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Running agents with the Agents SDK\",\"description\":\"Documentation of the SDK application-owned agent loop and continuation model.\"}},\"tunes\":{}},{\"id\":\"src-api-overview\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Foverview\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Agents API overview\",\"description\":\"Defines the Agents API core concepts: agent, environment, session, events and items.\"}},\"tunes\":{}},{\"id\":\"src-api-architecture\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Farchitecture\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Agents API architecture\",\"description\":\"Explains the hosted harness, application server, OpenAI-hosted and self-hosted execution environment boundaries.\"}},\"tunes\":{}},{\"id\":\"src-api-config\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fconfiguration\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Configuring Agents\",\"description\":\"Defines reusable agent configuration and session-level customization.\"}},\"tunes\":{}},{\"id\":\"src-api-sessions\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fsessions\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Run and continue sessions\",\"description\":\"Documents durable sessions, asynchronous turns, streaming and steering.\"}},\"tunes\":{}},{\"id\":\"src-api-functions\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Ftools\u002Ffunctions\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Agents API Functions\",\"description\":\"Function-tool definition and the application handler boundary for required function results.\"}},\"tunes\":{}},{\"id\":\"src-api-webhooks\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fsessions\u002Fwebhooks\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Session webhooks\",\"description\":\"Lifecycle events for asynchronous sessions, required actions and self-hosted environment connections.\"}},\"tunes\":{}},{\"id\":\"src-api-observability\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fobservability\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Agents API observability and usage\",\"description\":\"Session logs, events, turns, tool calls, subagents, traces and token-usage inspection.\"}},\"tunes\":{}},{\"id\":\"intro\",\"type\":\"paragraph\",\"data\":{\"text\":\"Migrating from the OpenAI Agents SDK to the Agents API is not an import rename. The core architectural boundary changes: the SDK runs the agent loop inside your application, while the Agents API runs a managed Codex harness and durable session on OpenAI's side. The migration question is therefore not “Which classes map to which endpoints?” but “Which runtime responsibilities move across the boundary, which stay in our application, and which need to be redesigned?”\"},\"tunes\":{}},{\"id\":\"direct\",\"type\":\"callout\",\"data\":{\"variant\":\"info\",\"title\":\"Direct answer\",\"body\":\"\u003Cstrong>A real Agents SDK → Agents API migration changes runtime ownership.\u003C\u002Fstrong> Your reusable agent configuration can still contain model, instructions and tools, but the loop, durable session, orchestration, context compaction and recovery move toward the managed Agents API runtime. Your application should keep domain state, authorization, business rules, function implementations and audit logic outside the agent session. Treat the migration as a boundary redesign, not a mechanical code conversion.\"},\"tunes\":{}},{\"id\":\"current\",\"type\":\"callout\",\"data\":{\"variant\":\"warning\",\"title\":\"Current as of 25 September 2026\",\"body\":\"OpenAI currently marks the Agents SDK as \u003Cstrong>feature complete\u003C\u002Fstrong> and recommends the Agents API for new agent applications. The Agents API is in public beta. Existing SDK applications remain supported, and immediate migration is not automatically required.\"},\"tunes\":{}},{\"id\":\"model-note\",\"type\":\"callout\",\"data\":{\"variant\":\"note\",\"title\":\"About the migration model\",\"body\":\"The Runtime Boundary Migration Map and Migration Proof Test in this article are practical architecture tools, not official OpenAI migration frameworks. They are derived from the current runtime differences documented by OpenAI.\"},\"tunes\":{}},{\"id\":\"toc\",\"type\":\"tableOfContents\",\"data\":{\"title\":\"Contents\",\"minLevel\":2,\"maxLevel\":3},\"tunes\":{}},{\"id\":\"h-boundary\",\"type\":\"header\",\"data\":{\"text\":\"The migration is from an application-owned loop to a managed harness\",\"level\":2},\"tunes\":{}},{\"id\":\"p-boundary-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"In the Agents SDK, one run is an application-level turn. The SDK runner calls the model, inspects the output, executes tools, follows handoffs and continues until it reaches a stopping point. Your process hosts that loop and therefore owns its lifecycle.\"},\"tunes\":{}},{\"id\":\"p-boundary-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"In the Agents API, OpenAI runs the harness. A session is a durable instance of an agent configuration that accepts tasks, produces events, can pause for required actions, and can continue over time. OpenAI manages sessions, orchestration, context compaction and recovery; your application sends work, handles function tools, receives events and optionally manages a self-hosted execution environment.\"},\"tunes\":{}},{\"id\":\"p-boundary-3\",\"type\":\"paragraph\",\"data\":{\"text\":\"That ownership shift is the migration. Everything else — API syntax, tool schemas, event handling, session IDs — follows from it.\"},\"tunes\":{}},{\"id\":\"h-map\",\"type\":\"header\",\"data\":{\"text\":\"The Runtime Boundary Migration Map\",\"level\":2},\"tunes\":{}},{\"id\":\"migration-map\",\"type\":\"table\",\"data\":{\"withHeadings\":true,\"stretched\":false,\"content\":[[\"Concern\",\"Agents SDK\",\"Agents API migration target\"],[\"Agent loop\",\"Runs in your application through the SDK runner\",\"Runs in the managed Codex harness\"],[\"Reusable agent definition\",\"Agent object in application code\",\"Saved or inline agent configuration with model, instructions and tools\"],[\"Conversation \u002F work continuity\",\"SDK session strategy, history, result continuation or application storage\",\"Durable Agents API session\"],[\"Tool execution\",\"SDK coordinates tool calls in your runtime\",\"Harness requests function calls; your application returns results\"],[\"Context management\",\"Your runtime \u002F SDK session strategy\",\"Managed session context, compaction and recovery, plus your own application data boundaries\"],[\"Handoffs \u002F specialists\",\"SDK orchestration primitives\",\"Harness \u002F subagent behaviour in Agents API; do not assume one-to-one semantics\"],[\"Execution environment\",\"Your application runtime or tool-specific environment\",\"Optional OpenAI-hosted or self-hosted environment attached to the session\"],[\"Streaming\",\"SDK streaming from the run\",\"Agents API session event stream\"],[\"Async lifecycle\",\"Usually application-managed around the SDK run\",\"Native session states, asynchronous turns and webhooks\"],[\"Tracing \u002F observability\",\"Agents SDK tracing and application logs\",\"Agents session logs, events, turns, tool calls, subagents and exportable traces\"],[\"Recovery\",\"Application responsibility\",\"Managed harness\u002Fsession recovery plus application-owned recovery for external systems and self-hosted environments\"]]},\"tunes\":{}},{\"id\":\"h-conceptual\",\"type\":\"header\",\"data\":{\"text\":\"What can migrate conceptually without changing ownership\",\"level\":2},\"tunes\":{}},{\"id\":\"p-conceptual-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"Several application concepts survive the migration cleanly even though their representation changes. Models, instructions, JSON-schema function definitions, MCP access, tool descriptions and structured output requirements are still agent configuration concerns.\"},\"tunes\":{}},{\"id\":\"p-conceptual-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"OpenAI's Agents API configuration model explicitly defines an agent through model, instructions, tools, reasoning and output behaviour. Function tools remain application code: the harness requests a function call, and your handler returns the result. OpenAI also notes that function implementations used with the Responses API can be reused with the Agents API session flow.\"},\"tunes\":{}},{\"id\":\"good-candidate\",\"type\":\"callout\",\"data\":{\"variant\":\"success\",\"title\":\"Good migration candidate\",\"body\":\"A pure business function such as \u003Ccode>get_customer(customer_id)\u003C\u002Fcode> should not need to know whether the caller is the Agents SDK or the Agents API. Keep its domain logic behind a stable application interface and migrate only the agent-facing adapter.\"},\"tunes\":{}},{\"id\":\"h-no-one\",\"type\":\"header\",\"data\":{\"text\":\"What should not be migrated one-to-one\",\"level\":2},\"tunes\":{}},{\"id\":\"p-no-one-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"The dangerous migration pattern is to recreate every SDK runtime abstraction inside the Agents API. That can leave you paying for a managed harness while still operating a shadow harness in your application.\"},\"tunes\":{}},{\"id\":\"no-one-table\",\"type\":\"table\",\"data\":{\"withHeadings\":true,\"stretched\":false,\"content\":[[\"SDK-era assumption\",\"Why a direct copy is risky\",\"Migration question\"],[\"Application loop owns every continuation\",\"The Agents API already owns the harness loop\",\"Which continuation logic is product logic, and which should move to the managed session?\"],[\"Local session object is the primary continuity mechanism\",\"Agents API sessions are durable resources with their own lifecycle\",\"Which state belongs in the session versus the product database?\"],[\"Every interruption is handled synchronously\",\"Agents API turns are asynchronous and can surface action_required states\",\"Which actions need webhooks, workers, idempotency and resumable handlers?\"],[\"All tool execution happens where the SDK process runs\",\"Function handlers and execution environments can be separate\",\"Where should each tool actually execute?\"],[\"SDK trace is the operational timeline\",\"Agents API exposes session events, turns and managed traces\",\"What application-level audit data still needs its own record?\"],[\"Handoff object maps directly to a hosted subagent model\",\"Runtime semantics can differ\",\"What user-visible ownership and specialist behaviour must be preserved, not merely the old class structure?\"]]},\"tunes\":{}},{\"id\":\"h-domain\",\"type\":\"header\",\"data\":{\"text\":\"Step 1 — Separate domain state from agent session state\",\"level\":2},\"tunes\":{}},{\"id\":\"p-domain-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"Before touching API calls, classify the state your SDK application currently carries. Some state exists only to keep the agent conversation moving. Other state is business truth: user permissions, project status, order data, workflow approval, customer records, document versions, policy state or application configuration.\"},\"tunes\":{}},{\"id\":\"p-domain-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"The second category should not become dependent on an Agents API session. A durable session is useful continuity for the agent; it is not a replacement for your product's source of truth. If the session disappears, expires, is rebuilt, or changes implementation, your application must still know what is true.\"},\"tunes\":{}},{\"id\":\"state-test\",\"type\":\"comparison\",\"data\":{\"title\":\"State placement test\",\"layout\":\"table\",\"columns\":[{\"id\":\"type\",\"label\":\"State type\"},{\"id\":\"place\",\"label\":\"Preferred owner\"},{\"id\":\"reason\",\"label\":\"Reason\"}],\"rows\":[{\"id\":\"conversation\",\"label\":\"Conversation continuity\",\"values\":[\"\",\"\",\"\"]},{\"id\":\"domain\",\"label\":\"Business truth\",\"values\":[\"\",\"\",\"\"]},{\"id\":\"artifact\",\"label\":\"Durable artifact\",\"values\":[\"\",\"\",\"\"]},{\"id\":\"ephemeral\",\"label\":\"Working scratch state\",\"values\":[\"\",\"\",\"\"]}]},\"tunes\":{}},{\"id\":\"h-events\",\"type\":\"header\",\"data\":{\"text\":\"Step 2 — Convert the runner mindset into a session-and-events mindset\",\"level\":2},\"tunes\":{}},{\"id\":\"p-events-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"SDK applications often think in terms of calling run and receiving a result. The Agents API thinks in terms of a durable session whose turns can run asynchronously. A message to an idle session starts work; a message during an active turn can steer it. Progress arrives through streaming or webhooks.\"},\"tunes\":{}},{\"id\":\"p-events-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"This affects application architecture. Long-running production work should not depend on one HTTP request remaining alive. Your product needs stable session identifiers, lifecycle persistence, webhook verification, idempotent handlers and a way to reconcile current session state after process restarts.\"},\"tunes\":{}},{\"id\":\"h-functions\",\"type\":\"header\",\"data\":{\"text\":\"Step 3 — Redesign function tools around required actions\",\"level\":2},\"tunes\":{}},{\"id\":\"p-functions-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"Function tools remain an important application boundary. You define the function and its JSON schema in the agent configuration. When the harness needs the function, the session can enter an action-required state. Your application retrieves the required action, executes the business logic and returns the result.\"},\"tunes\":{}},{\"id\":\"p-functions-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"That means the function implementation should be safe to resume. A webhook may be delivered while another worker is processing. A network failure can occur after the external side effect but before the result is returned. Migration is therefore a good moment to add call IDs, idempotency keys, explicit authorization, timeout policies and audit records to consequential tools.\"},\"tunes\":{}},{\"id\":\"tool-trap\",\"type\":\"callout\",\"data\":{\"variant\":\"warning\",\"title\":\"Tool migration trap\",\"body\":\"Do not treat a function call from the managed harness as authorization to perform the action. The harness decides \u003Cem>what it wants to call\u003C\u002Fem>; your application still decides whether the current user, session and business state allow that action.\"},\"tunes\":{}},{\"id\":\"h-environment\",\"type\":\"header\",\"data\":{\"text\":\"Step 4 — Decide where execution should happen\",\"level\":2},\"tunes\":{}},{\"id\":\"p-env-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"The Agents API separates the managed harness from the execution environment. An agent can operate without a dedicated environment, in an OpenAI-hosted sandbox, or through a self-hosted environment connected to the session.\"},\"tunes\":{}},{\"id\":\"p-env-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"This creates a migration decision that SDK applications may never have made explicitly: which code should run as an application function, which code belongs in a sandbox, and which workloads require infrastructure you control?\"},\"tunes\":{}},{\"id\":\"environment-table\",\"type\":\"table\",\"data\":{\"withHeadings\":true,\"stretched\":false,\"content\":[[\"Need\",\"Likely boundary\"],[\"Call an existing internal service through controlled business logic\",\"Function tool handled by your application\"],[\"Run isolated code or work with temporary files without private infrastructure\",\"OpenAI-hosted environment\"],[\"Access private network resources, custom system software or controlled local compute\",\"Self-hosted environment\"],[\"Persist accepted product artifacts\",\"Application-owned storage, not only sandbox filesystem\"],[\"Execute a high-impact business side effect\",\"Application function with authorization and audit controls\"]]},\"tunes\":{}},{\"id\":\"h-recovery\",\"type\":\"header\",\"data\":{\"text\":\"Step 5 — Replace implicit recovery with explicit lifecycle handling\",\"level\":2},\"tunes\":{}},{\"id\":\"p-recovery-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"The managed harness provides session-level recovery, but your application still owns every external dependency around it. Self-hosted environments need provisioning, reconnection and shutdown. Function handlers can fail. Webhooks can be retried. Product-side state can change while an agent is idle.\"},\"tunes\":{}},{\"id\":\"p-recovery-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"Migration therefore needs two recovery models: agent-runtime recovery and business-operation recovery. The first is increasingly managed by the Agents API. The second remains your responsibility.\"},\"tunes\":{}},{\"id\":\"h-observability\",\"type\":\"header\",\"data\":{\"text\":\"Step 6 — Rebuild observability around the new trace boundary\",\"level\":2},\"tunes\":{}},{\"id\":\"p-obs-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"Agents API sessions expose events, saved history, turns, tool calls, subagents and token usage. OpenAI also provides session logs in the platform and trace export.\"},\"tunes\":{}},{\"id\":\"p-obs-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"Do not discard your application observability because platform traces improved. Product logs still need to connect the agent session to user identity, authorization decision, domain object, tool side effect, approval record and final accepted result. The useful production trace is the join between agent-runtime evidence and business-runtime evidence.\"},\"tunes\":{}},{\"id\":\"ref-reliability\",\"type\":\"referralArticle\",\"data\":{\"url\":\"https:\u002F\u002Fstajic.de\u002Fblog\u002Fai-agent-reliability-why-the-final-answer-is-not-enough\",\"title\":\"AI Agent Reliability: Why the Final Answer Is Not Enough\",\"excerpt\":\"Agent reliability depends on the execution path, tools and intermediate decisions — not only the final output.\",\"ctaLabel\":\"Read the reliability article\"},\"tunes\":{}},{\"id\":\"h-evals\",\"type\":\"header\",\"data\":{\"text\":\"Step 7 — Preserve evals before changing the runtime\",\"level\":2},\"tunes\":{}},{\"id\":\"p-evals-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"A migration can appear successful because the new system still produces plausible answers while silently changing tool choice, session continuity, handoff behaviour, latency or failure recovery. Build the behavioural baseline before switching runtimes.\"},\"tunes\":{}},{\"id\":\"p-evals-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"The baseline should include representative tasks, expected tool calls, forbidden actions, approval points, state continuity, recovery scenarios and final-output acceptance criteria. Run the old and new architectures against the same cases wherever possible.\"},\"tunes\":{}},{\"id\":\"h-proof\",\"type\":\"header\",\"data\":{\"text\":\"The Migration Proof Test\",\"level\":2},\"tunes\":{}},{\"id\":\"proof-flow\",\"type\":\"processFlow\",\"data\":{\"title\":\"Prove the new runtime before cutting over\",\"orientation\":\"auto\",\"steps\":[{\"label\":\"1. Freeze the behavioural baseline\",\"description\":\"Capture representative SDK traces, expected outputs, tool paths, approval points and failure cases.\"},{\"label\":\"2. Inventory state ownership\",\"description\":\"Mark each state field as agent-session state, authoritative domain state, durable artifact or ephemeral working state.\"},{\"label\":\"3. Reuse stable tool implementations\",\"description\":\"Keep business functions behind application interfaces; replace only the agent-facing integration where possible.\"},{\"label\":\"4. Build one Agents API vertical slice\",\"description\":\"Migrate one production-shaped workflow including session creation, tools, events, environment and persistence.\"},{\"label\":\"5. Inject interruptions\",\"description\":\"Test process restart, webhook retry, function timeout, self-hosted environment reconnect and stale domain state.\"},{\"label\":\"6. Compare traces, not only answers\",\"description\":\"Verify tool choice, authorization, evidence path, state transitions and side effects against the baseline.\"},{\"label\":\"7. Run shadow traffic\",\"description\":\"Where feasible, replay or mirror representative tasks before making the new runtime authoritative.\"},{\"label\":\"8. Cut over behind a reversible boundary\",\"description\":\"Keep integration adapters and rollback capability until production behaviour is stable.\"}]},\"tunes\":{}},{\"id\":\"h-metrics\",\"type\":\"header\",\"data\":{\"text\":\"What to measure during migration\",\"level\":2},\"tunes\":{}},{\"id\":\"metrics-table\",\"type\":\"table\",\"data\":{\"withHeadings\":true,\"stretched\":false,\"content\":[[\"Dimension\",\"Migration check\"],[\"Task success\",\"Does the new runtime meet the same or better acceptance criteria?\"],[\"Tool correctness\",\"Does it call the right tool with valid arguments and authorization?\"],[\"State continuity\",\"Can work resume across turns, restarts and asynchronous waits?\"],[\"Recovery\",\"What happens after webhook loss, handler failure, environment disconnect or timeout?\"],[\"Traceability\",\"Can every consequential action be joined to session, user, tool call and domain object?\"],[\"Context behaviour\",\"Do long-running sessions preserve constraints without carrying stale application truth?\"],[\"Latency\",\"How do session startup, environment provisioning and multi-turn work affect user-visible time?\"],[\"Cost\",\"What changes in model usage, sandbox usage, repeated context and infrastructure operations?\"],[\"Operational load\",\"Which previously application-owned responsibilities actually disappeared, and which merely moved?\"]]},\"tunes\":{}},{\"id\":\"h-not-yet\",\"type\":\"header\",\"data\":{\"text\":\"When not to migrate yet\",\"level\":2},\"tunes\":{}},{\"id\":\"p-not-yet-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"An existing Agents SDK application does not become bad architecture simply because the platform direction changed. OpenAI continues maintenance, security fixes, critical bug fixes and compatibility work. If the application is stable, well evaluated and has no blocked roadmap requirement, an immediate runtime migration may not be justified.\"},\"tunes\":{}},{\"id\":\"not-yet-list\",\"type\":\"list\",\"data\":{\"style\":\"unordered\",\"meta\":{},\"items\":[\"A required SDK capability is not yet available in the Agents API.\",\"The migration would disrupt a critical production period without delivering near-term value.\",\"The application depends on custom orchestration semantics that have not been validated on the managed harness.\",\"Provider portability is a hard requirement and the current SDK abstraction is materially valuable.\",\"Your team has not yet separated business state from agent runtime state, making cutover unsafe.\",\"The new Agents API behaviour has not been tested against representative production workloads.\"]},\"tunes\":{}},{\"id\":\"h-when\",\"type\":\"header\",\"data\":{\"text\":\"When the migration becomes strategically important\",\"level\":2},\"tunes\":{}},{\"id\":\"p-when-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"Migration becomes more compelling when product requirements align with the managed harness: durable long-running work, platform-managed context compaction and recovery, newer agent-runtime capabilities, sandboxed execution, richer hosted lifecycle management, or a desire to reduce the amount of orchestration code your application operates.\"},\"tunes\":{}},{\"id\":\"p-when-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"The strongest signal is not “the old SDK is feature complete.” It is “our roadmap now depends on capabilities whose natural home is the managed Agents API runtime.”\"},\"tunes\":{}},{\"id\":\"h-change\",\"type\":\"header\",\"data\":{\"text\":\"What would change this answer?\",\"level\":2},\"tunes\":{}},{\"id\":\"p-change-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"The migration strategy would change if OpenAI publishes automated migration tooling, introduces explicit compatibility layers, changes Agents API session semantics, expands or narrows self-hosted environment support, or changes the support policy for the Agents SDK.\"},\"tunes\":{}},{\"id\":\"p-change-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"It would also change if your product requirements change. A simple request-response assistant may not need a durable managed harness at all. A long-running coding, research or operations agent can benefit much more from the Agents API ownership model.\"},\"tunes\":{}},{\"id\":\"h-limitations\",\"type\":\"header\",\"data\":{\"text\":\"Limitations\",\"level\":2},\"tunes\":{}},{\"id\":\"p-limit-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"There is no universal one-to-one SDK-to-API migration map because applications use the Agents SDK differently. Some rely heavily on sessions and handoffs; others use it as a thin runner around function tools. The correct migration depends on which responsibilities your application actually owns today.\"},\"tunes\":{}},{\"id\":\"p-limit-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"The Agents API is also in public beta, so implementation details can evolve. Treat the ownership principles in this article as more durable than any individual endpoint shape.\"},\"tunes\":{}},{\"id\":\"h-conclusion\",\"type\":\"header\",\"data\":{\"text\":\"Conclusion\",\"level\":2},\"tunes\":{}},{\"id\":\"p-conclusion-1\",\"type\":\"paragraph\",\"data\":{\"text\":\"Migrating from the Agents SDK to the Agents API is best understood as moving the agent-runtime boundary. The managed harness takes over more of the loop, session continuity, compaction and recovery. Your application should become more explicit about the responsibilities that remain yours: domain truth, authorization, function side effects, artifacts, auditability and product lifecycle.\"},\"tunes\":{}},{\"id\":\"p-conclusion-2\",\"type\":\"paragraph\",\"data\":{\"text\":\"If a migration leaves all of the old orchestration machinery in place and merely replaces SDK calls with Agents API calls, it has probably missed the architectural opportunity. The goal is not to reproduce the old runtime on top of the new one. The goal is to decide which runtime responsibilities no longer belong in your application.\"},\"tunes\":{}},{\"id\":\"h-faq\",\"type\":\"header\",\"data\":{\"text\":\"FAQ\",\"level\":2},\"tunes\":{}},{\"id\":\"faq\",\"type\":\"faq\",\"data\":{\"title\":\"Migrating from Agents SDK to Agents API\",\"items\":[{\"id\":\"faq1\",\"question\":\"Is migrating from the Agents SDK to the Agents API just an API rewrite?\",\"answer\":\"No. The main change is runtime ownership: the Agents SDK runs the agent loop in your application, while the Agents API runs a managed Codex harness and durable session. State, lifecycle, event handling and recovery should be reviewed as architecture concerns.\"},{\"id\":\"faq2\",\"question\":\"Do my function tools need to be rewritten?\",\"answer\":\"The business implementation often can be reused if it is already behind a stable application interface. The agent-facing integration changes because Agents API function calls are handled through session required actions and results.\"},{\"id\":\"faq3\",\"question\":\"Should I move business state into the Agents API session?\",\"answer\":\"Generally no. Keep authoritative business and product state in your own databases or services. Use the agent session for agent continuity and working context, not as the sole source of truth for your product.\"},{\"id\":\"faq4\",\"question\":\"Do I need webhooks for the Agents API?\",\"answer\":\"Not always, because streaming is also available. Webhooks are especially useful for long-running or asynchronous sessions where your application should react to lifecycle changes without holding an open stream.\"},{\"id\":\"faq5\",\"question\":\"Should every existing Agents SDK application migrate now?\",\"answer\":\"No. The SDK remains supported in maintenance mode. Migrate when the new runtime provides meaningful roadmap value and after required behaviour has been validated against production-shaped evals.\"}]},\"tunes\":{}},{\"id\":\"h-glossary\",\"type\":\"header\",\"data\":{\"text\":\"Glossary\",\"level\":2},\"tunes\":{}},{\"id\":\"glossary\",\"type\":\"glossary\",\"data\":{\"title\":\"Key migration terms\",\"entries\":[{\"term\":\"Runtime boundary\",\"definition\":\"The division of responsibility between the platform-managed agent runtime and the application-owned runtime.\",\"anchor\":\"runtime-boundary\"},{\"term\":\"Harness\",\"definition\":\"The agent runtime that coordinates model calls, tools, context, orchestration and continued execution.\",\"anchor\":\"harness\"},{\"term\":\"Session\",\"definition\":\"A durable Agents API instance that holds an agent's configuration, conversation and saved work across turns.\",\"anchor\":\"session\"},{\"term\":\"Required action\",\"definition\":\"A session state in which the Agents API needs external input such as a function result or environment connection before work can continue.\",\"anchor\":\"required-action\"},{\"term\":\"Self-hosted environment\",\"definition\":\"An execution environment operated by your infrastructure and connected to the managed Agents API harness.\",\"anchor\":\"self-hosted-environment\"},{\"term\":\"Migration proof test\",\"definition\":\"A staged validation method that compares the new runtime against behavioural baselines, failure injections, traces and reversible cutover criteria.\",\"anchor\":\"migration-proof-test\"}]},\"tunes\":{}},{\"id\":\"h-sources\",\"type\":\"header\",\"data\":{\"text\":\"Primary sources and further reading\",\"level\":2},\"tunes\":{}},{\"id\":\"src-sdk\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents\u002Fsdk\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Agents SDK\",\"description\":\"Current support policy: the Agents SDK is feature complete, remains maintained, and new applications should start with the Agents API.\"}},\"tunes\":{}},{\"id\":\"src-running-sdk\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents\u002Frunning-agents\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Running agents with the Agents SDK\",\"description\":\"Documentation of the SDK application-owned agent loop and continuation model.\"}},\"tunes\":{}},{\"id\":\"src-api-overview\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Foverview\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Agents API overview\",\"description\":\"Defines the Agents API core concepts: agent, environment, session, events and items.\"}},\"tunes\":{}},{\"id\":\"src-api-architecture\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Farchitecture\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Agents API architecture\",\"description\":\"Explains the hosted harness, application server, OpenAI-hosted and self-hosted execution environment boundaries.\"}},\"tunes\":{}},{\"id\":\"src-api-config\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fconfiguration\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Configuring Agents\",\"description\":\"Defines reusable agent configuration and session-level customization.\"}},\"tunes\":{}},{\"id\":\"src-api-sessions\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fsessions\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Run and continue sessions\",\"description\":\"Documents durable sessions, asynchronous turns, streaming and steering.\"}},\"tunes\":{}},{\"id\":\"src-api-functions\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Ftools\u002Ffunctions\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Agents API Functions\",\"description\":\"Function-tool definition and the application handler boundary for required function results.\"}},\"tunes\":{}},{\"id\":\"src-api-webhooks\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fsessions\u002Fwebhooks\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Session webhooks\",\"description\":\"Lifecycle events for asynchronous sessions, required actions and self-hosted environment connections.\"}},\"tunes\":{}},{\"id\":\"src-api-observability\",\"type\":\"linkTool\",\"data\":{\"link\":\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents-api\u002Fobservability\",\"meta\":{\"image\":{\"url\":\"\"},\"title\":\"OpenAI — Agents API observability and usage\",\"description\":\"Session logs, events, turns, tool calls, subagents, traces and token-usage inspection.\"}},\"tunes\":{}}],\"version\":\"2.31.6\"}",{"time":1989,"blocks":1990,"version":2854},1790352173087,[1991,1995,1999,2004,2009,2014,2018,2022,2026,2030,2034,2084,2088,2092,2096,2101,2105,2109,2141,2145,2149,2153,2177,2181,2185,2189,2193,2197,2201,2206,2210,2214,2218,2240,2244,2248,2252,2256,2260,2264,2271,2275,2279,2283,2287,2316,2320,2352,2356,2360,2371,2375,2379,2383,2387,2391,2395,2399,2403,2407,2411,2415,2419,2422,2442,2446,2467,2471,2477,2484,2491,2498,2505,2512,2518,2525,2532,2535,2538,2541,2544,2547,2550,2553,2556,2559,2562,2578,2581,2584,2587,2590,2593,2596,2607,2610,2613,2616,2632,2635,2638,2641,2644,2647,2650,2653,2656,2659,2662,2672,2675,2678,2681,2684,2687,2690,2693,2696,2699,2702,2705,2717,2720,2734,2737,2740,2745,2748,2751,2754,2757,2760,2763,2766,2769,2772,2775,2778,2781,2784,2793,2796,2806,2809,2814,2819,2824,2829,2834,2839,2844,2849],{"id":214,"data":1992,"type":219,"tunes":1994},{"title":1993,"maxLevel":217,"minLevel":218},"Contents",{},{"id":222,"data":1996,"type":225,"tunes":1998},{"text":1997},"Migrating from the OpenAI Agents SDK to the Agents API is not an import rename. The core architectural boundary changes: the SDK runs the agent loop inside your application, while the Agents API runs a managed Codex harness and durable session on OpenAI's side. The migration question is therefore not “Which classes map to which endpoints?” but “Which runtime responsibilities move across the boundary, which stay in our application, and which need to be redesigned?”",{},{"id":228,"data":2000,"type":233,"tunes":2003},{"body":2001,"title":2002,"variant":232},"\u003Cstrong>A real Agents SDK → Agents API migration changes runtime ownership.\u003C\u002Fstrong> Your reusable agent configuration can still contain model, instructions and tools, but the loop, durable session, orchestration, context compaction and recovery move toward the managed Agents API runtime. Your application should keep domain state, authorization, business rules, function implementations and audit logic outside the agent session. Treat the migration as a boundary redesign, not a mechanical code conversion.","Direct answer",{},{"id":236,"data":2005,"type":233,"tunes":2008},{"body":2006,"title":2007,"variant":240},"OpenAI currently marks the Agents SDK as \u003Cstrong>feature complete\u003C\u002Fstrong> and recommends the Agents API for new agent applications. The Agents API is in public beta. Existing SDK applications remain supported, and immediate migration is not automatically required.","Current as of 25 September 2026",{},{"id":243,"data":2010,"type":233,"tunes":2013},{"body":2011,"title":2012,"variant":247},"The Runtime Boundary Migration Map and Migration Proof Test in this article are practical architecture tools, not official OpenAI migration frameworks. They are derived from the current runtime differences documented by OpenAI.","About the migration model",{},{"id":250,"data":2015,"type":41,"tunes":2017},{"text":2016,"level":218},"The migration is from an application-owned loop to a managed harness",{},{"id":255,"data":2019,"type":225,"tunes":2021},{"text":2020},"In the Agents SDK, one run is an application-level turn. The SDK runner calls the model, inspects the output, executes tools, follows handoffs and continues until it reaches a stopping point. Your process hosts that loop and therefore owns its lifecycle.",{},{"id":260,"data":2023,"type":225,"tunes":2025},{"text":2024},"In the Agents API, OpenAI runs the harness. A session is a durable instance of an agent configuration that accepts tasks, produces events, can pause for required actions, and can continue over time. OpenAI manages sessions, orchestration, context compaction and recovery; your application sends work, handles function tools, receives events and optionally manages a self-hosted execution environment.",{},{"id":265,"data":2027,"type":225,"tunes":2029},{"text":2028},"That ownership shift is the migration. Everything else — API syntax, tool schemas, event handling, session IDs — follows from it.",{},{"id":270,"data":2031,"type":41,"tunes":2033},{"text":2032,"level":218},"The Runtime Boundary Migration Map",{},{"id":275,"data":2035,"type":326,"tunes":2083},{"content":2036,"stretched":42,"withHeadings":13},[2037,2040,2044,2048,2052,2056,2060,2064,2068,2071,2075,2079],[2038,280,2039],"Concern","Agents API migration target",[2041,2042,2043],"Agent loop","Runs in your application through the SDK runner","Runs in the managed Codex harness",[2045,2046,2047],"Reusable agent definition","Agent object in application code","Saved or inline agent configuration with model, instructions and tools",[2049,2050,2051],"Conversation \u002F work continuity","SDK session strategy, history, result continuation or application storage","Durable Agents API session",[2053,2054,2055],"Tool execution","SDK coordinates tool calls in your runtime","Harness requests function calls; your application returns results",[2057,2058,2059],"Context management","Your runtime \u002F SDK session strategy","Managed session context, compaction and recovery, plus your own application data boundaries",[2061,2062,2063],"Handoffs \u002F specialists","SDK orchestration primitives","Harness \u002F subagent behaviour in Agents API; do not assume one-to-one semantics",[2065,2066,2067],"Execution environment","Your application runtime or tool-specific environment","Optional OpenAI-hosted or self-hosted environment attached to the session",[311,2069,2070],"SDK streaming from the run","Agents API session event stream",[2072,2073,2074],"Async lifecycle","Usually application-managed around the SDK run","Native session states, asynchronous turns and webhooks",[2076,2077,2078],"Tracing \u002F observability","Agents SDK tracing and application logs","Agents session logs, events, turns, tool calls, subagents and exportable traces",[2080,2081,2082],"Recovery","Application responsibility","Managed harness\u002Fsession recovery plus application-owned recovery for external systems and self-hosted environments",{},{"id":329,"data":2085,"type":41,"tunes":2087},{"text":2086,"level":218},"What can migrate conceptually without changing ownership",{},{"id":334,"data":2089,"type":225,"tunes":2091},{"text":2090},"Several application concepts survive the migration cleanly even though their representation changes. Models, instructions, JSON-schema function definitions, MCP access, tool descriptions and structured output requirements are still agent configuration concerns.",{},{"id":339,"data":2093,"type":225,"tunes":2095},{"text":2094},"OpenAI's Agents API configuration model explicitly defines an agent through model, instructions, tools, reasoning and output behaviour. Function tools remain application code: the harness requests a function call, and your handler returns the result. OpenAI also notes that function implementations used with the Responses API can be reused with the Agents API session flow.",{},{"id":344,"data":2097,"type":233,"tunes":2100},{"body":2098,"title":2099,"variant":348},"A pure business function such as \u003Ccode>get_customer(customer_id)\u003C\u002Fcode> should not need to know whether the caller is the Agents SDK or the Agents API. Keep its domain logic behind a stable application interface and migrate only the agent-facing adapter.","Good migration candidate",{},{"id":351,"data":2102,"type":41,"tunes":2104},{"text":2103,"level":218},"What should not be migrated one-to-one",{},{"id":356,"data":2106,"type":225,"tunes":2108},{"text":2107},"The dangerous migration pattern is to recreate every SDK runtime abstraction inside the Agents API. That can leave you paying for a managed harness while still operating a shadow harness in your application.",{},{"id":361,"data":2110,"type":326,"tunes":2140},{"content":2111,"stretched":42,"withHeadings":13},[2112,2116,2120,2124,2128,2132,2136],[2113,2114,2115],"SDK-era assumption","Why a direct copy is risky","Migration question",[2117,2118,2119],"Application loop owns every continuation","The Agents API already owns the harness loop","Which continuation logic is product logic, and which should move to the managed session?",[2121,2122,2123],"Local session object is the primary continuity mechanism","Agents API sessions are durable resources with their own lifecycle","Which state belongs in the session versus the product database?",[2125,2126,2127],"Every interruption is handled synchronously","Agents API turns are asynchronous and can surface action_required states","Which actions need webhooks, workers, idempotency and resumable handlers?",[2129,2130,2131],"All tool execution happens where the SDK process runs","Function handlers and execution environments can be separate","Where should each tool actually execute?",[2133,2134,2135],"SDK trace is the operational timeline","Agents API exposes session events, turns and managed traces","What application-level audit data still needs its own record?",[2137,2138,2139],"Handoff object maps directly to a hosted subagent model","Runtime semantics can differ","What user-visible ownership and specialist behaviour must be preserved, not merely the old class structure?",{},{"id":394,"data":2142,"type":41,"tunes":2144},{"text":2143,"level":218},"Step 1 — Separate domain state from agent session state",{},{"id":399,"data":2146,"type":225,"tunes":2148},{"text":2147},"Before touching API calls, classify the state your SDK application currently carries. Some state exists only to keep the agent conversation moving. Other state is business truth: user permissions, project status, order data, workflow approval, customer records, document versions, policy state or application configuration.",{},{"id":404,"data":2150,"type":225,"tunes":2152},{"text":2151},"The second category should not become dependent on an Agents API session. A durable session is useful continuity for the agent; it is not a replacement for your product's source of truth. If the session disappears, expires, is rebuilt, or changes implementation, your application must still know what is true.",{},{"id":409,"data":2154,"type":440,"tunes":2176},{"rows":2155,"title":2168,"layout":326,"columns":2169},[2156,2159,2162,2165],{"id":413,"label":2157,"values":2158},"Conversation continuity",[416,416,416],{"id":418,"label":2160,"values":2161},"Business truth",[416,416,416],{"id":422,"label":2163,"values":2164},"Durable artifact",[416,416,416],{"id":426,"label":2166,"values":2167},"Working scratch state",[416,416,416],"State placement test",[2170,2172,2174],{"id":432,"label":2171},"State type",{"id":435,"label":2173},"Preferred owner",{"id":438,"label":2175},"Reason",{},{"id":443,"data":2178,"type":41,"tunes":2180},{"text":2179,"level":218},"Step 2 — Convert the runner mindset into a session-and-events mindset",{},{"id":448,"data":2182,"type":225,"tunes":2184},{"text":2183},"SDK applications often think in terms of calling run and receiving a result. The Agents API thinks in terms of a durable session whose turns can run asynchronously. A message to an idle session starts work; a message during an active turn can steer it. Progress arrives through streaming or webhooks.",{},{"id":453,"data":2186,"type":225,"tunes":2188},{"text":2187},"This affects application architecture. Long-running production work should not depend on one HTTP request remaining alive. Your product needs stable session identifiers, lifecycle persistence, webhook verification, idempotent handlers and a way to reconcile current session state after process restarts.",{},{"id":458,"data":2190,"type":41,"tunes":2192},{"text":2191,"level":218},"Step 3 — Redesign function tools around required actions",{},{"id":463,"data":2194,"type":225,"tunes":2196},{"text":2195},"Function tools remain an important application boundary. You define the function and its JSON schema in the agent configuration. When the harness needs the function, the session can enter an action-required state. Your application retrieves the required action, executes the business logic and returns the result.",{},{"id":468,"data":2198,"type":225,"tunes":2200},{"text":2199},"That means the function implementation should be safe to resume. A webhook may be delivered while another worker is processing. A network failure can occur after the external side effect but before the result is returned. Migration is therefore a good moment to add call IDs, idempotency keys, explicit authorization, timeout policies and audit records to consequential tools.",{},{"id":473,"data":2202,"type":233,"tunes":2205},{"body":2203,"title":2204,"variant":240},"Do not treat a function call from the managed harness as authorization to perform the action. The harness decides \u003Cem>what it wants to call\u003C\u002Fem>; your application still decides whether the current user, session and business state allow that action.","Tool migration trap",{},{"id":479,"data":2207,"type":41,"tunes":2209},{"text":2208,"level":218},"Step 4 — Decide where execution should happen",{},{"id":484,"data":2211,"type":225,"tunes":2213},{"text":2212},"The Agents API separates the managed harness from the execution environment. An agent can operate without a dedicated environment, in an OpenAI-hosted sandbox, or through a self-hosted environment connected to the session.",{},{"id":489,"data":2215,"type":225,"tunes":2217},{"text":2216},"This creates a migration decision that SDK applications may never have made explicitly: which code should run as an application function, which code belongs in a sandbox, and which workloads require infrastructure you control?",{},{"id":494,"data":2219,"type":326,"tunes":2239},{"content":2220,"stretched":42,"withHeadings":13},[2221,2224,2227,2230,2233,2236],[2222,2223],"Need","Likely boundary",[2225,2226],"Call an existing internal service through controlled business logic","Function tool handled by your application",[2228,2229],"Run isolated code or work with temporary files without private infrastructure","OpenAI-hosted environment",[2231,2232],"Access private network resources, custom system software or controlled local compute","Self-hosted environment",[2234,2235],"Persist accepted product artifacts","Application-owned storage, not only sandbox filesystem",[2237,2238],"Execute a high-impact business side effect","Application function with authorization and audit controls",{},{"id":517,"data":2241,"type":41,"tunes":2243},{"text":2242,"level":218},"Step 5 — Replace implicit recovery with explicit lifecycle handling",{},{"id":522,"data":2245,"type":225,"tunes":2247},{"text":2246},"The managed harness provides session-level recovery, but your application still owns every external dependency around it. Self-hosted environments need provisioning, reconnection and shutdown. Function handlers can fail. Webhooks can be retried. Product-side state can change while an agent is idle.",{},{"id":527,"data":2249,"type":225,"tunes":2251},{"text":2250},"Migration therefore needs two recovery models: agent-runtime recovery and business-operation recovery. The first is increasingly managed by the Agents API. The second remains your responsibility.",{},{"id":532,"data":2253,"type":41,"tunes":2255},{"text":2254,"level":218},"Step 6 — Rebuild observability around the new trace boundary",{},{"id":537,"data":2257,"type":225,"tunes":2259},{"text":2258},"Agents API sessions expose events, saved history, turns, tool calls, subagents and token usage. OpenAI also provides session logs in the platform and trace export.",{},{"id":542,"data":2261,"type":225,"tunes":2263},{"text":2262},"Do not discard your application observability because platform traces improved. Product logs still need to connect the agent session to user identity, authorization decision, domain object, tool side effect, approval record and final accepted result. The useful production trace is the join between agent-runtime evidence and business-runtime evidence.",{},{"id":547,"data":2265,"type":553,"tunes":2270},{"url":2266,"title":2267,"excerpt":2268,"ctaLabel":2269},"https:\u002F\u002Fstajic.de\u002Fblog\u002Fai-agent-reliability-why-the-final-answer-is-not-enough","AI Agent Reliability: Why the Final Answer Is Not Enough","Agent reliability depends on the execution path, tools and intermediate decisions — not only the final output.","Read the reliability article",{},{"id":556,"data":2272,"type":41,"tunes":2274},{"text":2273,"level":218},"Step 7 — Preserve evals before changing the runtime",{},{"id":561,"data":2276,"type":225,"tunes":2278},{"text":2277},"A migration can appear successful because the new system still produces plausible answers while silently changing tool choice, session continuity, handoff behaviour, latency or failure recovery. Build the behavioural baseline before switching runtimes.",{},{"id":566,"data":2280,"type":225,"tunes":2282},{"text":2281},"The baseline should include representative tasks, expected tool calls, forbidden actions, approval points, state continuity, recovery scenarios and final-output acceptance criteria. Run the old and new architectures against the same cases wherever possible.",{},{"id":571,"data":2284,"type":41,"tunes":2286},{"text":2285,"level":218},"The Migration Proof Test",{},{"id":576,"data":2288,"type":605,"tunes":2315},{"steps":2289,"title":2314,"orientation":604},[2290,2293,2296,2299,2302,2305,2308,2311],{"label":2291,"description":2292},"1. Freeze the behavioural baseline","Capture representative SDK traces, expected outputs, tool paths, approval points and failure cases.",{"label":2294,"description":2295},"2. Inventory state ownership","Mark each state field as agent-session state, authoritative domain state, durable artifact or ephemeral working state.",{"label":2297,"description":2298},"3. Reuse stable tool implementations","Keep business functions behind application interfaces; replace only the agent-facing integration where possible.",{"label":2300,"description":2301},"4. Build one Agents API vertical slice","Migrate one production-shaped workflow including session creation, tools, events, environment and persistence.",{"label":2303,"description":2304},"5. Inject interruptions","Test process restart, webhook retry, function timeout, self-hosted environment reconnect and stale domain state.",{"label":2306,"description":2307},"6. Compare traces, not only answers","Verify tool choice, authorization, evidence path, state transitions and side effects against the baseline.",{"label":2309,"description":2310},"7. Run shadow traffic","Where feasible, replay or mirror representative tasks before making the new runtime authoritative.",{"label":2312,"description":2313},"8. Cut over behind a reversible boundary","Keep integration adapters and rollback capability until production behaviour is stable.","Prove the new runtime before cutting over",{},{"id":608,"data":2317,"type":41,"tunes":2319},{"text":2318,"level":218},"What to measure during migration",{},{"id":613,"data":2321,"type":326,"tunes":2351},{"content":2322,"stretched":42,"withHeadings":13},[2323,2325,2328,2331,2334,2336,2339,2342,2345,2348],[617,2324],"Migration check",[2326,2327],"Task success","Does the new runtime meet the same or better acceptance criteria?",[2329,2330],"Tool correctness","Does it call the right tool with valid arguments and authorization?",[2332,2333],"State continuity","Can work resume across turns, restarts and asynchronous waits?",[2080,2335],"What happens after webhook loss, handler failure, environment disconnect or timeout?",[2337,2338],"Traceability","Can every consequential action be joined to session, user, tool call and domain object?",[2340,2341],"Context behaviour","Do long-running sessions preserve constraints without carrying stale application truth?",[2343,2344],"Latency","How do session startup, environment provisioning and multi-turn work affect user-visible time?",[2346,2347],"Cost","What changes in model usage, sandbox usage, repeated context and infrastructure operations?",[2349,2350],"Operational load","Which previously application-owned responsibilities actually disappeared, and which merely moved?",{},{"id":647,"data":2353,"type":41,"tunes":2355},{"text":2354,"level":218},"When not to migrate yet",{},{"id":652,"data":2357,"type":225,"tunes":2359},{"text":2358},"An existing Agents SDK application does not become bad architecture simply because the platform direction changed. OpenAI continues maintenance, security fixes, critical bug fixes and compatibility work. If the application is stable, well evaluated and has no blocked roadmap requirement, an immediate runtime migration may not be justified.",{},{"id":657,"data":2361,"type":668,"tunes":2370},{"meta":2362,"items":2363,"style":667},{},[2364,2365,2366,2367,2368,2369],"A required SDK capability is not yet available in the Agents API.","The migration would disrupt a critical production period without delivering near-term value.","The application depends on custom orchestration semantics that have not been validated on the managed harness.","Provider portability is a hard requirement and the current SDK abstraction is materially valuable.","Your team has not yet separated business state from agent runtime state, making cutover unsafe.","The new Agents API behaviour has not been tested against representative production workloads.",{},{"id":671,"data":2372,"type":41,"tunes":2374},{"text":2373,"level":218},"When the migration becomes strategically important",{},{"id":676,"data":2376,"type":225,"tunes":2378},{"text":2377},"Migration becomes more compelling when product requirements align with the managed harness: durable long-running work, platform-managed context compaction and recovery, newer agent-runtime capabilities, sandboxed execution, richer hosted lifecycle management, or a desire to reduce the amount of orchestration code your application operates.",{},{"id":681,"data":2380,"type":225,"tunes":2382},{"text":2381},"The strongest signal is not “the old SDK is feature complete.” It is “our roadmap now depends on capabilities whose natural home is the managed Agents API runtime.”",{},{"id":686,"data":2384,"type":41,"tunes":2386},{"text":2385,"level":218},"What would change this answer?",{},{"id":691,"data":2388,"type":225,"tunes":2390},{"text":2389},"The migration strategy would change if OpenAI publishes automated migration tooling, introduces explicit compatibility layers, changes Agents API session semantics, expands or narrows self-hosted environment support, or changes the support policy for the Agents SDK.",{},{"id":696,"data":2392,"type":225,"tunes":2394},{"text":2393},"It would also change if your product requirements change. A simple request-response assistant may not need a durable managed harness at all. A long-running coding, research or operations agent can benefit much more from the Agents API ownership model.",{},{"id":701,"data":2396,"type":41,"tunes":2398},{"text":2397,"level":218},"Limitations",{},{"id":706,"data":2400,"type":225,"tunes":2402},{"text":2401},"There is no universal one-to-one SDK-to-API migration map because applications use the Agents SDK differently. Some rely heavily on sessions and handoffs; others use it as a thin runner around function tools. The correct migration depends on which responsibilities your application actually owns today.",{},{"id":711,"data":2404,"type":225,"tunes":2406},{"text":2405},"The Agents API is also in public beta, so implementation details can evolve. Treat the ownership principles in this article as more durable than any individual endpoint shape.",{},{"id":716,"data":2408,"type":41,"tunes":2410},{"text":2409,"level":218},"Conclusion",{},{"id":721,"data":2412,"type":225,"tunes":2414},{"text":2413},"Migrating from the Agents SDK to the Agents API is best understood as moving the agent-runtime boundary. The managed harness takes over more of the loop, session continuity, compaction and recovery. Your application should become more explicit about the responsibilities that remain yours: domain truth, authorization, function side effects, artifacts, auditability and product lifecycle.",{},{"id":726,"data":2416,"type":225,"tunes":2418},{"text":2417},"If a migration leaves all of the old orchestration machinery in place and merely replaces SDK calls with Agents API calls, it has probably missed the architectural opportunity. The goal is not to reproduce the old runtime on top of the new one. The goal is to decide which runtime responsibilities no longer belong in your application.",{},{"id":731,"data":2420,"type":41,"tunes":2421},{"text":733,"level":218},{},{"id":736,"data":2423,"type":736,"tunes":2441},{"items":2424,"title":2440},[2425,2428,2431,2434,2437],{"id":740,"answer":2426,"question":2427},"No. The main change is runtime ownership: the Agents SDK runs the agent loop in your application, while the Agents API runs a managed Codex harness and durable session. State, lifecycle, event handling and recovery should be reviewed as architecture concerns.","Is migrating from the Agents SDK to the Agents API just an API rewrite?",{"id":744,"answer":2429,"question":2430},"The business implementation often can be reused if it is already behind a stable application interface. The agent-facing integration changes because Agents API function calls are handled through session required actions and results.","Do my function tools need to be rewritten?",{"id":748,"answer":2432,"question":2433},"Generally no. Keep authoritative business and product state in your own databases or services. Use the agent session for agent continuity and working context, not as the sole source of truth for your product.","Should I move business state into the Agents API session?",{"id":752,"answer":2435,"question":2436},"Not always, because streaming is also available. Webhooks are especially useful for long-running or asynchronous sessions where your application should react to lifecycle changes without holding an open stream.","Do I need webhooks for the Agents API?",{"id":756,"answer":2438,"question":2439},"No. The SDK remains supported in maintenance mode. Migrate when the new runtime provides meaningful roadmap value and after required behaviour has been validated against production-shaped evals.","Should every existing Agents SDK application migrate now?","Migrating from Agents SDK to Agents API",{},{"id":762,"data":2443,"type":41,"tunes":2445},{"text":2444,"level":218},"Glossary",{},{"id":767,"data":2447,"type":767,"tunes":2466},{"title":2448,"entries":2449},"Key migration terms",[2450,2453,2455,2458,2461,2463],{"term":2451,"anchor":773,"definition":2452},"Runtime boundary","The division of responsibility between the platform-managed agent runtime and the application-owned runtime.",{"term":776,"anchor":777,"definition":2454},"The agent runtime that coordinates model calls, tools, context, orchestration and continued execution.",{"term":2456,"anchor":781,"definition":2457},"Session","A durable Agents API instance that holds an agent's configuration, conversation and saved work across turns.",{"term":2459,"anchor":785,"definition":2460},"Required action","A session state in which the Agents API needs external input such as a function result or environment connection before work can continue.",{"term":2232,"anchor":789,"definition":2462},"An execution environment operated by your infrastructure and connected to the managed Agents API harness.",{"term":2464,"anchor":793,"definition":2465},"Migration proof test","A staged validation method that compares the new runtime against behavioural baselines, failure injections, traces and reversible cutover criteria.",{},{"id":797,"data":2468,"type":41,"tunes":2470},{"text":2469,"level":218},"Primary sources and further reading",{},{"id":802,"data":2472,"type":809,"tunes":2476},{"link":804,"meta":2473},{"image":2474,"title":807,"description":2475},{"url":416},"Current support policy: the Agents SDK is feature complete, remains maintained, and new applications should start with the Agents API.",{},{"id":812,"data":2478,"type":809,"tunes":2483},{"link":814,"meta":2479},{"image":2480,"title":2481,"description":2482},{"url":416},"OpenAI — Running agents with the Agents SDK","Documentation of the SDK application-owned agent loop and continuation model.",{},{"id":821,"data":2485,"type":809,"tunes":2490},{"link":823,"meta":2486},{"image":2487,"title":2488,"description":2489},{"url":416},"OpenAI — Agents API overview","Defines the Agents API core concepts: agent, environment, session, events and items.",{},{"id":830,"data":2492,"type":809,"tunes":2497},{"link":832,"meta":2493},{"image":2494,"title":2495,"description":2496},{"url":416},"OpenAI — Agents API architecture","Explains the hosted harness, application server, OpenAI-hosted and self-hosted execution environment boundaries.",{},{"id":839,"data":2499,"type":809,"tunes":2504},{"link":841,"meta":2500},{"image":2501,"title":2502,"description":2503},{"url":416},"OpenAI — Configuring Agents","Defines reusable agent configuration and session-level customization.",{},{"id":848,"data":2506,"type":809,"tunes":2511},{"link":850,"meta":2507},{"image":2508,"title":2509,"description":2510},{"url":416},"OpenAI — Run and continue sessions","Documents durable sessions, asynchronous turns, streaming and steering.",{},{"id":857,"data":2513,"type":809,"tunes":2517},{"link":859,"meta":2514},{"image":2515,"title":862,"description":2516},{"url":416},"Function-tool definition and the application handler boundary for required function results.",{},{"id":866,"data":2519,"type":809,"tunes":2524},{"link":868,"meta":2520},{"image":2521,"title":2522,"description":2523},{"url":416},"OpenAI — Session webhooks","Lifecycle events for asynchronous sessions, required actions and self-hosted environment connections.",{},{"id":875,"data":2526,"type":809,"tunes":2531},{"link":877,"meta":2527},{"image":2528,"title":2529,"description":2530},{"url":416},"OpenAI — Agents API observability and usage","Session logs, events, turns, tool calls, subagents, traces and token-usage inspection.",{},{"id":222,"data":2533,"type":225,"tunes":2534},{"text":1997},{},{"id":228,"data":2536,"type":233,"tunes":2537},{"body":2001,"title":2002,"variant":232},{},{"id":236,"data":2539,"type":233,"tunes":2540},{"body":2006,"title":2007,"variant":240},{},{"id":243,"data":2542,"type":233,"tunes":2543},{"body":2011,"title":2012,"variant":247},{},{"id":899,"data":2545,"type":219,"tunes":2546},{"title":1993,"maxLevel":217,"minLevel":218},{},{"id":250,"data":2548,"type":41,"tunes":2549},{"text":2016,"level":218},{},{"id":255,"data":2551,"type":225,"tunes":2552},{"text":2020},{},{"id":260,"data":2554,"type":225,"tunes":2555},{"text":2024},{},{"id":265,"data":2557,"type":225,"tunes":2558},{"text":2028},{},{"id":270,"data":2560,"type":41,"tunes":2561},{"text":2032,"level":218},{},{"id":275,"data":2563,"type":326,"tunes":2577},{"content":2564,"stretched":42,"withHeadings":13},[2565,2566,2567,2568,2569,2570,2571,2572,2573,2574,2575,2576],[2038,280,2039],[2041,2042,2043],[2045,2046,2047],[2049,2050,2051],[2053,2054,2055],[2057,2058,2059],[2061,2062,2063],[2065,2066,2067],[311,2069,2070],[2072,2073,2074],[2076,2077,2078],[2080,2081,2082],{},{"id":329,"data":2579,"type":41,"tunes":2580},{"text":2086,"level":218},{},{"id":334,"data":2582,"type":225,"tunes":2583},{"text":2090},{},{"id":339,"data":2585,"type":225,"tunes":2586},{"text":2094},{},{"id":344,"data":2588,"type":233,"tunes":2589},{"body":2098,"title":2099,"variant":348},{},{"id":351,"data":2591,"type":41,"tunes":2592},{"text":2103,"level":218},{},{"id":356,"data":2594,"type":225,"tunes":2595},{"text":2107},{},{"id":361,"data":2597,"type":326,"tunes":2606},{"content":2598,"stretched":42,"withHeadings":13},[2599,2600,2601,2602,2603,2604,2605],[2113,2114,2115],[2117,2118,2119],[2121,2122,2123],[2125,2126,2127],[2129,2130,2131],[2133,2134,2135],[2137,2138,2139],{},{"id":394,"data":2608,"type":41,"tunes":2609},{"text":2143,"level":218},{},{"id":399,"data":2611,"type":225,"tunes":2612},{"text":2147},{},{"id":404,"data":2614,"type":225,"tunes":2615},{"text":2151},{},{"id":409,"data":2617,"type":440,"tunes":2631},{"rows":2618,"title":2168,"layout":326,"columns":2627},[2619,2621,2623,2625],{"id":413,"label":2157,"values":2620},[416,416,416],{"id":418,"label":2160,"values":2622},[416,416,416],{"id":422,"label":2163,"values":2624},[416,416,416],{"id":426,"label":2166,"values":2626},[416,416,416],[2628,2629,2630],{"id":432,"label":2171},{"id":435,"label":2173},{"id":438,"label":2175},{},{"id":443,"data":2633,"type":41,"tunes":2634},{"text":2179,"level":218},{},{"id":448,"data":2636,"type":225,"tunes":2637},{"text":2183},{},{"id":453,"data":2639,"type":225,"tunes":2640},{"text":2187},{},{"id":458,"data":2642,"type":41,"tunes":2643},{"text":2191,"level":218},{},{"id":463,"data":2645,"type":225,"tunes":2646},{"text":2195},{},{"id":468,"data":2648,"type":225,"tunes":2649},{"text":2199},{},{"id":473,"data":2651,"type":233,"tunes":2652},{"body":2203,"title":2204,"variant":240},{},{"id":479,"data":2654,"type":41,"tunes":2655},{"text":2208,"level":218},{},{"id":484,"data":2657,"type":225,"tunes":2658},{"text":2212},{},{"id":489,"data":2660,"type":225,"tunes":2661},{"text":2216},{},{"id":494,"data":2663,"type":326,"tunes":2671},{"content":2664,"stretched":42,"withHeadings":13},[2665,2666,2667,2668,2669,2670],[2222,2223],[2225,2226],[2228,2229],[2231,2232],[2234,2235],[2237,2238],{},{"id":517,"data":2673,"type":41,"tunes":2674},{"text":2242,"level":218},{},{"id":522,"data":2676,"type":225,"tunes":2677},{"text":2246},{},{"id":527,"data":2679,"type":225,"tunes":2680},{"text":2250},{},{"id":532,"data":2682,"type":41,"tunes":2683},{"text":2254,"level":218},{},{"id":537,"data":2685,"type":225,"tunes":2686},{"text":2258},{},{"id":542,"data":2688,"type":225,"tunes":2689},{"text":2262},{},{"id":547,"data":2691,"type":553,"tunes":2692},{"url":2266,"title":2267,"excerpt":2268,"ctaLabel":2269},{},{"id":556,"data":2694,"type":41,"tunes":2695},{"text":2273,"level":218},{},{"id":561,"data":2697,"type":225,"tunes":2698},{"text":2277},{},{"id":566,"data":2700,"type":225,"tunes":2701},{"text":2281},{},{"id":571,"data":2703,"type":41,"tunes":2704},{"text":2285,"level":218},{},{"id":576,"data":2706,"type":605,"tunes":2716},{"steps":2707,"title":2314,"orientation":604},[2708,2709,2710,2711,2712,2713,2714,2715],{"label":2291,"description":2292},{"label":2294,"description":2295},{"label":2297,"description":2298},{"label":2300,"description":2301},{"label":2303,"description":2304},{"label":2306,"description":2307},{"label":2309,"description":2310},{"label":2312,"description":2313},{},{"id":608,"data":2718,"type":41,"tunes":2719},{"text":2318,"level":218},{},{"id":613,"data":2721,"type":326,"tunes":2733},{"content":2722,"stretched":42,"withHeadings":13},[2723,2724,2725,2726,2727,2728,2729,2730,2731,2732],[617,2324],[2326,2327],[2329,2330],[2332,2333],[2080,2335],[2337,2338],[2340,2341],[2343,2344],[2346,2347],[2349,2350],{},{"id":647,"data":2735,"type":41,"tunes":2736},{"text":2354,"level":218},{},{"id":652,"data":2738,"type":225,"tunes":2739},{"text":2358},{},{"id":657,"data":2741,"type":668,"tunes":2744},{"meta":2742,"items":2743,"style":667},{},[2364,2365,2366,2367,2368,2369],{},{"id":671,"data":2746,"type":41,"tunes":2747},{"text":2373,"level":218},{},{"id":676,"data":2749,"type":225,"tunes":2750},{"text":2377},{},{"id":681,"data":2752,"type":225,"tunes":2753},{"text":2381},{},{"id":686,"data":2755,"type":41,"tunes":2756},{"text":2385,"level":218},{},{"id":691,"data":2758,"type":225,"tunes":2759},{"text":2389},{},{"id":696,"data":2761,"type":225,"tunes":2762},{"text":2393},{},{"id":701,"data":2764,"type":41,"tunes":2765},{"text":2397,"level":218},{},{"id":706,"data":2767,"type":225,"tunes":2768},{"text":2401},{},{"id":711,"data":2770,"type":225,"tunes":2771},{"text":2405},{},{"id":716,"data":2773,"type":41,"tunes":2774},{"text":2409,"level":218},{},{"id":721,"data":2776,"type":225,"tunes":2777},{"text":2413},{},{"id":726,"data":2779,"type":225,"tunes":2780},{"text":2417},{},{"id":731,"data":2782,"type":41,"tunes":2783},{"text":733,"level":218},{},{"id":736,"data":2785,"type":736,"tunes":2792},{"items":2786,"title":2440},[2787,2788,2789,2790,2791],{"id":740,"answer":2426,"question":2427},{"id":744,"answer":2429,"question":2430},{"id":748,"answer":2432,"question":2433},{"id":752,"answer":2435,"question":2436},{"id":756,"answer":2438,"question":2439},{},{"id":762,"data":2794,"type":41,"tunes":2795},{"text":2444,"level":218},{},{"id":767,"data":2797,"type":767,"tunes":2805},{"title":2448,"entries":2798},[2799,2800,2801,2802,2803,2804],{"term":2451,"anchor":773,"definition":2452},{"term":776,"anchor":777,"definition":2454},{"term":2456,"anchor":781,"definition":2457},{"term":2459,"anchor":785,"definition":2460},{"term":2232,"anchor":789,"definition":2462},{"term":2464,"anchor":793,"definition":2465},{},{"id":797,"data":2807,"type":41,"tunes":2808},{"text":2469,"level":218},{},{"id":802,"data":2810,"type":809,"tunes":2813},{"link":804,"meta":2811},{"image":2812,"title":807,"description":2475},{"url":416},{},{"id":812,"data":2815,"type":809,"tunes":2818},{"link":814,"meta":2816},{"image":2817,"title":2481,"description":2482},{"url":416},{},{"id":821,"data":2820,"type":809,"tunes":2823},{"link":823,"meta":2821},{"image":2822,"title":2488,"description":2489},{"url":416},{},{"id":830,"data":2825,"type":809,"tunes":2828},{"link":832,"meta":2826},{"image":2827,"title":2495,"description":2496},{"url":416},{},{"id":839,"data":2830,"type":809,"tunes":2833},{"link":841,"meta":2831},{"image":2832,"title":2502,"description":2503},{"url":416},{},{"id":848,"data":2835,"type":809,"tunes":2838},{"link":850,"meta":2836},{"image":2837,"title":2509,"description":2510},{"url":416},{},{"id":857,"data":2840,"type":809,"tunes":2843},{"link":859,"meta":2841},{"image":2842,"title":862,"description":2516},{"url":416},{},{"id":866,"data":2845,"type":809,"tunes":2848},{"link":868,"meta":2846},{"image":2847,"title":2522,"description":2523},{"url":416},{},{"id":875,"data":2850,"type":809,"tunes":2853},{"link":877,"meta":2851},{"image":2852,"title":2529,"description":2530},{"url":416},{},"2.31.6","Migrating from the OpenAI Agents SDK to the new Agents API is not an import rename. The runtime boundary changes: the agent loop, durable session, orchestration, context compaction and recovery move toward a managed harness. This guide shows what should move, what should stay in your application, and how to prove the migration before cutover.","Post erfolgreich abgerufen",{"items":2858,"source":2880,"manualIds":2881,"manualMatchedIds":2882},[2859,2866,2873],{"id":2860,"slug":2861,"title":2862,"excerpt":2863,"featuredImage":2864,"publishedAt":2865},"477","computer-use-agents-why-a-successful-demo-can-still-be-an-unreliable-system","Computer-Use-Agenten: Warum eine erfolgreiche Demo dennoch ein unzuverlässiges System sein kann","Computer-Use-Agenten können mittlerweile beeindruckende Browser- und Desktop-Workflows abschließen, aber ein erfolgreicher Durchlauf beweist Fähigkeit—nicht Zuverlässigkeit. Dieser Artikel zeigt, wie man Wiederholbarkeit, Umgebungsrobustheit, Steuerung über lange Zeithorizonte, Zustandsbewusstsein, Ergebnisüberprüfung und sichere Zielhandhabung testet.","\u002Fuploads\u002F2026\u002F09\u002Fcomputer-use-agents-why-a-successful-demo-can-still-be-an-unreliable-system-1790352854690-75qnrg.webp","2026-09-25T12:13:00.000Z",{"id":2867,"slug":2868,"title":2869,"excerpt":2870,"featuredImage":2871,"publishedAt":2872},"457","should-you-buy-5g-openwrt-router-old-firmware","Sollten Sie einen 5G-OpenWrt-Router mit alter Firmware kaufen? ZBT Z8102AX als praktisches Beispiel","Kauf eines 5G-OpenWrt-Routers mit älterer Firmware kann sinnvoll sein, aber nur unter den richtigen Bedingungen. Der ZBT Z8102AX zeigt beide Seiten deutlich: Die Hardware ist nützlich, das Modem funktioniert, und der Router blieb im Test stabil, aber OpenWrt 21.02, schwache Verpackung und unklare Upgrade-Pfade erfordern eine sorgfältige Kaufentscheidung.","\u002Fuploads\u002F2026\u002F06\u002Fopenwrt-router-review-dual-sim-05-1781620596218-5ldld4.webp","2026-06-16T10:41:00.000Z",{"id":2874,"slug":2875,"title":2876,"excerpt":2877,"featuredImage":2878,"publishedAt":2879},"451","test-dev-enterprise","Umfassender Leitfaden für Test DEv Enterprise Stajic.de: Architektur und Best Practices","Entdecken Sie die Architekturprinzipien, Vorteile und technischen Details der Verwaltung einer Entwicklungs- und Testumgebung der Enterprise-Klasse mit Test DEv Enterprise Stajic.de.","\u002Fuploads\u002F2026\u002F05\u002Ftest-dev-enterprise-1779534260081-r4dvxn.webp","2026-05-22T23:01:00.000Z","fallback",[],[]]