OpenRouter provider.
OpenRouter speaks the OpenAI Chat Completions wire format, so it reuses
ExAgent.Providers.OpenAIChat. The only differences are the base URL
(https://openrouter.ai/api/v1), the env key (OPENROUTER_API_KEY) and the
optional attribution headers (HTTP-Referer / X-Title), pulled from
OPENROUTER_APP_URL / OPENROUTER_APP_TITLE.
model = ExAgent.Models.OpenRouter.new(model: "anthropic/claude-3.5-sonnet")