openai-serve は環境変数で設定します。
ローカル開発では apps/openai-serve/.envrc.sample(direnv)を利用できます。
環境変数
| Name | Default | Notes |
|---|---|---|
OPENAI_SERVE_HTTP_ADDR | 127.0.0.1:8080 | HTTP listen host:port |
OPENAI_SERVE_LCPD_GRPC_ADDR | 127.0.0.1:50051 | lcpd-grpcd gRPC address |
OPENAI_SERVE_API_KEYS | (empty) | 設定すると Authorization: Bearer ... を必須にする |
OPENAI_SERVE_DEFAULT_PEER_ID | (empty) | デフォルトの LCP peer id(66 hex chars) |
OPENAI_SERVE_MODEL_MAP | (empty) | model=peer_id;model2=peer_id |
OPENAI_SERVE_MODEL_ALLOWLIST | (empty) | カンマ区切りの model IDs |
OPENAI_SERVE_ALLOW_UNLISTED_MODELS | false | true なら model 検証をスキップ |
OPENAI_SERVE_MAX_PRICE_MSAT | 0 | 0 より大きい場合、上限超の quote を拒否 |
OPENAI_SERVE_TIMEOUT_QUOTE | 5s | gRPC quote timeout |
OPENAI_SERVE_TIMEOUT_EXECUTE | 120s | gRPC execute timeout |
OPENAI_SERVE_LOG_LEVEL | info | debug, info, warn, error |
ログ(プライバシー)
openai-serve のログは、生のユーザー入力を永続化しなくても運用できるように設計しています。
- ログには、生のプロンプト(
messages[].content)や生のモデル出力を残してはいけません。 infoは、運用メタデータ(model/peer/job id、価格、時間、byte/token カウント)を記録します。debugは HTTP リクエストログがより詳細になり(client_ipを含むことがあります)、よりセンシティブとして扱ってください。
ルーティング(peer の選び方)
model ごとに Provider peer は以下の順で決定されます:
OPENAI_SERVE_MODEL_MAP(マップ先の peer が connected/LCP-ready の場合)OPENAI_SERVE_DEFAULT_PEER_ID(設定されており connected/LCP-ready の場合)- manifest の
supported_tasksで model を広告している peer(存在する場合) - フォールバックとして、接続されている peer の先頭
モデル検証(model validation)
誤ルーティングや想定外の課金を防ぐため、model を検証します。
OPENAI_SERVE_MODEL_ALLOWLISTが設定されている場合: allowlist に含まれるmodelのみ許可します (ただしOPENAI_SERVE_ALLOW_UNLISTED_MODELS=trueの場合は例外)。- それ以外の場合: 接続 peer が
supported_tasksを広告しているなら、少なくとも 1 peer が広告しているmodelのみ許可します。 もし全 peer がsupported_tasksを広告していない場合は、ゲートウェイを使える状態に保つため検証をスキップします。
Safety limits
OPENAI_SERVE_MAX_PRICE_MSAT: quote 価格の上限(超えたら拒否)OPENAI_SERVE_TIMEOUT_QUOTE/OPENAI_SERVE_TIMEOUT_EXECUTE: quote/execution の時間上限
認証
OPENAI_SERVE_API_KEYS を設定すると(カンマ区切り)、すべての /v1/* が以下を要求します:
/healthz は意図的に保護しません(ローカルのヘルスチェック用途)。
必要に応じてリバースプロキシ側で保護してください。