メインコンテンツへスキップ
openai-serve は環境変数で設定します。 ローカル開発では apps/openai-serve/.envrc.sample(direnv)を利用できます。

環境変数

NameDefaultNotes
OPENAI_SERVE_HTTP_ADDR127.0.0.1:8080HTTP listen host:port
OPENAI_SERVE_LCPD_GRPC_ADDR127.0.0.1:50051lcpd-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_MODELSfalsetrue なら model 検証をスキップ
OPENAI_SERVE_MAX_PRICE_MSAT00 より大きい場合、上限超の quote を拒否
OPENAI_SERVE_TIMEOUT_QUOTE5sgRPC quote timeout
OPENAI_SERVE_TIMEOUT_EXECUTE120sgRPC execute timeout
OPENAI_SERVE_LOG_LEVELinfodebug, info, warn, error

ログ(プライバシー)

openai-serve のログは、生のユーザー入力を永続化しなくても運用できるように設計しています。
  • ログには、生のプロンプト(messages[].content)や生のモデル出力を残してはいけません。
  • info は、運用メタデータ(model/peer/job id、価格、時間、byte/token カウント)を記録します。
  • debug は HTTP リクエストログがより詳細になり(client_ip を含むことがあります)、よりセンシティブとして扱ってください。

ルーティング(peer の選び方)

model ごとに Provider peer は以下の順で決定されます:
  1. OPENAI_SERVE_MODEL_MAP(マップ先の peer が connected/LCP-ready の場合)
  2. OPENAI_SERVE_DEFAULT_PEER_ID(設定されており connected/LCP-ready の場合)
  3. manifest の supported_tasks で model を広告している peer(存在する場合)
  4. フォールバックとして、接続されている peer の先頭
接続中の LCP peers が 0 の場合、リクエストは失敗します。

モデル検証(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/* が以下を要求します:
Authorization: Bearer <key>
/healthz は意図的に保護しません(ローカルのヘルスチェック用途)。 必要に応じてリバースプロキシ側で保護してください。