feat: Add OpenRouter support to set_thinking_tokens method

This commit is contained in:
Paul Gauthier (aider) 2025-03-21 07:27:52 -07:00
parent 76c09205d0
commit 245ee84c2d

View file

@ -663,16 +663,26 @@ class Model(ModelSettings):
self.use_temperature = False self.use_temperature = False
if not self.extra_params: if not self.extra_params:
self.extra_params = {} self.extra_params = {}
self.extra_params["thinking"] = {"type": "enabled", "budget_tokens": num_tokens}
# OpenRouter models use 'reasoning' instead of 'thinking'
if self.name.startswith('openrouter/'):
self.extra_params["reasoning"] = {"max_tokens": num_tokens}
else:
self.extra_params["thinking"] = {"type": "enabled", "budget_tokens": num_tokens}
def get_thinking_tokens(self, model): def get_thinking_tokens(self, model):
"""Get formatted thinking token budget if available""" """Get formatted thinking token budget if available"""
if ( budget = None
model.extra_params
and "thinking" in model.extra_params if model.extra_params:
and "budget_tokens" in model.extra_params["thinking"] # Check for OpenRouter reasoning format
): if "reasoning" in model.extra_params and "max_tokens" in model.extra_params["reasoning"]:
budget = model.extra_params["thinking"]["budget_tokens"] budget = model.extra_params["reasoning"]["max_tokens"]
# Check for standard thinking format
elif "thinking" in model.extra_params and "budget_tokens" in model.extra_params["thinking"]:
budget = model.extra_params["thinking"]["budget_tokens"]
if budget is not None:
# Format as xx.yK for thousands, xx.yM for millions # Format as xx.yK for thousands, xx.yM for millions
if budget >= 1024 * 1024: if budget >= 1024 * 1024:
value = budget / (1024 * 1024) value = budget / (1024 * 1024)