Masuk dengan ChatGPT melalui gateway

Alasan menggunakan cara ini

Jika Anda sudah memiliki gateway model dan menggunakan Codex dengan API Platform, Anda dapat mempertahankan gateway tersebut sambil beralih ke Masuk dengan ChatGPT. Cara ini memberi Anda akses ke fitur dan kontrol ruang kerja ChatGPT yang memenuhi syarat (misalnya mode suara) sekaligus mempertahankan gateway model Anda. Bandingkan metode masuk di Ketersediaan fitur.

Cara menyiapkannya

Autentikasi berbasis perintah yang ada menempatkan kunci gateway di Authorization. Saat masuk dengan ChatGPT, header tersebut membawa token ChatGPT. Pilih cara menyediakan kredensial gateway secara terpisah:

  • Opsi A: Gunakan kembali perintah kredensial Anda melalui program pembantu peluncuran sederhana. Kirim kunci gateway yang sama dalam header terpisah.
  • Opsi B: Biarkan Codex memperoleh kredensial gateway melalui OAuth bawaan.

Tambahkan konfigurasi penyedia yang dipilih ke requirements.toml ruang kerja Anda yang dikelola melalui cloud di Konfigurasi terkelola. Persyaratan ini berlaku setelah pengguna masuk dengan ChatGPT; persyaratan ini tidak membatasi metode masuk lainnya. URL dasar gateway yang kompatibel dengan Codex harus meneruskan /models dan /responses melalui proksi ke https://chatgpt.com/backend-api/codex.

Opsi A: Gunakan kembali perintah kredensial Anda dengan program pembantu

Pertahankan perintah kredensial Anda yang ada. Program pembantu sederhana menjalankannya sebelum meluncurkan Codex dan mengekspor keluarannya sebagai GATEWAY_KEY. Ini adalah kunci gateway yang sama dengan yang Anda gunakan saat ini; hanya header pengirimannya yang berubah.

Misalnya, konfigurasi API/penyedia Anda yang ada mungkin berisi:

# config.toml — existing API/provider setup
model_provider = "enterprise_gateway"

[model_providers.enterprise_gateway]
name = "Enterprise gateway"
base_url = "https://gateway.example.com/v1"
requires_openai_auth = false

[model_providers.enterprise_gateway.auth]
command = "/usr/local/bin/fetch-gateway-token"

Untuk masuk dengan ChatGPT, ganti penyedia tersebut dengan konfigurasi terkelola berikut. Hapus blok auth miliknya: autentikasi penyedia berbasis perintah tidak dapat digabungkan dengan requires_openai_auth = true.

# requirements.toml
model_provider = "enterprise_gateway"

[model_providers.enterprise_gateway]
name = "Enterprise gateway"
base_url = "https://gateway.example.com/backend-api/codex" # Keep the gateway route.
requires_openai_auth = true # Use the ChatGPT credential for OpenAI.
env_http_headers = { "X-Gateway-Key" = "GATEWAY_KEY" } # Send the same gateway key separately.

Gunakan program pembantu peluncuran seperti fungsi shell berikut untuk CLI. Ganti perintah dan argumennya dengan yang ada di blok auth Anda:

codex_with_gateway() (
  set -eu
  GATEWAY_KEY=$(/usr/local/bin/fetch-gateway-token)
  test -n "$GATEWAY_KEY"
  export GATEWAY_KEY
  exec codex "$@"
)

codex_with_gateway

Konfigurasikan gateway Anda untuk menerima X-Gateway-Key, memvalidasi kunci, dan menghapus header tersebut sebelum meneruskan permintaan ke backend. Permintaan dari klien kini membawa:

Authorization: Bearer <ChatGPT token>
ChatGPT-Account-ID: <workspace ID, when available>
X-Gateway-Key: <same gateway key returned by your command>

Program pembantu berjalan sekali setiap peluncuran. Codex tidak menjalankannya kembali atau memperbarui header ini; saat kunci kedaluwarsa, dapatkan kunci baru dan luncurkan kembali. Untuk desktop, integrasi peluncuran Anda harus menyediakan GATEWAY_KEY ke proses aplikasi. Pilih Opsi B jika Anda ingin Codex mengelola proses masuk gateway dan pembaruan token.

Diagram menyingkat header permintaan dan program pembantu peluncuran. Gunakan Authorization: Bearer <ChatGPT token> dan pertahankan pemeriksaan kunci kosong pada program pembantu dari contoh di atas. Jika GATEWAY_KEY kosong, Codex tidak menyertakan X-Gateway-Key.

Opsi A: Gunakan kembali perintah kredensial melalui program pembantu peluncuran. Kunci gateway yang sama berpindah dari Authorization ke X-Gateway-Key, sementara proses masuk ChatGPT menyediakan Authorization.
Opsi A saat dijalankan: Gateway memvalidasi dan menghapus X-Gateway-Key, lalu meneruskan Authorization ChatGPT dan ID akun apa pun tanpa perubahan ke backend Codex.

