Pythonから使うCodex CLI

Event:

みんなのPython勉強会#121

Presented:

2026/05/21 nikkie

祝11周年!

ご参加いただいた方々に深く感謝

Codex [1]

  • powered by ChatGPT (OpenAI)

  • 知ってますか?🙋‍♂️ 使ってますか?🙋

  • ChatGPT 無料版でも 使えます

多様な形態 [2]

  • App

  • CLI

  • IDE拡張

  • Web

nikkieとCodex

  • CLIで使い出す

  • いまは Appおすすめgit worktree が簡単!

  • 鋭いレビューに開発中たびたび救われてきた [3]

Appには pet[4]

多様な形態を支える App Server

TypeScript SDK

実は Python SDK

環境構築

gh repo clone openai/codex
cd codex/sdk/python
uv sync --python 3.13

Hello world

>>> from shutil import which
>>> codex_path = which("codex")
>>> from openai_codex import AppServerConfig, Codex
>>> with Codex(AppServerConfig(codex_bin=codex_path)) as codex:
...     thread = codex.thread_start(model="gpt-5.5")
...     result = thread.run("みんなのPython勉強会11周年の祝辞を述べて")
...     print(result.final_response)

豊富な例

11_cli_mini_app

自分用ミニCLI!
% .venv/bin/python examples/11_cli_mini_app/sync.py
Codex mini CLI. Type /exit to quit.
Thread: 019e4898-8563-7c62-b3f1-fa3cc112c6f1
you> こんにちは
assistant> こんにちは。何を進めますか?
assistant.status> completed
usage>
last: input=19259 output=53 reasoning=38 total=19312 cached=3456
total: input=19259 output=53 reasoning=38 total=19312 cached=3456

裏の仕組み:直接JSON-RPC

codex app-server して1行ずつ入力していきます
{"id":"CBDA577B-6280-4C3E-8C00-523BA5033C2D","method":"initialize","params":{"clientInfo":{"name":"codex_python_sdk","title":"Codex Python SDK","version":"1.131.0"},"capabilities":{"experimentalApi":true}}}
{"method":"initialized"}
{"id":"1CA55CCA-DBAB-4048-93FF-C5EC22DCE350","method":"thread/start","params":{"approvalPolicy":"on-request","approvalsReviewer":"auto_review","model":"gpt-5.5"}}
{"id":"42DDE51B-6FD6-40F0-BCBF-C701AF5BE6C0","method":"turn/start","params":{"threadId":"019e49b5-5261-7993-b82e-2058d951b9de","input":[{"type":"text","text":"みんなのPython勉強会11周年の祝辞を述べて"}]}}

まとめ🌯:Pythonから使うCodex CLI

  • OpenAIがCodexを多様な形態で提供できるヒミツ: App Server

  • リポジトリには Python SDK がある

  • 環境構築してPythonからCodexを操作できた!

ご清聴ありがとうございました!

../_images/uzabase-white-logo.png