fix: use _max_tokens_param in max-iterations retry path

The retry summary in _handle_max_iterations hardcodes max_tokens instead
of calling _max_tokens_param(). For direct OpenAI API users (gpt-4o,
o-series), the correct parameter name is max_completion_tokens. The first
attempt at line 2697 already uses _max_tokens_param correctly but the
retry path at line 2743 was missed.
This commit is contained in:
Farukest
2026-03-05 17:49:37 +03:00
parent ada3713e77
commit e25ad79d5d
2 changed files with 29 additions and 1 deletions

View File

@@ -2740,7 +2740,7 @@ class AIAgent:
"messages": api_messages,
}
if self.max_tokens is not None:
summary_kwargs["max_tokens"] = self.max_tokens
summary_kwargs.update(self._max_tokens_param(self.max_tokens))
if summary_extra_body:
summary_kwargs["extra_body"] = summary_extra_body

View File

@@ -913,3 +913,31 @@ class TestConversationHistoryNotMutated:
)
# Result should have more messages than the original history
assert len(result["messages"]) > original_len
# ---------------------------------------------------------------------------
# _max_tokens_param consistency
# ---------------------------------------------------------------------------
class TestMaxTokensParam:
"""Verify _max_tokens_param returns the correct key for each provider."""
def test_returns_max_completion_tokens_for_direct_openai(self, agent):
agent.base_url = "https://api.openai.com/v1"
result = agent._max_tokens_param(4096)
assert result == {"max_completion_tokens": 4096}
def test_returns_max_tokens_for_openrouter(self, agent):
agent.base_url = "https://openrouter.ai/api/v1"
result = agent._max_tokens_param(4096)
assert result == {"max_tokens": 4096}
def test_returns_max_tokens_for_local(self, agent):
agent.base_url = "http://localhost:11434/v1"
result = agent._max_tokens_param(4096)
assert result == {"max_tokens": 4096}
def test_not_tricked_by_openai_in_openrouter_url(self, agent):
agent.base_url = "https://openrouter.ai/api/v1/api.openai.com"
result = agent._max_tokens_param(4096)
assert result == {"max_tokens": 4096}