Opsi B: Gunakan OAuth gateway bawaan

Gunakan opsi ini untuk mengganti perintah dan program pembantu peluncuran dengan proses masuk gateway yang dikelola Codex. Gateway Anda harus memiliki server otorisasi OAuth. Daftarkan klien publik yang mendukung kode otorisasi dengan PKCE, lalu ganti URL dan ID klien pada contoh. Hapus blok auth penyedia yang ada dan gunakan konfigurasi terkelola berikut.

# requirements.toml
model_provider = "enterprise_gateway"

[model_providers.enterprise_gateway]
name = "Enterprise gateway"
base_url = "https://gateway.example.com/backend-api/codex" # Keep the gateway route.
requires_openai_auth = true # Use the ChatGPT credential for OpenAI.

[model_providers.enterprise_gateway.gateway_oauth] # Add gateway OAuth.
authorization_url = "https://login.example.com/oauth/authorize"
token_url = "https://login.example.com/oauth/token"
client_id = "YOUR_PUBLIC_CLIENT_ID"
delivery = { kind = "cookie", name = "auth-openid" } # Add gateway auth as a cookie.
# redirect_port = 43127

Secara default, Codex menggunakan port loopback yang tersedia. Jika penyedia identitas Anda memerlukan URI pengalihan tetap, atur redirect_port dan daftarkan http://127.0.0.1:43127/callback untuk contoh ini.

Opsi B: Ganti autentikasi gateway berbasis API key dengan OAuth gateway bawaan yang berjalan berdampingan dengan proses masuk ChatGPT.
Opsi B saat dijalankan: Gateway menggunakan cookie OAuth miliknya dan meneruskan kredensial ChatGPT ke backend Codex.

Tambahkan header perutean (opsional)

Dengan opsi mana pun, Codex dapat mengirim header perutean kustom ke gateway. Misalnya, tambahkan header berikut ke penyedia enterprise_gateway yang sama dalam requirements.toml Anda yang dikelola melalui cloud:

[model_providers.enterprise_gateway.http_headers]
x-portkey-config = "<gateway-routing-config-id>"
x-portkey-metadata = '{"tool_id":"codex"}'

Codex mengirim header tersebut pada permintaan ke penyedia model; gateway menerapkan aturan peruteannya. Gunakan env_http_headers untuk nilai yang dibaca dari lingkungan proses Codex. Uji sebuah permintaan untuk memastikan gateway menerima kedua header dan memilih rute yang dimaksud. Lihat Penyedia model kustom untuk opsi header lainnya.

Pertahankan kredensial pada jalurnya masing-masing

Codex mengirim header Authorization ChatGPT, header ChatGPT-Account-ID jika ada, serta header atau cookie gateway. Atur gateway agar memverifikasi dan menghapus kredensialnya sendiri, lalu meneruskan header ChatGPT tanpa perubahan.

Hal yang perlu diperhatikan dan batasan

  • Gunakan build Codex yang mendukung persyaratan penyedia model terkelola dan, untuk Opsi B, OAuth gateway bawaan. Build yang lebih lama mungkin mengabaikan atau menolak field yang tidak didukung.
  • Rute ini mencakup permintaan melalui penyedia model yang dipilih. Proses masuk ChatGPT, MCP, plugin, dan koneksi aplikasi lainnya dapat menggunakan jalur yang berbeda.
  • Gateway Anda dapat melihat data permintaan dan kedua kredensial. Samarkan informasi tersebut dalam log; jangan pernah meneruskan kredensial gateway ke upstream.
  • OAuth gateway bawaan memerlukan browser dan callback loopback yang dapat dijangkau. Tidak ada mekanisme cadangan berupa kode perangkat. Tanpa token penyegaran, pengguna harus mengulangi proses masuk melalui browser saat token akses kedaluwarsa.
  • Respons /v1/models OpenAI generik tidak memadai: Codex mengharapkan array models. Uji daftar model, sebuah prompt, dan setiap fitur yang digunakan dalam penerapan Anda.

Suara melalui gateway

Penyiapan ini merutekan permintaan penyedia model Codex; penyiapan ini tidak mengaktifkan ChatGPT Voice. Untuk sesi suara WebRTC, pembuatan panggilan dan koneksi sideband menggunakan rute terpisah. Pengaturan eksperimental experimental_realtime_webrtc_call_base_url dalam ~/.codex/config.toml hanya mengubah URL dasar HTTP untuk pembuatan panggilan. Pengaturan ini tidak mengalihkan koneksi sideband, media, atau permintaan model biasa. Bekerja samalah dengan OpenAI untuk memverifikasi tujuan panggilan dan penanganan kredensial sebelum menggunakan penggantian pengaturan ini, lalu uji sesi suara secara lengkap.

Untuk jalur kredensial API/penyedia, lihat Kompatibilitas gateway dan Terapkan gateway. Untuk pengaturan terkelola ini, lihat Konfigurasi terkelola dan Referensi Konfigurasi.