Merge pull request #4401 from pipecat-ai/mb/grok-realtime-model
fix(xai/realtime): pass model as query param on connect
This commit is contained in:
1
changelog/4401.changed.md
Normal file
1
changelog/4401.changed.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
- Changed the default model for `GrokRealtimeLLMService` to `grok-voice-think-fast-1.0`, xAI's recommended Voice Agent model. The previous default of `grok-voice-fast-1.0` has been deprecated by xAI and is being removed.
|
||||||
1
changelog/4401.fixed.md
Normal file
1
changelog/4401.fixed.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
- Fixed `GrokRealtimeLLMService` ignoring the configured model. The model was stored in `Settings` but never sent to xAI, so every session silently fell back to xAI's server-side default. The model is now passed via the `?model=` query parameter on the WebSocket URL as xAI's Voice Agent API requires.
|
||||||
@@ -17,6 +17,7 @@ from collections.abc import Mapping
|
|||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from dataclasses import fields as dataclass_fields
|
from dataclasses import fields as dataclass_fields
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
from urllib.parse import quote
|
||||||
|
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
@@ -235,7 +236,7 @@ class GrokRealtimeLLMService(LLMService[GrokRealtimeLLMAdapter]):
|
|||||||
"""
|
"""
|
||||||
# 1. Initialize default_settings with hardcoded defaults
|
# 1. Initialize default_settings with hardcoded defaults
|
||||||
default_settings = self.Settings(
|
default_settings = self.Settings(
|
||||||
model=None,
|
model="grok-voice-think-fast-1.0",
|
||||||
system_instruction=None,
|
system_instruction=None,
|
||||||
temperature=None,
|
temperature=None,
|
||||||
max_tokens=None,
|
max_tokens=None,
|
||||||
@@ -533,8 +534,13 @@ class GrokRealtimeLLMService(LLMService[GrokRealtimeLLMAdapter]):
|
|||||||
if self._websocket:
|
if self._websocket:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Model is selected via query param at connection time; xAI does
|
||||||
|
# not support changing it via session.update.
|
||||||
|
model = assert_given(self._settings.model)
|
||||||
|
uri = f"{self.base_url}?model={quote(model, safe='')}"
|
||||||
|
|
||||||
self._websocket = await websocket_connect(
|
self._websocket = await websocket_connect(
|
||||||
uri=self.base_url,
|
uri=uri,
|
||||||
additional_headers={
|
additional_headers={
|
||||||
"Authorization": f"Bearer {self.api_key}",
|
"Authorization": f"Bearer {self.api_key}",
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user