|
""" |
|
Translate from OpenAI's `/v1/audio/transcriptions` to Groq's `/v1/audio/transcriptions` |
|
""" |
|
|
|
import types |
|
from typing import List, Optional, Union |
|
|
|
import litellm |
|
|
|
|
|
class GroqSTTConfig: |
|
|
|
frequency_penalty: Optional[int] = None |
|
function_call: Optional[Union[str, dict]] = None |
|
functions: Optional[list] = None |
|
logit_bias: Optional[dict] = None |
|
max_tokens: Optional[int] = None |
|
n: Optional[int] = None |
|
presence_penalty: Optional[int] = None |
|
stop: Optional[Union[str, list]] = None |
|
temperature: Optional[int] = None |
|
top_p: Optional[int] = None |
|
response_format: Optional[dict] = None |
|
tools: Optional[list] = None |
|
tool_choice: Optional[Union[str, dict]] = None |
|
|
|
def __init__( |
|
self, |
|
frequency_penalty: Optional[int] = None, |
|
function_call: Optional[Union[str, dict]] = None, |
|
functions: Optional[list] = None, |
|
logit_bias: Optional[dict] = None, |
|
max_tokens: Optional[int] = None, |
|
n: Optional[int] = None, |
|
presence_penalty: Optional[int] = None, |
|
stop: Optional[Union[str, list]] = None, |
|
temperature: Optional[int] = None, |
|
top_p: Optional[int] = None, |
|
response_format: Optional[dict] = None, |
|
tools: Optional[list] = None, |
|
tool_choice: Optional[Union[str, dict]] = None, |
|
) -> None: |
|
locals_ = locals().copy() |
|
for key, value in locals_.items(): |
|
if key != "self" and value is not None: |
|
setattr(self.__class__, key, value) |
|
|
|
@classmethod |
|
def get_config(cls): |
|
return { |
|
k: v |
|
for k, v in cls.__dict__.items() |
|
if not k.startswith("__") |
|
and not isinstance( |
|
v, |
|
( |
|
types.FunctionType, |
|
types.BuiltinFunctionType, |
|
classmethod, |
|
staticmethod, |
|
), |
|
) |
|
and v is not None |
|
} |
|
|
|
def get_supported_openai_params_stt(self): |
|
return [ |
|
"prompt", |
|
"response_format", |
|
"temperature", |
|
"language", |
|
] |
|
|
|
def get_supported_openai_response_formats_stt(self) -> List[str]: |
|
return ["json", "verbose_json", "text"] |
|
|
|
def map_openai_params_stt( |
|
self, |
|
non_default_params: dict, |
|
optional_params: dict, |
|
model: str, |
|
drop_params: bool, |
|
) -> dict: |
|
response_formats = self.get_supported_openai_response_formats_stt() |
|
for param, value in non_default_params.items(): |
|
if param == "response_format": |
|
if value in response_formats: |
|
optional_params[param] = value |
|
else: |
|
if litellm.drop_params is True or drop_params is True: |
|
pass |
|
else: |
|
raise litellm.utils.UnsupportedParamsError( |
|
message="Groq doesn't support response_format={}. To drop unsupported openai params from the call, set `litellm.drop_params = True`".format( |
|
value |
|
), |
|
status_code=400, |
|
) |
|
else: |
|
optional_params[param] = value |
|
return optional_params |
|
|