"""FastAPI dependency injection — shared OpenAI client and configuration."""

from __future__ import annotations

from fastapi import Request
from openai import OpenAI

from api.openai_key import require_openai_api_key


def get_openai_client(request: Request) -> OpenAI:
    """Create an OpenAI client using the per-request key resolution chain.

    Order: X-OpenAI-API-Key header → CRYSTALLISE_OPENAI_API_KEY → OPENAI_API_KEY.
    Raises 400 (via require_openai_api_key) if none are set.
    """
    return OpenAI(api_key=require_openai_api_key(request))
