構成:詰まり · マトリクス · 手順 · 排障 · FAQ
前段は LiteLLM ルーティング稿、ツールは Schema 再試行稿、計装は 可観測性マトリクス と併読ください。
最初に詰まるポイント
1. クライアントだけでは出口検証が弱く境界が抜けます。2. タイムアウト一層では遅延の所在が読みにくいです。3. 長い失敗ログは相関を散らします。4. スキーマ版がブランチごとにズレると検収が再現しません。
意思決定マトリクス
| 観点 | Instructor のみ | ゲートウェイで Schema 強制 |
|---|---|---|
| 検証の位置 | プロセス内に閉じる | 出口手前で不正応答を止める |
| 鍵の扱い | 開発機に依存しやすい | スコープ付き鍵をゲートウェイだけが保持 |
| 遮断 | 例外処理に任せる | タイムアウト+サーキットを数値で固定 |
下流はループバックに閉じ、外向きはゲートウェイだけにし、論理モデル名とスキーマ版はリポジトリで凍結すると運用が楽になります。
再現手順(コマンドと設定)
一、仮想環境を作り依存を固定します。例は以下です。
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip instructor openai httpx pydantic二、ベース URL・スコープ付き鍵・秒タイムアウトを環境変数に書き、シェルと launchd で同じ値に揃えます。
export OPENAI_BASE_URL=http://127.0.0.1:8787/v1
export OPENAI_API_KEY=sk-gateway-scoped
export LLM_CONNECT_TIMEOUT_SEC=8
export LLM_TOTAL_TIMEOUT_SEC=45
export GATEWAY_JSON_SCHEMA_STRICT=true三、Pydantic モデルを一つにまとめ model_json_schema() をゲートウェイの response_format 名と一致させます。ズレは検証漏れです。
四、Instructor は base_url と api_key を上記のみに向け、ハンドラは終了理由と要求識別子だけを構造化します。
五、ゲートウェイでサーキットを開閉し理由をログ化、要約はモデル名・上流ステータス・短コード・相関 ID のみ、本文と鍵片は送りません。
六、スキーマ破り・無効鍵・遅延下流で障害を再現し、どちらが先に遮断したか検収します。
排障メモ
- 400/422:
response_format名と必須フィールドを確認します。 - タイムアウト増:接続秒と全体秒の先発火をログで見分けます。
- サーキット固定:閾値と合成ヘルスを見直します。
FAQ
ノートで十分か。 専用リモートマックの方が尾部が安定し検収に向きます。
失敗要約を外向きに。 原則内部のみ、外向きは短いコードにマスクします。
料金・購入にログインは。 閲覧はログイン不要です。公開ページで比較してから環境へ写してください。