mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-31 09:44:59 +00:00
feat: Support thinking_tokens and reasoning_effort for OpenRouter models
This commit is contained in:
parent
eabc98b64a
commit
9660d95ceb
1 changed files with 30 additions and 11 deletions
|
@ -332,6 +332,15 @@ class Model(ModelSettings):
|
||||||
# For non-dict values, simply update
|
# For non-dict values, simply update
|
||||||
self.extra_params[key] = value
|
self.extra_params[key] = value
|
||||||
|
|
||||||
|
# Ensure OpenRouter models accept thinking_tokens and reasoning_effort
|
||||||
|
if self.name.startswith("openrouter/"):
|
||||||
|
if self.accepts_settings is None:
|
||||||
|
self.accepts_settings = []
|
||||||
|
if "thinking_tokens" not in self.accepts_settings:
|
||||||
|
self.accepts_settings.append("thinking_tokens")
|
||||||
|
if "reasoning_effort" not in self.accepts_settings:
|
||||||
|
self.accepts_settings.append("reasoning_effort")
|
||||||
|
|
||||||
def apply_generic_model_settings(self, model):
|
def apply_generic_model_settings(self, model):
|
||||||
if "/o3-mini" in model:
|
if "/o3-mini" in model:
|
||||||
self.edit_format = "diff"
|
self.edit_format = "diff"
|
||||||
|
@ -659,11 +668,16 @@ class Model(ModelSettings):
|
||||||
def set_reasoning_effort(self, effort):
|
def set_reasoning_effort(self, effort):
|
||||||
"""Set the reasoning effort parameter for models that support it"""
|
"""Set the reasoning effort parameter for models that support it"""
|
||||||
if effort is not None:
|
if effort is not None:
|
||||||
if not self.extra_params:
|
if self.name.startswith("openrouter/"):
|
||||||
self.extra_params = {}
|
if not self.extra_params:
|
||||||
if "extra_body" not in self.extra_params:
|
self.extra_params = {}
|
||||||
self.extra_params["extra_body"] = {}
|
self.extra_params["reasoning"] = {"effort": effort}
|
||||||
self.extra_params["extra_body"]["reasoning_effort"] = effort
|
else:
|
||||||
|
if not self.extra_params:
|
||||||
|
self.extra_params = {}
|
||||||
|
if "extra_body" not in self.extra_params:
|
||||||
|
self.extra_params["extra_body"] = {}
|
||||||
|
self.extra_params["extra_body"]["reasoning_effort"] = effort
|
||||||
|
|
||||||
def parse_token_value(self, value):
|
def parse_token_value(self, value):
|
||||||
"""
|
"""
|
||||||
|
@ -750,12 +764,17 @@ class Model(ModelSettings):
|
||||||
|
|
||||||
def get_reasoning_effort(self):
|
def get_reasoning_effort(self):
|
||||||
"""Get reasoning effort value if available"""
|
"""Get reasoning effort value if available"""
|
||||||
if (
|
if self.extra_params:
|
||||||
self.extra_params
|
# Check for OpenRouter reasoning format
|
||||||
and "extra_body" in self.extra_params
|
if self.name.startswith("openrouter/"):
|
||||||
and "reasoning_effort" in self.extra_params["extra_body"]
|
if "reasoning" in self.extra_params and "effort" in self.extra_params["reasoning"]:
|
||||||
):
|
return self.extra_params["reasoning"]["effort"]
|
||||||
return self.extra_params["extra_body"]["reasoning_effort"]
|
# Check for standard reasoning_effort format (e.g. in extra_body)
|
||||||
|
elif (
|
||||||
|
"extra_body" in self.extra_params
|
||||||
|
and "reasoning_effort" in self.extra_params["extra_body"]
|
||||||
|
):
|
||||||
|
return self.extra_params["extra_body"]["reasoning_effort"]
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def is_deepseek_r1(self):
|
def is_deepseek_r1(self):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue