Spaces:
Sleeping
Sleeping
from typing import Optional, Union | |
import litellm | |
from ..exceptions import UnsupportedParamsError | |
from ..types.llms.openai import * | |
def get_optional_params_add_message( | |
role: Optional[str], | |
content: Optional[ | |
Union[ | |
str, | |
List[ | |
Union[ | |
MessageContentTextObject, | |
MessageContentImageFileObject, | |
MessageContentImageURLObject, | |
] | |
], | |
] | |
], | |
attachments: Optional[List[Attachment]], | |
metadata: Optional[dict], | |
custom_llm_provider: str, | |
**kwargs, | |
): | |
""" | |
Azure doesn't support 'attachments' for creating a message | |
Reference - https://learn.microsoft.com/en-us/azure/ai-services/openai/assistants-reference-messages?tabs=python#create-message | |
""" | |
passed_params = locals() | |
custom_llm_provider = passed_params.pop("custom_llm_provider") | |
special_params = passed_params.pop("kwargs") | |
for k, v in special_params.items(): | |
passed_params[k] = v | |
default_params = { | |
"role": None, | |
"content": None, | |
"attachments": None, | |
"metadata": None, | |
} | |
non_default_params = { | |
k: v | |
for k, v in passed_params.items() | |
if (k in default_params and v != default_params[k]) | |
} | |
optional_params = {} | |
## raise exception if non-default value passed for non-openai/azure embedding calls | |
def _check_valid_arg(supported_params): | |
if len(non_default_params.keys()) > 0: | |
keys = list(non_default_params.keys()) | |
for k in keys: | |
if ( | |
litellm.drop_params is True and k not in supported_params | |
): # drop the unsupported non-default values | |
non_default_params.pop(k, None) | |
elif k not in supported_params: | |
raise litellm.utils.UnsupportedParamsError( | |
status_code=500, | |
message="k={}, not supported by {}. Supported params={}. To drop it from the call, set `litellm.drop_params = True`.".format( | |
k, custom_llm_provider, supported_params | |
), | |
) | |
return non_default_params | |
if custom_llm_provider == "openai": | |
optional_params = non_default_params | |
elif custom_llm_provider == "azure": | |
supported_params = ( | |
litellm.AzureOpenAIAssistantsAPIConfig().get_supported_openai_create_message_params() | |
) | |
_check_valid_arg(supported_params=supported_params) | |
optional_params = litellm.AzureOpenAIAssistantsAPIConfig().map_openai_params_create_message_params( | |
non_default_params=non_default_params, optional_params=optional_params | |
) | |
for k in passed_params.keys(): | |
if k not in default_params.keys(): | |
optional_params[k] = passed_params[k] | |
return optional_params | |
def get_optional_params_image_gen( | |
n: Optional[int] = None, | |
quality: Optional[str] = None, | |
response_format: Optional[str] = None, | |
size: Optional[str] = None, | |
style: Optional[str] = None, | |
user: Optional[str] = None, | |
custom_llm_provider: Optional[str] = None, | |
**kwargs, | |
): | |
# retrieve all parameters passed to the function | |
passed_params = locals() | |
custom_llm_provider = passed_params.pop("custom_llm_provider") | |
special_params = passed_params.pop("kwargs") | |
for k, v in special_params.items(): | |
passed_params[k] = v | |
default_params = { | |
"n": None, | |
"quality": None, | |
"response_format": None, | |
"size": None, | |
"style": None, | |
"user": None, | |
} | |
non_default_params = { | |
k: v | |
for k, v in passed_params.items() | |
if (k in default_params and v != default_params[k]) | |
} | |
optional_params = {} | |
## raise exception if non-default value passed for non-openai/azure embedding calls | |
def _check_valid_arg(supported_params): | |
if len(non_default_params.keys()) > 0: | |
keys = list(non_default_params.keys()) | |
for k in keys: | |
if ( | |
litellm.drop_params is True and k not in supported_params | |
): # drop the unsupported non-default values | |
non_default_params.pop(k, None) | |
elif k not in supported_params: | |
raise UnsupportedParamsError( | |
status_code=500, | |
message=f"Setting user/encoding format is not supported by {custom_llm_provider}. To drop it from the call, set `litellm.drop_params = True`.", | |
) | |
return non_default_params | |
if ( | |
custom_llm_provider == "openai" | |
or custom_llm_provider == "azure" | |
or custom_llm_provider in litellm.openai_compatible_providers | |
): | |
optional_params = non_default_params | |
elif custom_llm_provider == "bedrock": | |
supported_params = ["size"] | |
_check_valid_arg(supported_params=supported_params) | |
if size is not None: | |
width, height = size.split("x") | |
optional_params["width"] = int(width) | |
optional_params["height"] = int(height) | |
elif custom_llm_provider == "vertex_ai": | |
supported_params = ["n"] | |
""" | |
All params here: https://console.cloud.google.com/vertex-ai/publishers/google/model-garden/imagegeneration?project=adroit-crow-413218 | |
""" | |
_check_valid_arg(supported_params=supported_params) | |
if n is not None: | |
optional_params["sampleCount"] = int(n) | |
for k in passed_params.keys(): | |
if k not in default_params.keys(): | |
optional_params[k] = passed_params[k] | |
return optional_params | |