mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-24 16:54:43 +00:00
fix: forward max_tokens to gemini-native so MoA reference cap applies
_build_call_kwargs omitted max_tokens for every provider except anthropic-compat endpoints and NVIDIA NIM. Gemini's native generateContent maps max_tokens -> maxOutputTokens and, when it is omitted, applies a fixed 65,535-token ceiling (not "the model's full budget"), so dropping the value made MoA's reference_max_tokens a silent no-op for gemini advisors — they ran effectively uncapped (observed ~2900 output tokens against a configured cap of 600), inflating per-turn MoA latency. Forward max_tokens for the gemini-native path (provider name or native base_url). Gemini supports maxOutputTokens, so the cap is safe here; providers that reject max_tokens (Copilot, GPT-5 max_completion_tokens, ZAI vision) are unaffected — they still omit it as before.
This commit is contained in:
parent
3dce1b967f
commit
4ee74fa5df
2 changed files with 18 additions and 0 deletions
|
|
@ -6834,10 +6834,26 @@ def _build_call_kwargs(
|
|||
or base_url_host_matches(_effective_base, "integrate.api.nvidia.com")
|
||||
)
|
||||
_is_moa = bool(task) and str(task) == "moa_reference"
|
||||
# Gemini's native generateContent maps max_tokens → maxOutputTokens and,
|
||||
# when it is omitted, applies a fixed 65,535-token ceiling rather than
|
||||
# "the model's full budget" (see gemini_native_adapter.build_gemini_request).
|
||||
# So an explicit cap is both safe and the ONLY way to honor it here —
|
||||
# dropping max_tokens silently makes MoA's reference_max_tokens a no-op
|
||||
# for gemini advisors (they run effectively uncapped).
|
||||
_is_gemini_native = _provider_norm in {
|
||||
"gemini", "google", "google-gemini", "google-ai-studio",
|
||||
}
|
||||
if not _is_gemini_native and _effective_base:
|
||||
try:
|
||||
from agent.gemini_native_adapter import is_native_gemini_base_url
|
||||
_is_gemini_native = is_native_gemini_base_url(_effective_base)
|
||||
except Exception:
|
||||
pass
|
||||
if (
|
||||
_is_anthropic_compat_endpoint(provider, _effective_base)
|
||||
or _is_nvidia_nim
|
||||
or _is_moa
|
||||
or _is_gemini_native
|
||||
):
|
||||
# Use auxiliary_max_tokens_param() so models that require
|
||||
# max_completion_tokens (GPT-5 family, Copilot) get the right
|
||||
|
|
|
|||
2
contributors/emails/awain7@gmail.com
Normal file
2
contributors/emails/awain7@gmail.com
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
awain7
|
||||
# PR #58261 salvage
|
||||
Loading…
Add table
Add a link
Reference in a new issue