Codex SDK

Điều khiển tác nhân Codex cục bộ bằng chương trình

Nếu sử dụng Codex thông qua Codex CLI, tiện ích mở rộng IDE hoặc Codex cloud, bạn cũng có thể điều khiển Codex bằng chương trình.

Dùng SDK khi bạn cần:

  • Điều khiển Codex như một phần trong pipeline CI/CD
  • Tạo tác nhân riêng có thể tương tác với Codex để thực hiện các tác vụ kỹ thuật phức tạp
  • Tích hợp Codex vào các công cụ và quy trình làm việc nội bộ của riêng bạn
  • Tích hợp Codex vào ứng dụng của riêng bạn

Sử dụng Codex SDK để tự động hóa các tác vụ lập trình, bao gồm cả công việc trong CI. Sử dụng Codex app server để xây dựng ứng dụng khách tùy chỉnh có khả năng xử lý xác thực, lịch sử hội thoại, phê duyệt và các sự kiện tác nhân được truyền phát trực tiếp.

Lệnh codex mcp-server và tệp nhị phân độc lập codex-mcp-server đã bị loại bỏ. Hãy sử dụng máy chủ ứng dụng Codex cho các tích hợp hiện có.

Nếu bạn có quyền truy cập beta và cần quét repository hoặc thay đổi với các phát hiện bảo mật và phạm vi kiểm tra có cấu trúc, hãy dùng Codex Security TypeScript SDK.

Thư viện TypeScript

Thư viện TypeScript cho phép ứng dụng của bạn bắt đầu, tiếp tục và khôi phục các luồng Codex cục bộ.

Hãy sử dụng thư viện ở phía máy chủ; thư viện yêu cầu Node.js 18 trở lên.

Cài đặt

Để bắt đầu, hãy cài đặt Codex SDK bằng npm:

npm install @openai/codex-sdk

Cách sử dụng

Bắt đầu một luồng với Codex và chạy luồng đó bằng prompt của bạ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);

Gọi lại run() để tiếp tục trên cùng một luồng hoặc khôi phục luồng trước đây bằng cách cung cấp ID luồng.

// 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);

Ghi đè cấu hình

Truyền config để đặt cấu hình Codex có cấu trúc. Với các khóa không thể biểu diễn bằng đường dẫn phân tách bằng dấu chấm, hãy dùng configOverrides để truyền các chuỗi TOML thô dưới dạng các đối số --config riêng biệt:

const codex = new Codex({
  config: { default_permissions: "audit" },
  configOverrides: [
    'permissions.audit.filesystem={":root"="read","/path/to/project/.env"="deny"}',
  ],
});

Các giá trị ghi đè thô được ưu tiên hơn config có cấu trúc. SDK áp dụng các thiết lập được quản lý như baseUrl và các tùy chọn riêng của luồng sau đó, nên chúng được ưu tiên hơn cả hai. Các giá trị ghi đè này không thay đổi các tệp cấu hình Codex của bạn.

Để biết thêm chi tiết, hãy xem repo TypeScript.

Thư viện Python

Python SDK điều khiển Codex app-server cục bộ qua JSON-RPC. SDK yêu cầu Python 3.10 trở lên. Các bản build SDK đã phát hành bao gồm một phần phụ thuộc runtime Codex CLI được ghim phiên bản.

Cài đặt

Để cài đặt SDK, hãy chạy:

pip install openai-codex

Các bản build SDK đã phát hành tự động sử dụng runtime được ghim phiên bản. Chỉ truyền CodexConfig(codex_bin=...) khi bạn chủ ý muốn chạy với một tệp thực thi Codex cục bộ cụ thể.

Python SDK hiện có dưới dạng bản phát hành ổn định. pip install openai-codex cài đặt bản phát hành ổn định mới nhất. Sử dụng pip install --pre openai-codex để chủ động sử dụng các bản dựng tiền phát hành mới hơn.

Cách sử dụng

Khởi động Codex, tạo một luồng và chạy một câu lệnh nhắc. Các ví dụ sử dụng GPT-6.1 Sol, mô hình này phải khả dụng với tài khoản bạn đã đăng nhập. Nếu không, hãy bỏ model để sử dụng mô hình mặc định đã cấu hình. Xem Khả năng sử dụng GPT-6.1 Sol theo gói.

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)

Dùng AsyncCodex khi ứng dụng của bạn đã hoạt động bất đồng bộ:

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())

Cấu hình môi trường cô lập có sẵn

Dùng cùng các cấu hình Sandbox khi tạo luồng hoặc thay đổi quyền truy cập hệ thống tệp cho một lượt sau:

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)

Các cấu hình có sẵn:

  • Sandbox.read_only: Đọc tệp nhưng không cho phép ghi.
  • Sandbox.workspace_write: Đọc tệp và ghi bên trong workspace cùng các thư mục gốc cho phép ghi đã cấu hình.
  • Sandbox.full_access: Chạy không có giới hạn truy cập hệ thống tệp.

Khi bạn bỏ qua sandbox=, app-server sử dụng cấu hình mặc định của nó. Cấu hình môi trường cô lập được truyền cho run(...) hoặc turn(...) áp dụng cho lượt đó và các lượt sau trong luồng.

Để biết thêm chi tiết, hãy xem repo Python.