Codex ile görsel oluşturma: imagegen ve özel sağlayıcı
config.toml'deki iki satır, Codex'in yerleşik görsel aracını relay arkasında da açıyor. 29 Ekim 2026'da çalıştırdığımız yapılandırma, görsellerin kaydedildiği yer ve relay'in döndürmesi gerekenler burada.
Bu sayfada
- Özel sağlayıcıda imagegen neden kayboluyor
- imagegen'i açan config.toml
- Bir görsel üretin ve dosyayı bulun
- Var olan bir görseli düzenlemek
- Saydam arka plan
- Relay'iniz ne döndürmeli (gpt-image-2, b64_json)
- Hatalar ve çözümleri
- Codex görsel aracı olmadığını söylüyor
- Codex OPENAI_API_KEY istiyor
- failed to decode image generation response: missing field b64_json
- Görsel isteği model_not_found ile başarısız oluyor
- Reconnecting... 1/5 (stream disconnected before completion)
- Sık sorulan sorular
- imagegen için OPENAI_API_KEY gerekli mi?
- Başka bir görsel modeli, boyut veya kalite seçebilir miyim?
- $imagegen yazmam gerekiyor mu?
- Codex masaüstü uygulamasında çalışır mı?
- Kontrol edilen kaynaklar
Codex ile görsel oluşturmayı özel bir sağlayıcı (relay) üzerinden kullanmak için config.toml'de iki satır yeter: http_headers içine x-openai-actor-authorization adında, boş olmayan bir değer ve requires_openai_auth = false, yani varsayılan değeri. Bununla Codex 0.165.0 görsel isteklerini relay'in /images/generations adresine gpt-image-2 modeliyle gönderir ve PNG'yi ~/.codex/generated_images/ altına kaydeder. 29 Ekim 2026'da bu, 29.0 saniyede 1024×1024 bir PNG verdi; aynı yapılandırmayı başlık olmadan kullandığımızda görsel aracı hiç görünmedi.
Testleri macOS üzerinde Codex CLI 0.165.0 ile yaptık ve özel sağlayıcı olarak kendi API ağ geçidimiz OmniaKey'i kullandık.
Özel sağlayıcıda imagegen neden kayboluyor
Codex 0.165.0, modele görsel aracı verilip verilmeyeceğine tek bir fonksiyonda karar verir: image_generation_available. Baktığı şey sağlayıcı bloğunuz ve sakladığı oturum açma bilgisidir.
requires_openai_auth = false, actor başlığı yok: görsel aracı yok. Bu yapılandırmayla çalıştırdığımızda Codex şöyle yanıtladı: "I don’t have a built-in image generation tool available in this session." (Bu oturumda yerleşik bir görsel oluşturma aracım yok.)requires_openai_auth = falseartıx-openai-actor-authorizationbaşlığı: araç görünür. Başlıkla yaptığımız üç çalıştırmanın üçü de (yeni görsel, düzenleme ve saydam çıkartma) aracı çağırdı.requires_openai_auth = trueve API anahtarıyla oturum açma: görsel aracı yok. Codex 0.165.0 kodunda bu kontrol ChatGPT oturumu istiyor; API anahtarıyla açılan oturum sayılmıyor.
Bu kapının arkasında iki küçük koşul var, ikisi de Codex 0.165.0 kodunda: kayıtlı ücretsiz bir ChatGPT planı oturumu, özel sağlayıcıda bile aracı gizliyor; sohbet modelinin de görselleri kabul etmesi gerekiyor, ki Codex kendi listesinde olmayan model adlarında bunu varsayıyor.
Araç yokken Codex ya yerleşik görsel aracı olmadığını söyler (başlıksız çalıştırmamızdaki gibi) ya da imagegen becerisi OPENAI_API_KEY gerektiren CLI yedeğini önerir.
imagegen'i açan config.toml
~/.codex/config.toml dosyasını açın. Relay'inizin sağlayıcı bloğuna http_headers satırını ekleyin ve requires_openai_auth değerinin false (varsayılan) olduğunu doğrulayın.
model = "gpt-6.1-sol" # relay'inizin sunduğu bir sohbet modeli
model_provider = "relay"
[model_providers.relay]
name = "My relay"
base_url = "https://api.omniakey.com/v1"
env_key = "RELAY_API_KEY"
wire_api = "responses"
requires_openai_auth = false
http_headers = { "x-openai-actor-authorization" = "local-relay" }
[features]
image_generation = true # Codex 0.165.0'da zaten varsayılan olarak açık
model ve model_provider üst düzey anahtarlardır, bu yüzden ilk [section] satırının üstünde durmaları gerekir: TOML, bir [section] başlığından sonraki her satırı o bölümün parçası olarak okur.
requires_openai_auth = false, Codex'in ortamınızdaki anahtarı, yanienv_keyiçinde adı geçen değişkeni kullanmasını sağlar. OpenAI'nin kimlik doğrulama sayfası (29 Ekim 2026'da kontrol edildi) şöyle diyor: "Whenrequires_openai_auth = true, Codex ignoresenv_key." (requires_openai_auth = trueolduğunda Codexenv_keydeğerini yok sayar.)http_headersiçindeki değer actor başlığıdır. OpenAI'nin yapılandırma referansı bunu "Static HTTP headers added to provider requests" (sağlayıcı isteklerine eklenen sabit HTTP başlıkları) diye adlandırıyor; Codex yalnızca değerin boş olmadığını kontrol ediyor (Codex kaynağındaki kontrol), yani "local-relay" bir yer tutucu, parola değil.[features] image_generation = true0.165.0'da isteğe bağlı: özellik kararlı ve varsayılan olarak açık (codex features listçıktısıimage_generation stable true). Çalıştırmalarımızda bu satırı yazmadık.wire_api = "responses", OpenAI'nin yapılandırma referansının desteklediği tek değer.
Anahtarı ayarlayıp Codex'i başlatın:
export RELAY_API_KEY="your-relay-key"
codex
Codex zaten çalışıyorsa kapatın ve yeni bir oturum açın; yeni yapılandırmayı ancak o zaman okur.
Bir görsel üretin ve dosyayı bulun
29 Ekim 2026'daki çalıştırmalarımız özel bir sağlayıcıdan geçti. Başlık olmadan yapılan 2. çalıştırma hiç görsel üretmedi. Diğer üçü birer 1024×1024 PNG kaydetti. Süreler yalnızca görsel çağrısını kapsıyor, turun tamamını değil.
| Çalıştırma | Ne istedik | Görsel çağrısı |
|---|---|---|
| 1 | Yeni bir uygulama simgesi | 29.0 s |
| 3 | 1. çalıştırmanın görselini düzenle | 37.6 s |
| 4 | Saydam bir çıkartma | 19.8 s |
- çalıştırma tek bir istemdi:
Create an app icon for a note-taking app called Inkwell: a fountain pen nib over a deep blue gradient, flat vector style, no text. Generate it with your image tool, then tell me where the file was saved.
Codex, istemde $imagegen olmadığı halde imagegen becerisini kendi başına açtı, sonra aracı çağırdı. Çağrı 29.0 saniye sürdü ve tur tek bir 1024×1024 PNG ile bitti.
Dosya ~/.codex/generated_images/<session id>/<call id>.png yoluna düşer; ~/.codex, CODEX_HOME için varsayılan değerdir. Codex yolu, istem sorduğu için yazdırdı. Görsel projenizde kullanılacaksa istemde hedefi belirtin; beceri Codex'e dosyayı oraya taşımasını ya da kopyalamasını söyler.
Var olan bir görseli düzenlemek
- çalıştırmanın PNG'si çalışma klasörüne
inkwell.pngolarak geldi ve şöyle istedik:
Edit the image ./inkwell.png: change the background to a warm orange gradient and keep the pen nib as it is. Use your built-in image tool, then tell me where the edited file was saved.
Codex dosyayı referenced_image_paths içine koydu, böylece istek /images/edits adresine gitti. Çağrı 37.6 saniye sürdü ve özgün inkwell.png olduğu gibi kaldı. OpenAI'nin görsel oluşturma sayfası (29 Ekim 2026'da kontrol edildi) şöyle diyor: "When editing an existing image, say exactly what should change and what must stay the same." (Var olan bir görseli düzenlerken neyin değişmesi, neyin aynı kalması gerektiğini tam olarak söyleyin.) Gerisini GPT-Image 2 istem rehberi anlatıyor.


