Codex SDK¶
Codex を Codex CLI、IDE 拡張機能、または Codex cloud を通じて使用している場合は、プログラムから制御することもできます。
SDK は、次のような場合に使用します。
- CI/CD パイプラインの一部として Codex を制御する
- 複雑なエンジニアリングタスクを実行するために、Codex と連携できる独自のエージェントを作成する
- Codex を独自の内部ツールやワークフローに組み込む
- Codex を独自のアプリケーションに統合する
コーディングに重点を置いた Codex スレッドには、Codex SDK を使用します。Codex がより広範なオーケストレーションされたワークフロー内の 1 つの専門家として動作する場合は、Codex CLI を MCP サーバーとして実行し、Agents SDK でオーケストレーションします。
TypeScript ライブラリ¶
TypeScript ライブラリを使用すると、非対話モードよりも包括的かつ柔軟に、アプリケーション内から Codex を制御できます。
ライブラリはサーバーサイドで使用してください。Node.js 18 以降が必要です。
インストール¶
まず、npm を使用して Codex SDK をインストールします。
使用方法¶
Codex でスレッドを開始し、プロンプトを実行します。
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);
run() を再度呼び出すと、同じスレッドを継続できます。また、スレッド ID を指定して過去のスレッドを再開することもできます。
// 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);
詳しくは、TypeScript リポジトリをご覧ください。
Python ライブラリ¶
Python SDK は、JSON-RPC を介してローカルの Codex app-server を制御します。Python 3.10 以降が必要です。公開されている SDK ビルドには、固定された Codex CLI ランタイム依存関係が含まれています。
インストール¶
SDK をインストールするには、次を実行します。
公開 SDK ビルドでは、固定されたランタイムが自動的に使用されます。特定のローカル Codex 実行ファイルに対して実行する場合にのみ、CodexConfig(codex_bin=...) を渡してください。
Python SDK がベータ版である間は、pip install openai-codex によって最新の公開ベータビルドが選択されます。安定版 SDK がリリースされた後は、pip install --pre openai-codex を使用して、より新しいプレリリースビルドを明示的に選択してください。
使用方法¶
Codex を起動し、スレッドを作成して、プロンプトを実行します。
from openai_codex import Codex, Sandbox
with Codex() as codex:
thread = codex.thread_start(
model="gpt-5.4",
sandbox=Sandbox.workspace_write,
)
result = thread.run("Make a plan to diagnose and fix the CI failures")
print(result.final_response)
アプリケーションがすでに非同期の場合は、AsyncCodex を使用します。
import asyncio
from openai_codex import AsyncCodex
async def main() -> None:
async with AsyncCodex() as codex:
thread = await codex.thread_start(model="gpt-5.4")
result = await thread.run("Implement the plan")
print(result.final_response)
asyncio.run(main())
サンドボックスのプリセット¶
同じ Sandbox プリセットを使用して、スレッドの作成時、または後続のターンでファイルシステムへのアクセスを変更する際に指定します。
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)
使用可能なプリセットは次のとおりです。
Sandbox.read_only: 書き込みを許可せずにファイルを読み取ります。Sandbox.workspace_write: ワークスペース内および設定済みの書き込み可能なルート内で、ファイルの読み取りと書き込みを行います。Sandbox.full_access: ファイルシステムへのアクセス制限なしで実行します。
sandbox= を省略すると、app-server は設定済みのデフォルトを使用します。run(...) または turn(...) に渡されたサンドボックスは、そのターンと、スレッド上の後続のターンに適用されます。
詳しくは、Python リポジトリを確認してください。