litellm-mirror/litellm/llms/nvidia_nim/embed.py
Krish Dholakia 5d170162d3
fix(nvidia_nim/embed.py): add 'dimensions' support (#8302)
* fix(nvidia_nim/embed.py): add 'dimensions' support

Fixes https://github.com/BerriAI/litellm/issues/8238

* fix(proxy_Server.py): initialize router redis cache if setup on proxy

Fixes https://github.com/BerriAI/litellm/issues/6602

* test: add unit testing for new helper function
2025-02-07 16:19:32 -08:00

82 lines
2.2 KiB
Python

"""
Nvidia NIM embeddings endpoint: https://docs.api.nvidia.com/nim/reference/nvidia-nv-embedqa-e5-v5-infer
This is OpenAI compatible
This file only contains param mapping logic
API calling is done using the OpenAI SDK with an api_base
"""
import types
from typing import Optional
class NvidiaNimEmbeddingConfig:
"""
Reference: https://docs.api.nvidia.com/nim/reference/nvidia-nv-embedqa-e5-v5-infer
"""
# OpenAI params
encoding_format: Optional[str] = None
user: Optional[str] = None
# Nvidia NIM params
input_type: Optional[str] = None
truncate: Optional[str] = None
def __init__(
self,
encoding_format: Optional[str] = None,
user: Optional[str] = None,
input_type: Optional[str] = None,
truncate: Optional[str] = None,
) -> None:
locals_ = locals()
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(
self,
):
return ["encoding_format", "user", "dimensions"]
def map_openai_params(
self,
non_default_params: dict,
optional_params: dict,
kwargs: Optional[dict] = None,
):
if "extra_body" not in optional_params:
optional_params["extra_body"] = {}
for k, v in non_default_params.items():
if k == "input_type":
optional_params["extra_body"].update({"input_type": v})
elif k == "truncate":
optional_params["extra_body"].update({"truncate": v})
else:
optional_params[k] = v
if kwargs is not None:
# pass kwargs in extra_body
optional_params["extra_body"].update(kwargs)
return optional_params