mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-14 23:21:35 +00:00
refactor(fireworks_ai): remove deprecated audio transcriptions endpoint (#30917)
Fireworks AI deprecated audio inference on 2026-06-10 (https://docs.fireworks.ai/updates/changelog#audio-inference-and-image-generation-deprecation). Live API testing confirms the endpoint is already non-functional: a valid Fireworks API key receives HTTP 401 "Unauthorized" from api.fireworks.ai/inference/v1/audio/transcriptions for every request, regardless of payload. The audio-prod.api.fireworks.ai host referenced in the test suite returns 401 for every path; the entire host is decommissioned. Remove the dead FireworksAIAudioTranscriptionConfig class and every reference to it across the codebase: - Delete litellm/llms/fireworks_ai/audio_transcription/ directory (17-line config class that inherited from OpenAIWhisperAudioTranscriptionConfig) - Remove the Fireworks branch from ProviderConfigManager.get_provider_audio_transcription_config() in litellm/utils.py; update the stale comment in get_optional_params_transcription that referenced fireworks ai - Remove the FireworksAIAudioTranscriptionConfig entries from LLM_CONFIG_NAMES and _LLM_CONFIGS_IMPORT_MAP in litellm/_lazy_imports_registry.py - Remove the TYPE_CHECKING re-export in litellm/__init__.py - Remove the transcription branch in the fireworks_ai case of get_supported_openai_params() in litellm/litellm_core_utils/get_supported_openai_params.py - Remove the whisper-v3 and whisper-v3-turbo entries from model_prices_and_context_window.json and litellm/model_prices_and_context_window_backup.json (both had mode: audio_transcription and zero-cost pricing) - Remove the TestFireworksAIAudioTranscription test class and its imports from tests/llm_translation/test_fireworks_ai_translation.py No other provider is affected. The openai_compatible_providers list, FireworksAIMixin, and the OpenAI Whisper transcription handler all stay because they are shared with other Fireworks endpoints and other providers. The provider_endpoints_support.json registry already had audio_transcriptions set to false for fireworks_ai.
This commit is contained in:
parent
45b4dca145
commit
2b29b92d0f
8 changed files with 1 additions and 140 deletions
|
|
@ -1922,9 +1922,6 @@ if TYPE_CHECKING:
|
|||
from .llms.fireworks_ai.completion.transformation import (
|
||||
FireworksAITextCompletionConfig as FireworksAITextCompletionConfig,
|
||||
)
|
||||
from .llms.fireworks_ai.audio_transcription.transformation import (
|
||||
FireworksAIAudioTranscriptionConfig as FireworksAIAudioTranscriptionConfig,
|
||||
)
|
||||
from .llms.fireworks_ai.embed.fireworks_ai_transformation import (
|
||||
FireworksAIEmbeddingConfig as FireworksAIEmbeddingConfig,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -260,7 +260,6 @@ LLM_CONFIG_NAMES = (
|
|||
"SambaNovaEmbeddingConfig",
|
||||
"FireworksAIConfig",
|
||||
"FireworksAITextCompletionConfig",
|
||||
"FireworksAIAudioTranscriptionConfig",
|
||||
"FireworksAIEmbeddingConfig",
|
||||
"FriendliaiChatConfig",
|
||||
"JinaAIEmbeddingConfig",
|
||||
|
|
@ -1027,10 +1026,6 @@ _LLM_CONFIGS_IMPORT_MAP = {
|
|||
".llms.fireworks_ai.completion.transformation",
|
||||
"FireworksAITextCompletionConfig",
|
||||
),
|
||||
"FireworksAIAudioTranscriptionConfig": (
|
||||
".llms.fireworks_ai.audio_transcription.transformation",
|
||||
"FireworksAIAudioTranscriptionConfig",
|
||||
),
|
||||
"FireworksAIEmbeddingConfig": (
|
||||
".llms.fireworks_ai.embed.fireworks_ai_transformation",
|
||||
"FireworksAIEmbeddingConfig",
|
||||
|
|
|
|||
|
|
@ -85,10 +85,6 @@ def get_supported_openai_params(
|
|||
return litellm.FireworksAIEmbeddingConfig().get_supported_openai_params(
|
||||
model=model
|
||||
)
|
||||
elif request_type == "transcription":
|
||||
return litellm.FireworksAIAudioTranscriptionConfig().get_supported_openai_params(
|
||||
model=model
|
||||
)
|
||||
else:
|
||||
return litellm.FireworksAIConfig().get_supported_openai_params(model=model)
|
||||
elif custom_llm_provider == "nvidia_nim":
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
from litellm.types.llms.openai import OpenAIAudioTranscriptionOptionalParams
|
||||
|
||||
from ...openai.transcriptions.whisper_transformation import (
|
||||
OpenAIWhisperAudioTranscriptionConfig,
|
||||
)
|
||||
from ..common_utils import FireworksAIMixin
|
||||
|
||||
|
||||
class FireworksAIAudioTranscriptionConfig(
|
||||
FireworksAIMixin, OpenAIWhisperAudioTranscriptionConfig
|
||||
):
|
||||
def get_supported_openai_params(
|
||||
self, model: str
|
||||
) -> List[OpenAIAudioTranscriptionOptionalParams]:
|
||||
return ["language", "prompt", "response_format", "timestamp_granularities"]
|
||||
|
|
@ -39908,24 +39908,6 @@
|
|||
"litellm_provider": "fireworks_ai",
|
||||
"mode": "chat"
|
||||
},
|
||||
"fireworks_ai/accounts/fireworks/models/whisper-v3": {
|
||||
"max_tokens": 4096,
|
||||
"max_input_tokens": 4096,
|
||||
"max_output_tokens": 4096,
|
||||
"input_cost_per_token": 0.0,
|
||||
"output_cost_per_token": 0.0,
|
||||
"litellm_provider": "fireworks_ai",
|
||||
"mode": "audio_transcription"
|
||||
},
|
||||
"fireworks_ai/accounts/fireworks/models/whisper-v3-turbo": {
|
||||
"max_tokens": 4096,
|
||||
"max_input_tokens": 4096,
|
||||
"max_output_tokens": 4096,
|
||||
"input_cost_per_token": 0.0,
|
||||
"output_cost_per_token": 0.0,
|
||||
"litellm_provider": "fireworks_ai",
|
||||
"mode": "audio_transcription"
|
||||
},
|
||||
"fireworks_ai/accounts/fireworks/models/yi-34b": {
|
||||
"max_tokens": 4096,
|
||||
"max_input_tokens": 4096,
|
||||
|
|
|
|||
|
|
@ -3191,7 +3191,7 @@ def get_optional_params_transcription(
|
|||
model=model,
|
||||
drop_params=drop_params if drop_params is not None else False,
|
||||
)
|
||||
elif provider_config is not None: # handles fireworks ai, and any future providers
|
||||
elif provider_config is not None: # custom audio transcription config
|
||||
supported_params = provider_config.get_supported_openai_params(model=model)
|
||||
_check_valid_arg(supported_params=supported_params)
|
||||
optional_params = provider_config.map_openai_params(
|
||||
|
|
@ -8915,8 +8915,6 @@ class ProviderConfigManager:
|
|||
)
|
||||
|
||||
return AzureSpeechAudioTranscriptionConfig()
|
||||
if litellm.LlmProviders.FIREWORKS_AI == provider:
|
||||
return litellm.FireworksAIAudioTranscriptionConfig()
|
||||
elif litellm.LlmProviders.DEEPGRAM == provider:
|
||||
return litellm.DeepgramAudioTranscriptionConfig()
|
||||
elif litellm.LlmProviders.ELEVENLABS == provider:
|
||||
|
|
|
|||
|
|
@ -39946,24 +39946,6 @@
|
|||
"litellm_provider": "fireworks_ai",
|
||||
"mode": "chat"
|
||||
},
|
||||
"fireworks_ai/accounts/fireworks/models/whisper-v3": {
|
||||
"max_tokens": 4096,
|
||||
"max_input_tokens": 4096,
|
||||
"max_output_tokens": 4096,
|
||||
"input_cost_per_token": 0.0,
|
||||
"output_cost_per_token": 0.0,
|
||||
"litellm_provider": "fireworks_ai",
|
||||
"mode": "audio_transcription"
|
||||
},
|
||||
"fireworks_ai/accounts/fireworks/models/whisper-v3-turbo": {
|
||||
"max_tokens": 4096,
|
||||
"max_input_tokens": 4096,
|
||||
"max_output_tokens": 4096,
|
||||
"input_cost_per_token": 0.0,
|
||||
"output_cost_per_token": 0.0,
|
||||
"litellm_provider": "fireworks_ai",
|
||||
"mode": "audio_transcription"
|
||||
},
|
||||
"fireworks_ai/accounts/fireworks/models/yi-34b": {
|
||||
"max_tokens": 4096,
|
||||
"max_input_tokens": 4096,
|
||||
|
|
|
|||
|
|
@ -7,9 +7,7 @@ sys.path.insert(
|
|||
0, os.path.abspath("../..")
|
||||
) # Adds the parent directory to the system path
|
||||
import litellm
|
||||
from litellm import transcription
|
||||
from litellm.llms.fireworks_ai.chat.transformation import FireworksAIConfig
|
||||
from base_audio_transcription_unit_tests import BaseLLMAudioTranscriptionTest
|
||||
|
||||
fireworks = FireworksAIConfig()
|
||||
|
||||
|
|
@ -69,76 +67,6 @@ def test_map_response_format():
|
|||
assert result == {"response_format": response_format}
|
||||
|
||||
|
||||
_AUDIO_FILE_PATH = os.path.join(
|
||||
os.path.dirname(os.path.realpath(__file__)), "gettysburg.wav"
|
||||
)
|
||||
|
||||
|
||||
class TestFireworksAIAudioTranscription(BaseLLMAudioTranscriptionTest):
|
||||
def get_base_audio_transcription_call_args(self) -> dict:
|
||||
return {
|
||||
"model": "fireworks_ai/whisper-v3",
|
||||
"api_base": "https://audio-prod.api.fireworks.ai/v1",
|
||||
}
|
||||
|
||||
def get_custom_llm_provider(self) -> litellm.LlmProviders:
|
||||
return litellm.LlmProviders.FIREWORKS_AI
|
||||
|
||||
def test_audio_transcription(self):
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
from openai.types.audio import Transcription
|
||||
|
||||
audio_file = open(_AUDIO_FILE_PATH, "rb")
|
||||
mock_client = MagicMock()
|
||||
mock_client.audio.transcriptions.create.return_value = Transcription(
|
||||
text="four score and seven years ago"
|
||||
)
|
||||
|
||||
transcript = transcription(
|
||||
**self.get_base_audio_transcription_call_args(),
|
||||
file=audio_file,
|
||||
api_key="fw-test-key",
|
||||
client=mock_client,
|
||||
)
|
||||
|
||||
assert transcript.text == "four score and seven years ago"
|
||||
sent = mock_client.audio.transcriptions.create.call_args.kwargs
|
||||
assert sent["model"] == "whisper-v3"
|
||||
assert sent["file"] is audio_file
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_audio_transcription_async(self):
|
||||
from unittest.mock import AsyncMock, MagicMock
|
||||
|
||||
from openai.types.audio import Transcription
|
||||
|
||||
audio_file = open(_AUDIO_FILE_PATH, "rb")
|
||||
raw_response = MagicMock()
|
||||
raw_response.headers = {}
|
||||
raw_response.parse.return_value = Transcription(
|
||||
text="four score and seven years ago"
|
||||
)
|
||||
mock_client = MagicMock()
|
||||
mock_client.audio.transcriptions.with_raw_response.create = AsyncMock(
|
||||
return_value=raw_response
|
||||
)
|
||||
|
||||
transcript = await litellm.atranscription(
|
||||
**self.get_base_audio_transcription_call_args(),
|
||||
file=audio_file,
|
||||
api_key="fw-test-key",
|
||||
client=mock_client,
|
||||
)
|
||||
|
||||
assert transcript.text == "four score and seven years ago"
|
||||
sent = (
|
||||
mock_client.audio.transcriptions.with_raw_response.create.call_args.kwargs
|
||||
)
|
||||
assert sent["model"] == "whisper-v3"
|
||||
assert sent["file"] is audio_file
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"disable_add_transform_inline_image_block",
|
||||
[True, False],
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue