feat(providers): add Mistral AI provider plugin - #76391
Conversation
Production-grade Mistral profile (api.mistral.ai): - reasoning_effort gated per model family; never emits 'high' (Hermes 0.19 stream parser crashes on Mistral's list-content reasoning deltas); explicit disable maps to 'none' - exclusions for mistral-medium-2505/2508 (no reasoning cap) - fetch_models filters live catalog to completion_chat models - supports_vision=True, default_vision_model=mistral-large-latest - never emits extra_body.think (rejected 422 by Mistral) Tests: 12 unit tests (tests/providers/test_mistral_profile.py), validated E2E against the live API on 34 chat models. Closes NousResearch#42357
|
Thanks for the careful provider profile and focused coverage. This automated hermes-sweeper review is closing this under the standing
Please publish this as a standalone Mistral provider plugin users can install into Closed as not-planned per standing maintainer policy ( |
|
Published as a standalone plugin repository per the in-tree policy: https://github.com/merouaneagar/hermes-mistral-provider Install with: Same profile, same 12 tests, validated E2E on 34 chat models. Thanks for the quick review. |
Summary
Production-grade Mistral AI provider profile (api.mistral.ai) as a
bundled model-provider plugin, addressing long-standing requests
(#42357, #20859, #61160).
Wire-format quirks handled
rejected (HTTP 400 / code 3051). Positive efforts are OMITTED
rather than clamped to high: with high, Mistral streams
delta.content as a JSON list (thinking + text parts), which crashes
the Hermes 0.19 stream parser ("".join(content_parts) ->
TypeError: sequence item 0: expected str instance, list found) --
the "Stream interrupted" symptom.
reasoning capability -- even none (HTTP 400 / code 3051). The
profile gates per family with exact exclusions for
mistral-medium-2505/2508.
provider-wide so Hermes routes images correctly.
Included
reasoning mapping contracts, never-emits-think)
tools, reasoning, vision); 32/34 OK -- the 2 failures are
account-gated (labs-leanstral-*, HTTP 403).
Closes #42357