Provider Options
Provider-specific request options belong in ModelRequest.options, namespaced
by provider.
Why
This keeps the runtime core provider-neutral while still allowing provider adapters to expose vendor-specific controls.
Current namespaces
openaiopenai_chatanthropic
OpenAI Responses example
request = ModelRequest(
messages=[Message.user("Summarize this briefly.")],
options={
"openai": {
"extra_body": {
"reasoning": {"effort": "medium"},
},
},
},
)
OpenAI Chat Completions example
request = ModelRequest(
messages=[Message.user("Summarize this briefly.")],
options={
"openai_chat": {
"extra_body": {
"store": False,
},
"temperature": 0.2,
},
},
)
Anthropic Messages example
request = ModelRequest(
messages=[Message.user("Summarize this briefly.")],
options={
"anthropic": {
"max_tokens": 512,
"thinking": {
"type": "enabled",
"budget_tokens": 1024,
},
"metadata": {
"user_id": "u_123",
},
},
},
)
Recommendation
Keep constructor arguments for connection-level setup such as:
api_keybase_url- custom SDK
client
Keep request-level behavior in ModelRequest.options.