From 249910a25f1cb7f78344f8057682e4a58fcbffdb Mon Sep 17 00:00:00 2001 From: ump45nose <52391318+ump45nose@users.noreply.github.com> Date: Thu, 27 Aug 2026 20:46:21 +0800 Subject: [PATCH] fix: normalize vLLM Whisper API base URL --- .../vllm_model_provider/model/whisper_sst.py | 6 ++--- apps/models_provider/tests.py | 27 +++++++++++++++++-- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/apps/models_provider/impl/vllm_model_provider/model/whisper_sst.py b/apps/models_provider/impl/vllm_model_provider/model/whisper_sst.py index 12e01a98400..f776e6444ce 100644 --- a/apps/models_provider/impl/vllm_model_provider/model/whisper_sst.py +++ b/apps/models_provider/impl/vllm_model_provider/model/whisper_sst.py @@ -44,8 +44,8 @@ def check_auth(self): self.speech_to_text(audio_file) def speech_to_text(self, audio_file): - - base_url = self.api_url if self.api_url.endswith('v1') else f"{self.api_url}/v1" + base_url = self.api_url.rstrip('/') + base_url = base_url if base_url.endswith('/v1') else f"{base_url}/v1" try: client = OpenAI( @@ -67,4 +67,4 @@ def speech_to_text(self, audio_file): except Exception as err: maxkb_logger.error(f":Error: {str(err)}: {traceback.format_exc()}") - raise err \ No newline at end of file + raise err diff --git a/apps/models_provider/tests.py b/apps/models_provider/tests.py index 7ce503c2dd9..44e7258f159 100644 --- a/apps/models_provider/tests.py +++ b/apps/models_provider/tests.py @@ -1,3 +1,26 @@ -from django.test import TestCase +from io import BytesIO +from unittest.mock import patch -# Create your tests here. +from django.test import SimpleTestCase + +from models_provider.impl.vllm_model_provider.model.whisper_sst import VllmWhisperSpeechToText + + +class VllmWhisperSpeechToTextTest(SimpleTestCase): + @patch('models_provider.impl.vllm_model_provider.model.whisper_sst.OpenAI') + def test_normalizes_trailing_slash_in_v1_base_url(self, openai_mock): + openai_mock.return_value.audio.transcriptions.create.return_value.text = 'transcript' + model = VllmWhisperSpeechToText( + api_key='test-key', + api_url='https://vllm.example/v1/', + model='whisper', + params={}, + ) + + result = model.speech_to_text(BytesIO(b'audio')) + + openai_mock.assert_called_once_with( + api_key='test-key', + base_url='https://vllm.example/v1', + ) + self.assertEqual(result, 'transcript')