u/vandalieu_zakkart

New SOTA 1B model? HRM-text

New SOTA 1B model? HRM-text

Saw this video by them. Seems interesting but Tbh the benchmarks seem too good to be true. I'm not super knowledgeable on how models think so can anyone more knowledgeable explain what exactly is happening. And it's pros and cons?

GitHub: https: //github.com/sapientinc/HRM-Text Hugging face: https://huggingface.co/sapientinc/HRM-Text-1B

I'm not affiliated with them in anyway, just saw the video on YouTube.

youtu.be
u/vandalieu_zakkart — 10 hours ago
▲ 7 r/MiniMax_AI+1 crossposts

How I (my hermes agent) fixed minimax token plan vision issue

(generated by my agent)

The Problem

MiniMax's vision model (VLM) uses a non-standard endpoint: POST /v1/coding_plan/vlm with a custom request body format. A _MiniMaxVLMAdapter class existed to handle this translation, but the async call path had two bugs that prevented it from working.

Bug 1: The Wrong Endpoint Was Called

What happened: When Hermes received an image via Telegram, it tried to use MiniMax's VLM, but the request went to POST /v1/chat/completions instead of POST /v1/coding_plan/vlm.

Root cause: _is_anthropic_compat_endpoint() was returning True for MiniMax, causing async_call_llm to convert image_url content blocks to Anthropic's format ({"type": "image", "source": {...}}) before passing them to the VLM adapter. The adapter's create() method expected the original OpenAI image_url format but received Anthropic blocks it didn't recognize, so it treated the image as missing and returned "I don't see any image."

Fix: Removed MiniMax from _is_anthropic_compat_endpoint. The function now only returns True for actual Anthropic providers ("anthropic", "anthropic-direct"). MiniMax's VLM adapter handles its own internal format conversion — it shouldn't be pre-processed by async_call_llm.

# Before (wrong)
_ANTHROPIC_COMPAT_PROVIDERS = frozenset({"minimax", "minimax-oauth", "minimax-cn"})

# After (correct)
if provider in {"anthropic", "anthropic-direct"}:
    return True

Bug 2: The Async Wrapper Was Discarded

What happened: _to_async_client() had a isinstance(sync_client, _MiniMaxVLMAdapter) branch that built a wrapper object, but it was missing a return statement, causing execution to fall through to the generic AsyncOpenAI wrapping path — which routed to /v1/chat/completions.

Fix: Added the missing return so the VLM adapter's wrapper is actually returned and used, rather than being overwritten by the generic async wrapper.

# The isinstance check existed but had no return
# After fix:
if isinstance(sync_client, _MiniMaxVLMAdapter):
    async_create = client.async_create
    # ... build wrapper ...
    return mock, model  # ← this was missing

Why Testing Direct Calls Worked But End-to-End Failed

When testing _build_minimax_vlm_adapter() and calling create() directly, it worked perfectly. That's because the direct call bypasses async_call_llm entirely — it hits the adapter's create() method which correctly routes to /v1/coding_plan/vlm. The bugs only manifested in the full Telegram → Hermes → async_call_llm → vision tool chain.

Files Changed

- agent/auxiliary_client.py — two patches: fixed the missing return in _to_async_client and corrected _is_anthropic_compat_endpoint to exclude MiniMax.

reddit.com
u/vandalieu_zakkart — 2 days ago