@@ -93,7 +93,22 @@ class RealtimeAPI(RealtimeEventHandler):
9393 def __init__ (self , url = None , api_key = None ):
9494 super ().__init__ ()
9595 self .default_url = 'wss://api.openai.com/v1/realtime'
96- self .url = url or self .default_url
96+
97+ # Support custom base URL from environment variable
98+ base_url = os .getenv ("OPENAI_BASE_URL" )
99+ if base_url :
100+ # Convert HTTP/HTTPS base URL to WebSocket URL for realtime API
101+ if base_url .startswith ('https://' ):
102+ ws_url = base_url .replace ('https://' , 'wss://' ).rstrip ('/' ) + '/realtime'
103+ elif base_url .startswith ('http://' ):
104+ ws_url = base_url .replace ('http://' , 'ws://' ).rstrip ('/' ) + '/realtime'
105+ else :
106+ # Assume it's already a WebSocket URL
107+ ws_url = base_url .rstrip ('/' ) + '/realtime' if not base_url .endswith ('/realtime' ) else base_url
108+ self .url = url or ws_url
109+ else :
110+ self .url = url or self .default_url
111+
97112 self .api_key = api_key or os .getenv ("OPENAI_API_KEY" )
98113 self .ws = None
99114
@@ -559,9 +574,9 @@ async def connect(self, model=None):
559574 if self .is_connected ():
560575 raise Exception ("Already connected, use .disconnect() first" )
561576
562- # Use provided model or default
577+ # Use provided model, OPENAI_MODEL_NAME environment variable, or default
563578 if model is None :
564- model = 'gpt-4o-mini-realtime-preview-2024-12-17'
579+ model = os . getenv ( "OPENAI_MODEL_NAME" , 'gpt-4o-mini-realtime-preview-2024-12-17' )
565580
566581 await self .realtime .connect (model )
567582 await self .update_session ()
@@ -732,7 +747,7 @@ async def ensure_connected(self):
732747 if not self .is_connected ():
733748 try :
734749 logger .info ("Attempting to reconnect to OpenAI Realtime API..." )
735- model = 'gpt-4o-mini-realtime-preview-2024-12-17'
750+ model = os . getenv ( "OPENAI_MODEL_NAME" , 'gpt-4o-mini-realtime-preview-2024-12-17' )
736751 await self .connect (model )
737752 return True
738753 except Exception as e :
0 commit comments