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-sdk

Kullanı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-codex

Yayı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.