diff --git a/litellm/realtime_api/main.py b/litellm/realtime_api/main.py index 40983fa55fa..01b83067650 100644 --- a/litellm/realtime_api/main.py +++ b/litellm/realtime_api/main.py @@ -19,11 +19,13 @@ 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 ..llms.xai.realtime.handler import XAIRealtime from ..utils import client as wrapper_client azure_realtime = AzureOpenAIRealtime() openai_realtime = OpenAIRealtime() bedrock_realtime = BedrockRealtime() +xai_realtime = XAIRealtime() base_llm_http_handler = BaseLLMHTTPHandler() @@ -188,6 +190,30 @@ async def _arealtime( aws_bedrock_runtime_endpoint=aws_bedrock_runtime_endpoint, aws_external_id=aws_external_id, ) + elif _custom_llm_provider == "xai": + api_base = ( + dynamic_api_base + or litellm_params.api_base + or get_secret_str("XAI_API_BASE") + or "https://api.x.ai/v1" + ) + # set API KEY + api_key = ( + dynamic_api_key + or litellm.api_key + or get_secret_str("XAI_API_KEY") + ) + + await xai_realtime.async_realtime( + model=model, + websocket=websocket, + logging_obj=litellm_logging_obj, + api_base=api_base, + api_key=api_key, + client=None, + timeout=timeout, + query_params=query_params, + ) else: raise ValueError(f"Unsupported model: {model}") @@ -230,6 +256,10 @@ async def _realtime_health_check( url = openai_realtime._construct_url( api_base=api_base or "https://api.openai.com/", query_params={"model": model} ) + elif custom_llm_provider == "xai": + url = xai_realtime._construct_url( + api_base=api_base or "https://api.x.ai/v1", query_params={"model": model} + ) else: raise ValueError(f"Unsupported model: {model}") ssl_context = get_shared_realtime_ssl_context()