Compare commits
2 Commits
537f3c7963
...
84e026c2e7
| Author | SHA1 | Date | |
|---|---|---|---|
| 84e026c2e7 | |||
| d8703a1ad6 |
@@ -224,11 +224,25 @@ def install_max_tokens_clamp() -> None:
|
|||||||
# ── Orchestrator ─────────────────────────────────────────────────────────────
|
# ── Orchestrator ─────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
def install_all() -> None:
|
def install_all() -> None:
|
||||||
"""Install all Mantle shims. Call once at process startup."""
|
"""Install all Mantle shims. Call once at process startup.
|
||||||
|
|
||||||
|
``install_max_tokens_clamp`` is deliberately NOT installed. Its 20 000
|
||||||
|
ceiling was an empirical observation, never a documented Mantle limit,
|
||||||
|
and re-investigation could not establish what enforces it: fast-agent
|
||||||
|
carries no 20 000 default anywhere, no model overlay is configured, and
|
||||||
|
``ModelDatabase`` reports ``max_output_tokens=128000`` for opus-4-8.
|
||||||
|
Hardcoding the constant would cement a ceiling we cannot prove and would
|
||||||
|
silently truncate turns that might otherwise complete. The shim is kept
|
||||||
|
below so it can be re-enabled if the limit is ever confirmed.
|
||||||
|
|
||||||
|
The fine-grained-tool-streaming opt-out is what actually fixes the
|
||||||
|
``Streaming completed but tool call never finished`` crash loop: it costs
|
||||||
|
no output length, it only lets a cutoff close its blocks properly and
|
||||||
|
land in fast-agent's graceful ``stop_reason=max_tokens`` handling.
|
||||||
|
"""
|
||||||
install_wire_name_prefix()
|
install_wire_name_prefix()
|
||||||
install_tool_use_caller_strip()
|
install_tool_use_caller_strip()
|
||||||
install_fine_grained_tool_streaming_opt_out()
|
install_fine_grained_tool_streaming_opt_out()
|
||||||
install_max_tokens_clamp()
|
|
||||||
|
|
||||||
|
|
||||||
def maybe_install(anthropic_base_url: str | None) -> bool:
|
def maybe_install(anthropic_base_url: str | None) -> bool:
|
||||||
|
|||||||
@@ -200,7 +200,9 @@ def test_maybe_install_installs_when_mantle(monkeypatch: pytest.MonkeyPatch) ->
|
|||||||
|
|
||||||
installed = mantle_shims.maybe_install("https://bedrock-mantle.us-east-1.api.aws/anthropic")
|
installed = mantle_shims.maybe_install("https://bedrock-mantle.us-east-1.api.aws/anthropic")
|
||||||
assert installed is True
|
assert installed is True
|
||||||
assert calls == ["wire", "tool_use", "beta_opt_out", "max_tokens"]
|
# "max_tokens" is intentionally absent: the 20 000 clamp is not installed
|
||||||
|
# by default because the ceiling was never confirmed. See install_all().
|
||||||
|
assert calls == ["wire", "tool_use", "beta_opt_out"]
|
||||||
|
|
||||||
|
|
||||||
def test_maybe_install_noop_for_non_mantle(monkeypatch: pytest.MonkeyPatch) -> None:
|
def test_maybe_install_noop_for_non_mantle(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user