Skip to content

Fix OVMS reasoning parser resolution for OpenVINO models (#556) - #573

Open
Ultron09 wants to merge 1 commit into
intel:mainfrom
Ultron09:fix/ovms-reasoning-parser-and-voice-seed
Open

Fix OVMS reasoning parser resolution for OpenVINO models (#556)#573
Ultron09 wants to merge 1 commit into
intel:mainfrom
Ultron09:fix/ovms-reasoning-parser-and-voice-seed

Conversation

@Ultron09

Copy link
Copy Markdown

Description

Fixes #556.

When launching OpenVINO Model Server (OVMS) for LLM text generation in openVINOBackendService.ts, the --reasoning_parser CLI flag was previously hardcoded to 'qwen3'.

This caused inference for Harmony-format models like OpenVINO/gpt-oss-20b-int4-ov to fail / leak the raw analysis reasoning channel directly into content, because OVMS expects --reasoning_parser gptoss to separate reasoning into reasoning_content.

Changes Made

  1. Schema & Model Definitions:

    • Added ovmsReasoningParsers = ['qwen3', 'gptoss', 'lfm2', 'gemma4'] as const and reasoningParser: z.enum(ovmsReasoningParsers).optional() to ModelSchema in WebUI/src/types/shared.ts.
    • Added reasoningParser?: string to Model type in WebUI/src/assets/js/store/models.ts.
    • Added "reasoningParser": "gptoss" for OpenVINO/gpt-oss-20b-int4-ov in WebUI/external/models.json.
  2. OpenVINO Subprocess & Argument Resolution:

    • Exported pure resolveOvmsToolParser and resolveOvmsReasoningParser helpers.
    • Updated startOvmsLlmServer to pass --reasoning_parser <parser> dynamically: uses model-specific override (e.g. gptoss), defaults to 'qwen3' for models supporting reasoning, and omits the flag when reasoning is disabled.
  3. Typecheck & Voice Seed Utility:

    • Added WebUI/src/lib/ttsVoiceSeed.ts implementing randomVoiceSeed, stableVoiceSeed, and seedForVoice for reproducible voice design sampling.
  4. Automated Unit Tests:

    • Added WebUI/electron/test/subprocesses/openVinoParsers.test.ts covering tool and reasoning parser resolution.
    • Added WebUI/src/lib/ttsVoiceSeed.test.ts covering voice seed determinism and random bounds.

Verification

  • npm test passed (all 27 test files, 212 tests passing).
  • npx vue-tsc --noEmit passed with 0 errors.
  • npm run lint:ci and npm run format:ci passed.
  • npm run lint:python (ruff + bandit) passed.

Resolve OpenVINO Model Server (OVMS) --reasoning_parser dynamically based on model capabilities and reasoningParser override from models.json instead of hardcoding to qwen3. Also restore missing ttsVoiceSeed module.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

gpt-oss-20b-int4-ov (OpenVINO): reasoning parser not applied — harmony "analysis" channel leaks into content, chat inference fails

1 participant