fix(agent): strip finish_reason from assistant messages to fix Mistral 422 errors (#253)

* fix(agent): skip reasoning param for Mistral API to prevent 422 errors

* fix(agent): strip finish_reason from assistant messages to fix Mistral 422 errors
This commit is contained in:
Sertug17
2026-03-02 11:35:03 +03:00
committed by GitHub
parent e2b8740fcf
commit 7a0b37712f

View File

@@ -2126,7 +2126,8 @@ class AIAgent:
_is_openrouter = "openrouter" in self.base_url.lower()
_is_nous = "nousresearch" in self.base_url.lower()
if _is_openrouter or _is_nous:
_is_mistral = "api.mistral.ai" in self.base_url.lower()
if (_is_openrouter or _is_nous) and not _is_mistral:
if self.reasoning_config is not None:
extra_body["reasoning"] = self.reasoning_config
else:
@@ -2271,6 +2272,7 @@ class AIAgent:
if reasoning:
api_msg["reasoning_content"] = reasoning
api_msg.pop("reasoning", None)
api_msg.pop("finish_reason", None)
api_messages.append(api_msg)
if self._cached_system_prompt:
@@ -2912,6 +2914,9 @@ class AIAgent:
# We've copied it to 'reasoning_content' for the API above
if "reasoning" in api_msg:
api_msg.pop("reasoning")
# Remove finish_reason - not accepted by strict APIs (e.g. Mistral)
if "finish_reason" in api_msg:
api_msg.pop("finish_reason")
# Keep 'reasoning_details' - OpenRouter uses this for multi-turn reasoning context
# The signature field helps maintain reasoning continuity
api_messages.append(api_msg)