diff --git a/libs/infinity_emb/infinity_emb/fastapi_schemas/pymodels.py b/libs/infinity_emb/infinity_emb/fastapi_schemas/pymodels.py index 94c3c3d6..60b1ede5 100644 --- a/libs/infinity_emb/infinity_emb/fastapi_schemas/pymodels.py +++ b/libs/infinity_emb/infinity_emb/fastapi_schemas/pymodels.py @@ -97,7 +97,24 @@ def get_modality(obj: dict) -> str: Function name is used to return error message, keep it explicit """ try: - return obj.get("modality", Modality.text.value) + modality = obj.get("modality", None) + if modality is None: + inputs = obj.get("input", None) + if isinstance(inputs, str): + inputs = [inputs] + if isinstance(inputs, list) and len(inputs) > 0: + first_input = inputs[0] + if first_input.startswith("data:") or first_input.startswith("http://") or first_input.startswith("https://"): + ext = first_input.split("?")[0].split(".")[-1] + if ext in ["jpg", "jpeg", "png", "gif", "bmp"]: + modality = Modality.image.value + elif ext in ["wav", "mp3", "ogg", "flac"]: + modality = Modality.audio.value + elif first_input.startswith("data:image/"): + modality = Modality.image.value + elif first_input.startswith("data:audio/"): + modality = Modality.audio.value + return modality or Modality.text.value except AttributeError: # in case a very weird request is sent, validate it against the default return Modality.text.value