Saydam arka plan
- çalıştırma bir çıkartma istedi:
Create a PNG sticker of a single fountain pen nib on a fully transparent background (no backdrop at all), flat vector style, no text. Generate it with your built-in image tool, then tell me where the file was saved.
Codex transparent_background: true ayarını yaptı, çağrı 19.8 saniye sürdü ve kaydedilen PNG'nin piksellerinin 85.0% kadarı tamamen saydam. OpenAI'nin Images API referansı, gpt-image-2 için saydam arka planları "in preview" (önizlemede) olarak listeliyor: bizim çalıştırmamızda işe yaradı, ama özellik hâlâ önizleme aşamasında.

Relay'iniz ne döndürmeli (gpt-image-2, b64_json)
Codex yeni görsel için POST <base_url>/images/generations, düzenleme için POST <base_url>/images/edits gönderir; ikisi de JSON'dur ve model gpt-image-2, yani relay'inizin sunması gereken GPT-Image 2 kimliğidir. Kalite ve boyut "auto", background "opaque" ya da "transparent" olur; istekte response_format ve n bulunmaz. Hepsi sohbet isteklerinizle aynı temel URL'ye ve aynı anahtarla gider. Düzenleme, kaynak görseli dosya yüklemek yerine JSON içinde data URL olarak taşır.
Codex, created ve ilk öğesinde b64_json bulunan bir data listesi içeren JSON yanıtı okur; diğer alanlar yok sayılır, images.rs bunu gösteriyor. Ayrıştırma başarısız olursa mesaj "failed to decode image generation response:" ile başlar.
Relay'i Codex olmadan da kontrol edebilirsiniz. Şunu relay-check.sh olarak kaydedin:
curl -s https://api.omniakey.com/v1/images/generations \
-H "Authorization: Bearer $RELAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-image-2", "prompt": "a red apple on a white table", "background": "opaque", "quality": "auto", "size": "auto"}' \
| python3 -c 'import json,sys; r=json.load(sys.stdin); print(r.get("error") or sorted(r["data"][0]))'
Temel URL'yi relay'inize çevirin ve anahtarınızı RELAY_API_KEY olarak dışa aktarın. 29 Ekim 2026'da kendi ağ geçidimize karşı kontrol 25.0 saniyede HTTP 200 döndü ve şunu yazdırdı:
['asset_id', 'b64_json', 'expires_at', 'revised_prompt', 'url']
Bu listede b64_json yoksa Codex aynı yanıtta başarısız olur. Relay bir hata döndürürse kontrol o hatayı yazdırır.
Bazı relay'ler burada kırılır çünkü görseli dosya olarak saklarlar. Aynı Images API referansı (29 Ekim 2026'da kontrol edildi) response_format için "Legacy response format parameter for retired image models. Unsupported for GPT image models, which always return base64-encoded images" (kullanımdan kalkmış görsel modeller için eski yanıt biçimi parametresi; GPT görsel modellerinde desteklenmez, onlar her zaman base64 kodlu görsel döndürür) diyor; b64_json ise "Returned by default for GPT image models" (GPT görsel modellerinde varsayılan olarak döner). OpenAI yanıtını olduğu gibi ileten relay sorun çıkarmaz; yalnızca bağlantı döndüren relay Codex'i bozar.
OmniaKey ağ geçidi 29 Ekim 2026'daki bir düzeltmeye kadar bu sorunu yaşadı. Düzeltme notunda Codex'in "missing field b64_json" ile başarısız olduğu yazıyor; artık çağıran URL istemedikçe ağ geçidi b64_json değerini koruyor.
Relay'iniz bu kontrolü geçemiyorsa OmniaKey, gpt-image-2 ile gpt-6.1-sol gibi sohbet modellerini tek anahtarla sunuyor ve görsel yanıtlarında b64_json var, kontrolün gösterdiği gibi. Sağlayıcı bloğuna base_url = "https://api.omniakey.com/v1" yazın ve env_key ile adı verilen değişkene OmniaKey anahtarını koyun; dosyanın gerisini Codex CLI rehberi anlatıyor, güncel fiyatlar da fiyat sayfasında.
Hatalar ve çözümleri
Codex görsel aracı olmadığını söylüyor
İlk bölümdeki koşullardan biri karşılanmıyor. http_headers satırını ekleyin, requires_openai_auth = false ve env_key değerini olduğu gibi bırakın ve yeni bir oturum açın. Yine olmuyorsa codex login status çalıştırın; ücretsiz ChatGPT planında codex logout kayıtlı oturumu siler ve env_key içindeki anahtar yeter.
Codex OPENAI_API_KEY istiyor
Yerleşik araç kullanılamıyor, bu yüzden imagegen becerisi OPENAI_API_KEY gerektiren CLI yedeğini, scripts/image_gen.py dosyasını öneriyor. Bunun yerine yerleşik aracı yukarıdaki yapılandırmayla düzeltin; yerleşik modda anahtar env_key içinden gelir.
failed to decode image generation response: missing field b64_json
Relay b64_json olmadan yanıt verdi, çoğunlukla saklanan dosyaya bir bağlantı gönderdi. Relay bölümündeki kontrolü ona karşı çalıştırın ve sonucu işleten kişiye iletin; Codex data listesinin ilk öğesindeki base64 dizesini istiyor.
Görsel isteği model_not_found ile başarısız oluyor
Anahtarınızın bu relay'de gpt-image-2 yetkisi yok; Codex her zaman bu kimliği gönderir ve değiştirmek için bir ayar yok. Kendi ağ geçidimiz, sunmadığı bir görsel modeline HTTP 503 ve model_not_found koduyla yanıt verdi. gpt-image-2 modelini listeleyen bir anahtar ve relay kullanın.
Reconnecting... 1/5 (stream disconnected before completion)
Sohbet isteği koptu ve Codex yeniden denedi; sayaç beş denemenin kaçıncısı olduğunu gösteriyor. 1. çalıştırmada bir kez ("Concurrency limit exceeded for account, please retry later"), 3. çalıştırmada bir kez (bir aktarım hatası) göründü ve iki çalıştırma da yeniden denemeden sonra tamamlandı. Sürekli tekrarlanıyorsa relay'in sınırlarına bakın; sohbet sorunlarını Codex uyumluluk kiti anlatıyor.
Sık sorulan sorular
imagegen için OPENAI_API_KEY gerekli mi?
Hayır. Yerleşik modda anahtar env_key içinde adı geçen değişkenden gelir; OPENAI_API_KEY yalnızca becerinin CLI yedeği tarafından okunur.
Başka bir görsel modeli, boyut veya kalite seçebilir miyim?
Codex 0.165.0'da seçemezsiniz. Araç gpt-image-2 modelini "auto" kalite ve boyutla gönderir, config.toml'de bunlar için anahtar yok ve çalıştırmalarımızdaki tüm görseller 1024×1024 geldi. Başka boyut ya da model için relay'inizin görsel uç noktasını doğrudan çağırın.
$imagegen yazmam gerekiyor mu?
Hayır. Çalıştırmalarımızda Codex imagegen becerisini kendi başına açtı. OpenAI belgelerine göre istemde $imagegen yazmak beceriyi açıkça çağırır; Codex kendi seçmediğinde bu yardımcı olur.
Codex masaüstü uygulamasında çalışır mı?
Masaüstü uygulamasını test etmedik, yalnızca CLI'yi denedik. Topluluk düzeltme deposu, çalışan Codex Desktop'ın yeni ortam değişkenlerini almadığını söylüyor: macOS betiği bir LaunchAgent kuruyor, ardından Codex'i tamamen kapatıp yeni bir görev açıyorsunuz.
Kontrol edilen kaynaklar
- OpenAI Codex belgeleri: alternatif model sağlayıcıları için kimlik doğrulama
- OpenAI Codex belgeleri: yapılandırma referansı
- OpenAI Codex belgeleri: görsel oluşturma
- OpenAI API referansı: görsel oluşturma
- Codex 0.165.0 kaynağı: görsel aracının ne zaman sunulduğu
- Codex 0.165.0 kaynağı: actor başlığı kontrolü
- Codex 0.165.0 kaynağı: görsel yanıtının nasıl okunduğu
- GitHub'da xianyu110/codex-imagegen-relay-fix
Bu makaledeki modeller
İlgili makaleler
GPT-5.6 model bulunamadı
Önce hata metnini eşleştirin, sonra erişimi, API'yi ve Codex'i ayrı test edin.
GPT Image 2 prompt rehberi: yapı, örnekler ve gerçek görseller
Sekiz prompt ve dokuz gerçek görsel: GPT Image 2 neyi harfiyen tuttu, neyi ekledi ve nasıl düzeltilir.
Codex için en iyi GPT-5.6 modeli
Karmaşık kodlamada GPT-6.1 Sol ile başlayın, odaklı ve tekrarlanan işlerde GPT-6 Luna kullanın; GPT-5.6 üzerinde kalan işler için Sol, Terra ve Luna arasından seçin.
