Phaseoとネイティブ非同期クライアントAsyncPhaseoを提供します。
ネイティブ非同期リクエスト
async for event in client.responses.stream(request)を使います。
asyncioのネイティブキャンセルでHTTPとポーリングが停止します。リソースはテキスト、
画像、音声、音楽、動画、バッチ、ファイル、モデル、埋め込み、OCR、再ランキング、解析、
モデレーション、判断をカバーします。その他のHTTP操作はawait client.request(...)を使います。
注入したHTTPXクライアントは呼び出し元が管理します。
両クライアントは元のクライアントを変更せずにwith_options(timeout=30, max_retries=2)を
サポートします。HTTPXのタイムアウトはネットワークの無通信時間を秒で制限します。再試行は
既定で0回で、応答を読む前のGET/HEADにのみ適用され、送信には適用されません。
PhaseoHTTPErrorは本文、コード、リクエストID、トレースURL、再試行遅延を公開します。
更新時は同期JSONリクエストでのurllib.error.HTTPErrorの捕捉を
PhaseoHTTPError(またはhttpx.HTTPStatusError)に変更し、接続エラーの捕捉を
httpx.TransportErrorに変更します。error.statusはHTTPステータスで、error.codeは
APIエラーコードです。
追加の便利な機能
ジョブリソースはresult、events、to_dictを持つstartとresumeの
ハンドルを提供します。非同期メソッドを待機し、async forで非同期イベントを反復します。
リモートキャンセルは動画とバッチのみ対応します。メディアは
videos.stream_content(id)、バッチはbatches.results(id)でストリーミングします。同期の
download_to(chunks, binary_file)はファイル全体をバッファリングせず書き込みます。
アップロードはバイト列、Pathオブジェクト、ファイルオブジェクト、HTTPXファイルタプルを受け付けます。
responses.parse(request, PydanticModel)は完了したJSON出力を検証します。
サーバーの応答形式を明示してください。collect_streamと
collect_async_streamは解析済みテキストイベントと使用量を集めます。
check_model_capabilities(id, input_types=..., output_types=..., endpoints=..., parameters=..., parameter_values=...)は1つの利用可能なプロバイダー提供に対する公開機能とスカラー
制約をまとめて確認します。不明な情報があると事前確認は失敗します。
モデル選択やパラメーター編集には、現在のエンドポイントメタデータを使います。
supported、partial、unsupported、unknownと示され、
対応するプロバイダールートと表示に使える制約の問題が含まれます。
client.models.capabilities(model_id)はエンドポイントの機能応答全体を
返します。AsyncPhaseoは同じメソッドをawait可能な形で提供します。
ローカルテストにはhttpx.Clientまたはhttpx.AsyncClientで
phaseo.testing.MockTransportを注入します。想定外のリクエストはローカルで失敗し、assert_done()で
全テストデータの使用を確認できます。実際のプロバイダー動作を検証するものではありません。
Phaseoルームはコードを取得で送信したリクエストの実行可能コードをエクスポートします。
主な機能
- OpenAPI 仕様から生成された型付きリクエストモデル。
- チャット、Responses、Messages、画像、音声、埋め込み、モデレーション、ファイル、バッチ、生成、非同期動画ジョブ用の組み込みヘルパー。
- テキスト、Responses、Messages 用のストリーミングヘルパー(
stream_*イテレーター)。 - 制御プレーン用のヘルパーとして、モデル、エンドポイント、組織、料金の確認と計算、APIキーとワークスペースのライフサイクル管理、現在のキーの確認、ヘルス状態、プロバイダー、クレジット、アクティビティ、分析を利用できます。
簡単な例
音楽・動画・バッチの完了を待つ
videos.generate_and_wait(request, **options)、バッチにはbatches.create_and_wait(request, **options)を使います。同期ヘルパーは1回だけ送信し、必要時のみポーリングして完了応答全体を返します。JobFailedError.responseは失敗、キャンセル、期限切れの詳細を保持します。完了したバッチにも個別の失敗が含まれる場合があります。
各リソースはwait(id, **options)で既存ジョブを再開し、すべての最終応答を返せます。音楽には直接呼べるcreate(request)とretrieve(id)もあります。
オプションはinterval(秒、既定5、最小0.25)、timeout(秒、既定1800)、on_poll、cancel_event(threading.Event)です。待機タイムアウトは送信から戻った後に開始します。同期クライアントはリクエストとコールバックの間にキャンセルと期限を確認しますが、これらのオプションで進行中のHTTP呼び出しは中断できません。
JobTimeoutErrorとJobCancelledErrorはjob_idとlast_responseを保持します。.wait(error.job_id)で再開してください。ローカルのタイムアウトやキャンセルはリモートジョブを停止せず、送信も自動再試行されません。ヘルパーはGatewayにバックグラウンド実行を追加しません。
“含まれるもの”
Phaseoクライアントchat.completions.create(...)andresponses.create(...)互換ヘルパー- リソースヘルパー(例:)
client.batches,client.videos,client.files, andclient.async_jobs - バッチと動画のライフサイクルストリーム用非同期ジョブ WebSocket URL ヘルパー
client.batches.stream_results(batch_id)バッチJSONLのバイトチャンク用- モデルのライフサイクル用ヘルパー(例:)
get_model_deprecation_info(...)andvalidate_model(...) - テキスト、Responses、Messages 用のストリーミングイテレーター
phaseo.modelsにある生成済みリクエスト/レスポンスモデル