Codex SDK
Yerel Codex ajanlarını programlı olarak denetleyin
Codex'i Codex CLI, IDE uzantısı veya Codex cloud üzerinden kullanıyorsanız programlı olarak da denetleyebilirsiniz.
Şu durumlarda SDK'yı kullanın:
- Codex'i CI/CD işlem hattınızın bir parçası olarak denetlemek
- Karmaşık mühendislik görevlerini gerçekleştirmek için Codex ile etkileşim kurabilen kendi ajanınızı oluşturmak
- Codex'i kendi dâhilî araçlarınıza ve iş akışlarınıza eklemek
- Codex'i kendi uygulamanızla tümleştirmek
CI kapsamındaki işler de dâhil olmak üzere kodlama görevlerini otomatikleştirmek için Codex SDK'yı kullanın. Kimlik doğrulama, konuşma geçmişi, onaylar ve akış hâlindeki ajan olaylarını işleyen özel istemciler oluşturmak için Codex app-server'ını kullanın.
codex mcp-server komutu ve bağımsız codex-mcp-server ikili dosyası kaldırılmıştır. Mevcut entegrasyonlar için Codex app-server'ını kullanın.
Beta erişiminiz varsa ve yapılandırılmış güvenlik bulguları ile kapsam bilgileri sunan depo veya değişiklik taramalarına ihtiyacınız varsa Codex Security TypeScript SDK'yı kullanın.
TypeScript kitaplığı
TypeScript kitaplığı, uygulamanızın yerel Codex thread'lerini başlatmasına, sürdürmesine ve devam ettirmesine olanak tanır.
Kitaplığı sunucu tarafında kullanın; Node.js 18 veya üzerini gerektirir.
Kurulum
Başlamak için npm kullanarak Codex SDK'yı yükleyin:
npm install @openai/codex-sdkKullanım
Codex ile bir thread başlatın ve prompt'ınızla çalıştırın.
const codex = new Codex();
const thread = codex.startThread();
const result = await thread.run(
"Make a plan to diagnose and fix the CI failures"
);
console.log(result.finalResponse);Aynı thread'de devam etmek için run() öğesini yeniden çağırın veya bir thread kimliği sağlayarak geçmiş bir thread'i devam ettirin.
// running the same thread
const result = await thread.run("Implement the plan");
console.log(result.finalResponse);
// resuming past thread
const threadId = "<thread-id>";
const thread2 = codex.resumeThread(threadId);
const result2 = await thread2.run("Pick up where you left off");
console.log(result2.finalResponse);Yapılandırmayı geçersiz kılan değerler
Yapılandırılmış Codex ayarlarını belirlemek için config geçirin. Noktayla ayrılmış yollarla ifade edilemeyen
anahtarlar için configOverrides kullanarak ham TOML dizelerini
ayrı --config argümanları olarak geçirin:
const codex = new Codex({
config: { default_permissions: "audit" },
configOverrides: [
'permissions.audit.filesystem={":root"="read","/path/to/project/.env"="deny"}',
],
});Ham geçersiz kılma değerleri, yapılandırılmış config ayarlarından önceliklidir. SDK,
baseUrl gibi yönetilen ayarları ve iş parçacığına özgü seçenekleri daha sonra uygular; bu nedenle
bunlar her ikisinden de önceliklidir. Bu geçersiz kılma değerleri, Codex yapılandırma
dosyalarınızı değiştirmez.
Daha fazla ayrıntı için TypeScript deposuna bakın.
Python kitaplığı
Python SDK, yerel Codex app-server'ını JSON-RPC üzerinden denetler. Python 3.10 veya üzerini gerektirir. Yayımlanmış SDK derlemeleri, sabitlenmiş bir Codex CLI çalışma zamanı bağımlılığı içerir.
Kurulum
SDK'yı yüklemek için şunu çalıştırın:
pip install openai-codexYayımlanmış SDK derlemeleri sabitlenmiş çalışma zamanlarını otomatik olarak kullanır. CodexConfig(codex_bin=...) öğesini yalnızca belirli bir yerel Codex yürütülebilir dosyasına karşı çalıştırmayı özellikle istediğinizde iletin.
Python SDK kararlı bir sürüm olarak kullanıma sunulmuştur. pip install openai-codex
en son kararlı sürümü yükler. Daha yeni ön sürüm derlemelerini kullanmayı
tercih etmek için pip install --pre openai-codex kullanın.
Kullanım
Codex'i başlatın, bir thread oluşturun ve bir prompt çalıştırın. Örneklerde GPT-6.1 Sol kullanılır;
bu model, oturum açtığınız hesapta kullanılabilir olmalıdır. Aksi takdirde, yapılandırılmış varsayılanınızı kullanmak için model parametresini
kaldırın. Planlara göre GPT-6.1 Sol kullanılabilirliği bölümüne bakın.
from openai_codex import Codex, Sandbox
with Codex() as codex:
thread = codex.thread_start(
model="gpt-6.1-sol",
sandbox=Sandbox.workspace_write,
)
result = thread.run("Make a plan to diagnose and fix the CI failures")
print(result.final_response)Uygulamanız zaten eşzamansız çalışıyorsa AsyncCodex öğesini kullanın:
import asyncio
from openai_codex import AsyncCodex
async def main() -> None:
async with AsyncCodex() as codex:
thread = await codex.thread_start(model="gpt-6.1-sol")
result = await thread.run("Implement the plan")
print(result.final_response)
asyncio.run(main())Sandbox ön ayarları
Bir thread oluştururken veya sonraki bir tur için dosya sistemi erişimini değiştirirken aynı Sandbox ön ayarlarını kullanın:
from openai_codex import Codex, Sandbox
with Codex() as codex:
thread = codex.thread_start(sandbox=Sandbox.workspace_write)
thread.run("Make the requested change.")
review = thread.run("Review the diff only.", sandbox=Sandbox.read_only)Kullanılabilir ön ayarlar:
Sandbox.read_only: Yazmaya izin vermeden dosyaları okuyun.Sandbox.workspace_write: Dosyaları okuyun; çalışma alanının ve yapılandırılmış yazılabilir köklerin içine yazın.Sandbox.full_access: Dosya sistemi erişimi kısıtlamaları olmadan çalıştırın.
sandbox= öğesini belirtmediğinizde app-server, yapılandırılmış varsayılanını kullanır. run(...) veya turn(...) öğesine iletilen bir sandbox, ilgili tur ve thread'deki sonraki turlar için geçerli olur.
Daha fazla ayrıntı için Python deposuna bakın.