diff --git a/litellm/realtime_api/main.py b/litellm/realtime_api/main.py index 0a78fb7b72..40983fa55f 100644 --- a/litellm/realtime_api/main.py +++ b/litellm/realtime_api/main.py @@ -3,8 +3,8 @@ from typing import Any, Optional, cast import litellm -from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider from litellm.constants import REALTIME_WEBSOCKET_MAX_MESSAGE_SIZE_BYTES +from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider from litellm.llms.base_llm.realtime.transformation import BaseRealtimeConfig from litellm.llms.custom_httpx.llm_http_handler import BaseLLMHTTPHandler from litellm.secret_managers.main import get_secret_str @@ -16,12 +16,14 @@ from litellm.utils import ProviderConfigManager from ..litellm_core_utils.get_litellm_params import get_litellm_params from ..litellm_core_utils.litellm_logging import Logging as LiteLLMLogging from ..llms.azure.realtime.handler import AzureOpenAIRealtime +from ..llms.bedrock.realtime.handler import BedrockRealtime +from ..llms.custom_httpx.http_handler import get_shared_realtime_ssl_context from ..llms.openai.realtime.handler import OpenAIRealtime from ..utils import client as wrapper_client -from ..llms.custom_httpx.http_handler import get_shared_realtime_ssl_context azure_realtime = AzureOpenAIRealtime() openai_realtime = OpenAIRealtime() +bedrock_realtime = BedrockRealtime() base_llm_http_handler = BaseLLMHTTPHandler() @@ -153,6 +155,39 @@ async def _arealtime( timeout=timeout, query_params=query_params, ) + elif _custom_llm_provider == "bedrock": + # Extract AWS parameters from kwargs + aws_region_name = kwargs.get("aws_region_name") + aws_access_key_id = kwargs.get("aws_access_key_id") + aws_secret_access_key = kwargs.get("aws_secret_access_key") + aws_session_token = kwargs.get("aws_session_token") + aws_role_name = kwargs.get("aws_role_name") + aws_session_name = kwargs.get("aws_session_name") + aws_profile_name = kwargs.get("aws_profile_name") + aws_web_identity_token = kwargs.get("aws_web_identity_token") + aws_sts_endpoint = kwargs.get("aws_sts_endpoint") + aws_bedrock_runtime_endpoint = kwargs.get("aws_bedrock_runtime_endpoint") + aws_external_id = kwargs.get("aws_external_id") + + await bedrock_realtime.async_realtime( + model=model, + websocket=websocket, + logging_obj=litellm_logging_obj, + api_base=dynamic_api_base or api_base, + api_key=dynamic_api_key or api_key, + timeout=timeout, + aws_region_name=aws_region_name, + aws_access_key_id=aws_access_key_id, + aws_secret_access_key=aws_secret_access_key, + aws_session_token=aws_session_token, + aws_role_name=aws_role_name, + aws_session_name=aws_session_name, + aws_profile_name=aws_profile_name, + aws_web_identity_token=aws_web_identity_token, + aws_sts_endpoint=aws_sts_endpoint, + aws_bedrock_runtime_endpoint=aws_bedrock_runtime_endpoint, + aws_external_id=aws_external_id, + ) else: raise ValueError(f"Unsupported model: {model}")