Fix xAI sentiment: use Agent Tools web_search (Live Search deprecated)
xAI returned 410 — search_parameters/Live Search is retired. Route xAI through the Responses API web_search tool instead (same path as OpenAI): - OpenAISentimentProvider parametrized with base_url / tool_type / source - xAI builds it against https://api.x.ai/v1 with the web_search tool - Drop the dead Live Search code from the generic compatible provider - Frontend label: "xAI Grok — web search" Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -39,12 +39,10 @@ PROVIDER_BASE_URLS: dict[str, str] = {
|
||||
}
|
||||
|
||||
# Providers grounded in live web search. The rest score from model knowledge.
|
||||
# xAI grounds via Live Search (search_parameters); OpenAI/Gemini via their tools.
|
||||
# xAI and OpenAI ground via the Responses API web-search tool; Gemini via its
|
||||
# own search grounding.
|
||||
WEB_SEARCH_PROVIDERS = {"openai", "gemini", "xai"}
|
||||
|
||||
# xAI Live Search: auto mode lets Grok search web + X when the query needs it.
|
||||
_XAI_SEARCH_PARAMETERS = {"mode": "auto", "return_citations": True}
|
||||
|
||||
# Providers needing a user-supplied base URL (generic compatible endpoints).
|
||||
CUSTOM_BASE_URL_PROVIDERS = {"openai_compatible"}
|
||||
|
||||
@@ -181,16 +179,17 @@ async def build_sentiment_provider(db: AsyncSession):
|
||||
if provider == "gemini":
|
||||
from app.providers.gemini_sentiment import GeminiSentimentProvider
|
||||
return GeminiSentimentProvider(api_key, model)
|
||||
if provider in {"deepseek", "xai", "openai_compatible"}:
|
||||
if provider == "xai":
|
||||
# xAI grounds via the Responses API web_search tool (the former Live
|
||||
# Search / search_parameters API is deprecated).
|
||||
from app.providers.openai_sentiment import OpenAISentimentProvider
|
||||
return OpenAISentimentProvider(
|
||||
api_key, model, base_url=base_url, tool_type="web_search", source="xai",
|
||||
)
|
||||
if provider in {"deepseek", "openai_compatible"}:
|
||||
if not base_url:
|
||||
raise ProviderError(f"No base_url configured for sentiment provider '{provider}'")
|
||||
from app.providers.openai_compatible_sentiment import OpenAICompatibleSentimentProvider
|
||||
if provider == "xai":
|
||||
return OpenAICompatibleSentimentProvider(
|
||||
api_key, model, base_url, source="xai",
|
||||
live_search=True,
|
||||
extra_body={"search_parameters": _XAI_SEARCH_PARAMETERS},
|
||||
)
|
||||
return OpenAICompatibleSentimentProvider(api_key, model, base_url, source=provider)
|
||||
|
||||
raise ProviderError(f"Unsupported sentiment provider '{provider}'")
|
||||
|
||||
Reference in New Issue
Block a user