Daripada model kepada ejen: Melengkapkan API Respons dengan persekitaran komputer
Oleh Bo Xu, Danny Zhang dan Rohit Arunachalam
Kami kini sedang beralih daripada menggunakan model, yang cemerlang dalam tugas tertentu, kepada menggunakan ejen yang mampu mengendalikan aliran kerja yang kompleks. Dengan memberikan prom kepada model, anda hanya boleh mengakses kecerdasan yang terlatih. Walau bagaimanapun, memberikan model persekitaran komputer boleh mencapai julat kes penggunaan yang jauh lebih luas, seperti menjalankan perkhidmatan, meminta data daripada API atau menjana artifak yang lebih berguna seperti hamparan atau laporan.
Beberapa masalah praktikal timbul apabila anda cuba membina ejen: tempat meletakkan fail pertengahan, cara untuk mengelakkan menampal jadual besar ke dalam prom, cara untuk memberi akses rangkaian kepada aliran kerja tanpa mewujudkan masalah keselamatan dan cara untuk mengendalikan tamat masa dan percubaan semula tanpa membina sistem aliran kerja anda sendiri.
Daripada meletakkan tanggungjawab pada pembangun untuk membina persekitaran pelaksanaan mereka sendiri, kami membina komponen yang diperlukan untuk melengkapkan API Respons(dibuka dalam tetingkap baru) dengan persekitaran komputer untuk melaksanakan tugasan dunia sebenar yang boleh dipercayai.
API Respons OpenAI, bersama-sama dengan alat cangkerang dan ruang kerja bekas yang dihoskan, direka untuk menangani masalah praktikal ini. Model mencadangkan langkah dan perintah; platform menjalankannya dalam persekitaran terasing dengan sistem fail untuk input dan output, storan berstruktur pilihan (seperti SQLite) dan akses rangkaian yang terhad.
Dalam siaran ini, kami akan memecahkan cara kami membina persekitaran komputer untuk ejen dan berkongsi beberapa pengajaran awal tentang cara menggunakannya untuk aliran kerja pengeluaran yang lebih pantas, lebih boleh diulang dan lebih selamat.
Aliran kerja ejen yang baik bermula dengan gelung pelaksanaan yang ketat: model mencadangkan tindakan seperti membaca fail atau mendapatkan data dengan API, platform melaksanakannya dan hasilnya dimasukkan ke langkah seterusnya. Kita akan bermula dengan alat cangkerang—cara paling mudah untuk melihat gelung ini berfungsi—dan kemudian meliputi ruang kerja bekas, perangkaian, kemahiran boleh guna semula dan pemampatan konteks.
Untuk memahami alat cangkerang, mula-mula adalah berguna untuk memahami cara model bahasa menggunakan alat secara umum: untuk melakukan perkara seperti memanggil fungsi atau berinteraksi dengan komputer. Semasa latihan, sebuah model ditunjukkan contoh tentang cara alat digunakan dan kesan yang terhasil, langkah demi langkah. Ini membantu model belajar untuk memutuskan bila hendak menggunakan alat dan cara menggunakannya. Apabila kami mengatakan “menggunakan alat”, kami maksudkan model sebenarnya hanya mencadangkan panggilan alat. Ia tidak boleh melaksanakan panggilan itu dengan sendiri.
Alat cangkerang menjadikan model jauh lebih berkuasa secara dramatik: ia berinteraksi dengan komputer melalui barisan arahan untuk melaksanakan pelbagai jenis tugasan, daripada mencari teks hingga menghantar permintaan API pada komputer anda. Dibina berasaskan alat Unix yang biasa, alat cangkerang kami boleh melakukan apa sahaja yang anda jangkakan, dengan utiliti seperti grep, curl dan awk tersedia di luar kotak.
Berbanding dengan pentafsir kod sedia ada kami, yang hanya melaksanakan Python, alat cangkerang membolehkan pelbagai kes penggunaan yang jauh lebih luas, seperti menjalankan program Go atau Java atau memulakan pelayan NodeJS. Kefleksibelan ini membolehkan model memenuhi tugasan agentic yang kompleks.
Dengan sendirinya, model hanya boleh mencadangkan arahan cangkerang, tetapi bagaimanakah arahan ini dilaksanakan? Kami memerlukan pengorkestra untuk mendapatkan output model, memanggil alat dan menghantar respons alat kembali kepada model dalam satu gelung, sehingga tugas selesai.
API Respons ialah cara pembangun berinteraksi dengan model OpenAI. Apabila digunakan dengan alat tersuai, API Respons menyerahkan kawalan kembali kepada klien dan klien memerlukan abah-abahnya sendiri untuk menjalankan alat. Walau bagaimanapun, API ini juga boleh mengorkestra antara model dan alat yang dihoskan di luar kotak.
Apabila API Respons menerima prom, ia memasang konteks model: prom pengguna, keadaan perbualan terdahulu dan arahan alat. Untuk pelaksanaan cangkerang berfungsi, prom mesti menyebut penggunaan alat cangkerang and model yang dipilih mesti dilatih untuk mencadangkan perintah cangkerang—model GPT‑5.2 dan yang lebih baharu dilatih untuk iperkara ni. Dengan semua konteks ini, model kemudian menentukan tindakan yang seterusnya. Jika ia memilih pelaksanaan cangkerang, ia mengembalikan satu atau lebih arahan cangkerang kepada perkhidmatan API Respons. Perkhidmatan API memajukan perintah tersebut kepada masa jalan bekas, menstrim kembali output cangkerang dan memasukkannya kepada model dalam konteks permintaan yang seterusnya. Model kemudian boleh memeriksa hasil, mengeluarkan arahan susulan atau menghasilkan jawapan akhir. API Respons mengulangi gelung ini sehingga model mengembalikan pelengkapan tanpa arahan cangkerang tambahan.
Apabila API Responses melaksanakan arahan cangkerang, ia mengekalkan sambungan penstriman kepada perkhidmatan bekas. Apabila output dihasilkan, API menyampaikannya kepada model dalam hampir masa nyata supaya model boleh memutuskan sama ada untuk menunggu lebih banyak output, menjalankan arahan lain atau meneruskan kepada respons akhir.
API Respons menstrim output arahan cangkerang
Model boleh mencadangkan berbilang perintah cangkerang dalam satu langkah dan API Respons boleh melaksanakannya secara serentak menggunakan sesi bekas yang berasingan. Setiap sesi menstrim output secara bebas dan API memultipleks strim tersebut kembali ke dalam output alat berstruktur sebagai konteks. Dengan kata lain, gelung ejen boleh menyelarikan kerja, seperti mencari fail, mendapatkan data dan mengesahkan hasil pertengahan.
Apabila perintah melibatkan operasi fail atau pemprosesan data, output cangkerang boleh menjadi sangat besar dan menggunakan belanjawan konteks tanpa menambah isyarat yang berguna. Untuk mengawal ini, model menetapkan had output bagi setiap perintah. API Respons menguatkuasakan had tersebut dan mengembalikan hasil terhad yang mengekalkan kedua-dua permulaan dan penghujung output, sambil menandakan kandungan yang ditinggalkan. Sebagai contoh, anda mungkin mengehadkan output kepada 1,000 aksara, dengan permulaan dan penghujung yang dikekalkan:
teks pada permulaan ... 1000 aksara dipendekkan ... teks pada penghujung
Bersama-sama, pelaksanaan serentak dan output terhad menjadikan gelung ejen pantas dan cekap konteks supaya model boleh terus membuat penaakulan terhadap hasil yang relevan dan bukannya dibebani oleh log terminal mentah.
Satu isu yang berpotensi dengan gelung ejen ialah tugas boleh berjalan untuk masa yang lama. Tugas yang berjalan lama memenuhi tetingkap konteks, penting untuk menyediakan konteks merentas giliran dan merentas ejen. Bayangkan ejen memanggil kemahiran, mendapat respons, menambah panggilan alat dan ringkasan penaakulan—tetingkap konteks yang terhad cepat penuh. Untuk mengelakkan daripada kehilangan konteks penting semasa ejen terus berjalan, kita memerlukan cara untuk mengekalkan butiran utama dan mengalih keluar apa-apa yang tidak perlu. Sebaliknya daripada menghendaki pembangun mereka bentuk dan mengekalkan sistem peringkasan tersuai atau sistem yang membawa keadaan, kami menambah pemampatan asli dalam API Respons, yang direka untuk sejajar dengan cara kelakuan model dan cara ia telah dilatih.
Model-model terkini kami dilatih untuk menganalisis keadaan perbualan terdahulu dan menghasilkan item pemampatan yang mengekalkan keadaan terdahulu yang utama dalam perwakilan yang disulitkan dan cekap token. Selepas pemampatan, tetingkap konteks yang seterusnya terdiri daripada item pemampatan ini dan bahagian bernilai tinggi daripada tetingkap terdahulu. Ini membolehkan aliran kerja diteruskan secara koheren merentasi sempadan tetingkap, walaupun dalam sesi berbilang langkah lanjutan dan dipacu alat. Codex bergantung pada mekanisme ini untuk mengekalkan tugas pengekodan yang berjalan lama dan pelaksanaan alat secara berulang tanpa menjejaskan kualiti.
Pemampatan tersedia sama ada terbina dalam pada pelayan atau melalui titik akhir `/compact` kendiri. Pemampatan sebelah pelayan membolehkan anda mengkonfigurasi ambang dan sistem mengendalikan pemasaan pemampatan secara automatik, menghapuskan keperluan untuk logik sebelah klien yang kompleks. Ia membolehkan tetingkap konteks input berkesan input yang lebih besar sedikit untuk menampung lebihan kecil sejurus sebelum pemampatan, supaya permintaan yang hampir pada had masih boleh diproses dan dimampatkan dan bukannya ditolak. Apabila latihan model berkembang, penyelesaian pemampatan asli turut berkembang bersamanya untuk setiap keluaran model OpenAI.
Codex membantu kami membina sistem pemampatan sambil berkhidmat sebagai pengguna awalnya. Apabila satu keadaan Codex mengalami ralat pemampatan, kami akan melancarkan keadaan kedua untuk menyiasat. Hasilnya ialah Codex mendapat sistem pemampatan asli yang berkesan hanya dengan menyelesaikan masalah tersebut. Keupayaan Codex untuk memeriksa dan memperhalusi dirinya sendiri telah menjadi bahagian yang sangat menarik dalam bekerja di OpenAI. Kebanyakan alat hanya memerlukan pengguna untuk belajar cara menggunakannya; Codex belajar bersama-sama kami.
Sekarang, mari kita bincangkan tentang keadaan dan sumber. Bekas bukan sahaja tempat untuk menjalankan arahan tetapi juga konteks kerja untuk model. Di dalam bekas, model boleh membaca fail, bertanya pangkalan data dan mengakses sistem luaran di bawah kawalan dasar rangkaian.
Bahagian pertama konteks bekas ialah sistem fail untuk memuat naik, menyusun dan mengurus sumber. Kami membina API bekas dan fail(dibuka dalam tetingkap baru) untuk memberikan model peta data yang tersedia dan membantunya memilih operasi fail yang disasarkan dan bukannya menjalankan imbasan yang luas dan bising.
Satu anti corak yang biasa ialah memasukkan semua input terus ke dalam konteks prom. Apabila input bertambah, mengisi prom secara berlebihan menjadi mahal dan sukar untuk dinavigasi oleh model. Corak yang lebih baik ialah menyediakan sumber dalam sistem fail bekas dan membiarkan model memutuskan fail yang hendak dibuka, dihuraikan atau diubah dengan arahan cangkerang. Seperti manusia, model berfungsi lebih baik dengan maklumat yang teratur.
Bahagian kedua konteks bekas ialah pangkalan data. Dalam banyak kes, kami mencadangkan pembangun menyimpan data berstruktur dalam pangkalan data seperti SQLite dan membuat pertanyaan terhadapnya. Daripada menyalin keseluruhan hamparan ke dalam prom, sebagai contoh, anda boleh memberikan model penerangan tentang jadual—lajur apa yang wujud dan apa maksudnya—dan biarkan ia menarik baris yang diperlukan.
Sebagai contoh, jika anda bertanya, “Produk manakah yang mengalami penurunan jualan pada suku tahun ini?” model boleh menanyakan cuma baris yang berkaitan dan bukannya mengimbas keseluruhan hamparan. Ini lebih pantas, lebih murah, boleh diskalakan kepada set data yang lebih besar.
Bahagian ketiga konteks bekas ialah akses rangkaian, bahagian penting bagi beban kerja ejen. Aliran kerja ejen mungkin perlu mendapatkan data langsung, memanggil API luaran atau memasang pakej. Pada masa yang sama, memberikan bekas akses Internet tanpa sekatan boleh mendatangkan risiko: ia boleh mendedahkan maklumat kepada laman web luaran, menyentuh sistem dalaman sensitif atau sistem pihak ketiga secara tidak sengaja atau menjadikan kebocoran bukti kelayakan dan penyusupan data lebih sukar untuk dilindungi.
Untuk menangani kebimbangan ini tanpa mengehadkan kegunaan ejen, kami membina bekas yang dihoskan untuk menggunakan proksi pemegangan sidecar. Semua permintaan rangkaian keluar mengalir melalui lapisan dasar berpusat yang menguatkuasakan senarai kebenaran dan kawalan akses sambil memastikan trafik yang boleh diperhatikan. Untuk bukti kelayakan, kami menggunakan suntikan rahsia berskop domain pada pemegangan. Model dan bekas hanya melihat pemegang tempat, manakala nilai rahsia mentah kekal di luar konteks yang boleh dilihat oleh model dan hanya digunakan untuk destinasi yang diluluskan. Ini mengurangkan risiko kebocoran sambil tetap membolehkan panggilan luaran yang disahkan.
Perintah shell adalah berkuasa, tetapi banyak tugas mengulangi corak berbilang langkah yang sama. Ejen perlu meneroka semula aliran kerja pada setiap kali dijalankan—merancang semula, memberikan perintah dan mempelajari semula kelaziman—membawa kepada hasil yang tidak konsisten dan pelaksanaan yang sia-sia. Kemahiran ejen(dibuka dalam tetingkap baru) menggabung corak tersebut ke dalam blok binaan yang boleh digunakan semula dan boleh digubah. Secara tepatnya, kemahiran ialah satu kelompok folder yang merangkumi ‘SKILL.md(dibuka dalam tetingkap baru)’ (mengandungi metadata dan arahan) ditambah dengan sebarang sumber sokongan, seperti spesifikasi API dan aset UI.
Struktur ini memetakan kepada seni bina masa jalan yang telah kami terangkan sebelum ini secara semula jadi. Bekas menyediakan fail berterusan dan konteks pelaksanaan, manakala alat cangkerang menyediakan antara muka pelaksanaan. Dengan kedua-duanya tersedia, model boleh menemui fail kemahiran menggunakan perintah cangkerang (`ls`, `cat`, dll.) apabila diperlukan, mentafsir arahan dan menjalankan skrip kemahiran semuanya dalam gelung ejen yang sama.
Kami menyediakan API(dibuka dalam tetingkap baru) untuk mengurus kemahiran dalam platform OpenAI. Pembangun memuat naik dan menyimpan folder kemahiran sebagai pakej mempunyai versi, yang kemudiannya boleh diperoleh semula mengikut ID kemahiran. Sebelum menghantar prom kepada model, Responses API memuatkan kemahiran dan menyertakannya dalam konteks model. Turutan ini adalah ketentuan:
- Dapatkan metadata kemahiran, termasuk nama dan penerangan.
- Dapatkan kumpulan kemahiran, salin ke dalam bekas dan buka bungkusannya.
- Kemas kini konteks model dengan metadata kemahiran dan laluan bekas.
Apabila memutuskan sama ada sesuatu kemahiran itu relevan, model meneroka arahannya secara progresif dan melaksanakan skripnya melalui perintah cangkerang di dalam bekas.
Untuk menyatukan semua bahagian: API Respons menyediakan pengorkestraan, alat cangkerang menyediakan tindakan boleh laksanakan, bekas dihoskan menyediakan konteks masa jalan yang berterusan, skills melapiskan logik aliran kerja boleh guna semula dan pemampatan membolehkan ejen berjalan untuk tempoh yang lama dengan konteks yang diperlukan.
Dengan primitif ini, satu prom boleh berkembang menjadi aliran kerja menyeluruh hujung ke hujung: menemui kemahiran yang betul, mendapatkan data, mengubahnya menjadi keadaan berstruktur setempat, menanyakannya dengan cekap dan menjana artifak yang tahan lama.
Gambar rajah di bawah menunjukkan cara sistem ini berfungsi untuk mencipta hamparan daripada data langsung.
API Respons mengatur tugas agentic
Untuk contoh mendalam tentang menggabungkan alat shell dan persekitaran komputer bagi aliran kerja hujung ke hujung, lihat siaran blog pembangun(dibuka dalam tetingkap baru) dan buku resipi(dibuka dalam tetingkap baru) kami yang menerangkan panduan mempakej kemahiran dan melaksanakannya melalui API Respons.
Kami teruja untuk melihat apa yang pembangun bina dengan set primitif ini. Model bahasa bertujuan untuk melakukan lebih daripada sekadar menjana teks, imej dan audio–kami akan terus mengembangkan platform kami untuk menjadi lebih berkemampuan dalam mengendalikan tugas dunia sebenar yang kompleks pada skala.


