|
""" |
|
Transformation logic from OpenAI /v1/embeddings format to Bedrock Cohere /invoke format. |
|
|
|
Why separate file? Make it easy to see how transformation works |
|
""" |
|
|
|
from typing import List |
|
|
|
from litellm.llms.cohere.embed.transformation import CohereEmbeddingConfig |
|
from litellm.types.llms.bedrock import CohereEmbeddingRequest |
|
|
|
|
|
class BedrockCohereEmbeddingConfig: |
|
def __init__(self) -> None: |
|
pass |
|
|
|
def get_supported_openai_params(self) -> List[str]: |
|
return ["encoding_format"] |
|
|
|
def map_openai_params( |
|
self, non_default_params: dict, optional_params: dict |
|
) -> dict: |
|
for k, v in non_default_params.items(): |
|
if k == "encoding_format": |
|
optional_params["embedding_types"] = v |
|
return optional_params |
|
|
|
def _is_v3_model(self, model: str) -> bool: |
|
return "3" in model |
|
|
|
def _transform_request( |
|
self, model: str, input: List[str], inference_params: dict |
|
) -> CohereEmbeddingRequest: |
|
transformed_request = CohereEmbeddingConfig()._transform_request( |
|
model, input, inference_params |
|
) |
|
|
|
new_transformed_request = CohereEmbeddingRequest( |
|
input_type=transformed_request["input_type"], |
|
) |
|
for k in CohereEmbeddingRequest.__annotations__.keys(): |
|
if k in transformed_request: |
|
new_transformed_request[k] = transformed_request[k] |
|
|
|
return new_transformed_request |
|
|