Đăng nhập bằng ChatGPT thông qua gateway
Vì sao nên dùng cách này
Nếu bạn đã có gateway mô hình và đang dùng Codex với API Platform, bạn có thể giữ lại gateway khi chuyển sang Đăng nhập bằng ChatGPT. Cách này cho phép bạn sử dụng các tính năng và tùy chọn kiểm soát của không gian làm việc ChatGPT mà bạn đủ điều kiện truy cập (ví dụ: chế độ giọng nói), đồng thời giữ lại gateway mô hình. So sánh các phương thức đăng nhập trong Khả năng sử dụng tính năng.
Cách thiết lập
Cơ chế xác thực bằng lệnh hiện có đặt khóa gateway trong Authorization. Khi đăng nhập bằng ChatGPT, header đó chứa token ChatGPT. Chọn cách cung cấp thông tin xác thực riêng cho gateway:
- Phương án A: Tái sử dụng lệnh lấy thông tin xác thực thông qua một trình hỗ trợ khởi chạy nhỏ. Gửi cùng khóa gateway đó trong một header riêng.
- Phương án B: Để Codex lấy thông tin xác thực gateway thông qua OAuth tích hợp sẵn.
Thêm cấu hình nhà cung cấp đã chọn vào requirements.toml được quản lý trên đám mây của không gian làm việc trong Cấu hình được quản lý. Các yêu cầu này áp dụng sau khi người dùng đăng nhập bằng ChatGPT; chúng không hạn chế các phương thức đăng nhập khác. URL cơ sở tương thích với Codex của gateway phải chuyển tiếp /models và /responses đến https://chatgpt.com/backend-api/codex.
Phương án A: Tái sử dụng lệnh lấy thông tin xác thực với trình hỗ trợ
Giữ nguyên lệnh lấy thông tin xác thực hiện có. Một trình hỗ trợ nhỏ chạy lệnh đó trước khi khởi chạy Codex và xuất kết quả thành GATEWAY_KEY. Đây vẫn là khóa gateway bạn đang dùng; chỉ header dùng để truyền khóa thay đổi.
Ví dụ, cấu hình API/nhà cung cấp hiện có của bạn có thể chứa:
# 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"Để đăng nhập bằng ChatGPT, hãy thay thế nhà cung cấp đó bằng cấu hình được quản lý sau đây. Xóa khối auth của nhà cung cấp: không thể kết hợp xác thực nhà cung cấp bằng lệnh với 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.Sử dụng trình hỗ trợ khởi chạy như hàm shell sau đây cho CLI. Thay lệnh và các đối số bằng những giá trị trong khối auth hiện có:
codex_with_gateway() (
set -eu
GATEWAY_KEY=$(/usr/local/bin/fetch-gateway-token)
test -n "$GATEWAY_KEY"
export GATEWAY_KEY
exec codex "$@"
)
codex_with_gatewayCấu hình gateway để chấp nhận X-Gateway-Key, xác thực khóa và loại bỏ header đó trước khi chuyển tiếp yêu cầu đến backend. Yêu cầu từ máy khách lúc này chứa:
Authorization: Bearer <ChatGPT token>
ChatGPT-Account-ID: <workspace ID, when available>
X-Gateway-Key: <same gateway key returned by your command>Trình hỗ trợ chạy một lần mỗi khi khởi chạy. Codex không chạy lại trình hỗ trợ hoặc làm mới header này; khi khóa hết hạn, hãy lấy khóa mới và khởi chạy lại. Với ứng dụng máy tính, cơ chế tích hợp khởi chạy của bạn phải cung cấp GATEWAY_KEY cho tiến trình ứng dụng. Chọn Phương án B nếu bạn muốn Codex quản lý việc đăng nhập gateway và gia hạn token.
Các sơ đồ trình bày rút gọn header yêu cầu và trình hỗ trợ khởi chạy. Sử dụng Authorization: Bearer <ChatGPT token> và giữ lại bước kiểm tra khóa rỗng của trình hỗ trợ trong các ví dụ ở trên. Nếu GATEWAY_KEY rỗng, Codex sẽ bỏ qua X-Gateway-Key.


