ホームへ戻る

AI 開發工具

OpenAI Python SDK 3.6.0がHTTPX2へ移行、エンタープライズTLS、テストインターセプト、カスタムトランスポート層に移行対応が必要

OpenAI Python SDKは、同期・非同期のデフォルトクライアントをHTTPXからHTTPX2へ切り替え、旧版の`httpx`と`certifi`を推移的依存関係として提供しなくなった。通常のAPI呼び出しはほぼ変わらないが、企業プロキシ、カスタムtransport、RESPXテスト、証明書の信頼設定はアップグレード後に機能しなくなる可能性がある。

European Commission - Photographer: Aurore Martignoni · CC BY 4.0 · Image source
zh-Hant

OpenAIは8月28日、Python SDK 3.6.0をリリースした。最も重要な基盤部分の変更は、新しいモデルインターフェースの追加ではなく、同期・非同期のHTTPクライアントを全面的に、Pydanticがメンテナンスを引き継いだHTTPX2へ移行したことだ。`OpenAI()`または`AsyncOpenAI()`を直接生成するアプリケーションでは、既存のストリーミング、リトライ、数値指定のtimeout、パース済みレスポンスモデルを引き続き利用できる。実際に確認が必要なのは、SDKのトランスポート層に触れているコードだ。

新版では、`openai`をインストールしても旧版の`httpx`や`certifi`は同時にインストールされない。HTTPX2はデフォルトで`truststore`を介してOSのトラストストアを使用する。そのため、CAパッケージを含まない最小構成のコンテナ、変更版`certifi`に依存するデプロイ、TLS inspectionを使用する企業プロキシでは、アップグレード後に証明書検証エラーが発生する可能性がある。エンジニアリングチームは、まずイメージ内のシステムCAを確認するか、`SSL_CERT_FILE`、`SSL_CERT_DIR`、または明示的な`ssl.SSLContext`で信頼元を指定すべきだ。

カスタムクライアントについても、`httpx.Client`、`Timeout`、`URL`、transport、認証ハンドラー、イベントhookをHTTPX2の対応オブジェクトへ置き換える必要がある。raw response、ストリーミングラッパー、低レベル例外も、現在は同様に`httpx2`の型となっている。旧HTTPXのみをインターセプトするRESPXやtracingプラグインでは、リクエストを検出できない可能性がある。公式には旧HTTPX clientを注入する一時的な回避策が残されているが、公開型はすでにHTTPX2を前提としているため、ユーザーは`cast`を使用するか、静的型エラーを無視する必要がある。また、この互換ルートは将来削除される可能性がある。

今回の移行は、モデルSDKのネットワークスタック自体が本番環境におけるリスク境界になっていることを示している。アップグレード前には、プロキシ、mTLS、ストリーミングの中断、コネクションプール、mock transport、最小構成コンテナを対象とした統合テストを実施すべきであり、Responses APIから1回正常なレスポンスを受け取れたことだけを検証結果としてはならない。

出典

  1. Migrating to HTTPX2
  2. OpenAI Python API library 3.6.0
  3. HTTPX2 documentation