Phương án B: Sử dụng OAuth gateway tích hợp sẵn
Sử dụng phương án này để thay thế lệnh và trình hỗ trợ khởi chạy bằng cơ chế đăng nhập gateway do Codex quản lý. Gateway của bạn phải có máy chủ ủy quyền OAuth. Đăng ký một máy khách công khai hỗ trợ mã ủy quyền với PKCE, rồi thay thế các URL và ID máy khách trong ví dụ. Xóa khối auth của nhà cung cấp hiện có và sử dụng cấu hình được quản lý sau đây.
# 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 = 43127Theo mặc định, Codex sử dụng một cổng loopback còn trống. Nếu nhà cung cấp danh tính yêu cầu URI chuyển hướng cố định, hãy đặt redirect_port và đăng ký http://127.0.0.1:43127/callback cho ví dụ này.


Thêm header định tuyến (tùy chọn)
Với cả hai phương án, Codex đều có thể gửi header định tuyến tùy chỉnh đến gateway. Ví dụ, thêm các header sau vào cùng nhà cung cấp enterprise_gateway trong requirements.toml được quản lý trên đám mây:
[model_providers.enterprise_gateway.http_headers]
x-portkey-config = "<gateway-routing-config-id>"
x-portkey-metadata = '{"tool_id":"codex"}'Codex gửi các header trong yêu cầu đến nhà cung cấp mô hình; gateway áp dụng các quy tắc định tuyến. Sử dụng env_http_headers cho các giá trị được đọc từ môi trường tiến trình Codex. Kiểm thử một yêu cầu để xác nhận gateway nhận được cả hai header và chọn đúng tuyến mong muốn. Xem Nhà cung cấp mô hình tùy chỉnh để biết thêm các tùy chọn header.
Giữ thông tin xác thực trên các luồng riêng biệt
Codex gửi header Authorization của ChatGPT, header ChatGPT-Account-ID nếu có, cùng header hoặc cookie của gateway. Cấu hình gateway xác minh và loại bỏ thông tin xác thực của chính nó, rồi chuyển tiếp nguyên vẹn các header ChatGPT.
Lưu ý và hạn chế
- Sử dụng bản dựng Codex hỗ trợ các yêu cầu về nhà cung cấp mô hình được quản lý và, với Phương án B, OAuth gateway tích hợp sẵn. Các bản dựng cũ hơn có thể bỏ qua hoặc từ chối các trường không được hỗ trợ.
- Tuyến này áp dụng cho các yêu cầu thông qua nhà cung cấp mô hình đã chọn. Đăng nhập bằng ChatGPT, MCP, plugin và các kết nối ứng dụng khác có thể sử dụng các tuyến khác.
- Gateway có thể xem dữ liệu yêu cầu và cả hai thông tin xác thực. Che chúng trong nhật ký; tuyệt đối không chuyển tiếp thông tin xác thực gateway lên dịch vụ phía trên.
- OAuth gateway tích hợp sẵn cần trình duyệt và địa chỉ callback loopback có thể truy cập được. Cơ chế này không có phương án dự phòng bằng mã thiết bị. Nếu không có token làm mới, người dùng phải đăng nhập lại qua trình duyệt khi token truy cập hết hạn.
- Phản hồi
/v1/modelsOpenAI thông thường là chưa đủ: Codex yêu cầu một mảngmodels. Kiểm thử danh sách mô hình, một câu lệnh và từng tính năng mà hệ thống triển khai của bạn sử dụng.
Giọng nói thông qua gateway
Thiết lập này định tuyến các yêu cầu đến nhà cung cấp mô hình của Codex; nó không bật ChatGPT Voice. Với các phiên giọng nói WebRTC, việc tạo cuộc gọi và kết nối sideband sử dụng các tuyến riêng. Cài đặt thử nghiệm experimental_realtime_webrtc_call_base_url trong ~/.codex/config.toml chỉ thay đổi URL cơ sở HTTP dùng để tạo cuộc gọi. Cài đặt này không chuyển hướng kết nối sideband, dữ liệu đa phương tiện hoặc các yêu cầu mô hình thông thường. Làm việc với OpenAI để xác minh đích cuộc gọi và cách xử lý thông tin xác thực trước khi sử dụng tùy chọn ghi đè này, sau đó kiểm thử một phiên giọng nói hoàn chỉnh.
Để tìm hiểu luồng thông tin xác thực API/nhà cung cấp, xem Khả năng tương thích của gateway và Triển khai gateway. Để tìm hiểu các cài đặt được quản lý này, xem Cấu hình được quản lý và Tài liệu tham chiếu cấu hình.