mirror of
https://github.com/hwchase17/langchain.git
synced 2026-06-09 10:17:00 +00:00
xai: support live search (#31379)
https://docs.x.ai/docs/guides/live-search
This commit is contained in:
@@ -275,6 +275,8 @@ class ChatXAI(BaseChatOpenAI): # type: ignore[override]
|
||||
"""
|
||||
xai_api_base: str = Field(default="https://api.x.ai/v1/")
|
||||
"""Base URL path for API requests."""
|
||||
search_parameters: Optional[dict[str, Any]] = None
|
||||
"""Parameters for search requests. Example: ``{"mode": "auto"}``."""
|
||||
|
||||
openai_api_key: Optional[SecretStr] = None
|
||||
openai_api_base: Optional[str] = None
|
||||
@@ -371,6 +373,18 @@ class ChatXAI(BaseChatOpenAI): # type: ignore[override]
|
||||
)
|
||||
return self
|
||||
|
||||
@property
|
||||
def _default_params(self) -> dict[str, Any]:
|
||||
"""Get default parameters."""
|
||||
params = super()._default_params
|
||||
if self.search_parameters:
|
||||
if "extra_body" in params:
|
||||
params["extra_body"]["search_parameters"] = self.search_parameters
|
||||
else:
|
||||
params["extra_body"] = {"search_parameters": self.search_parameters}
|
||||
|
||||
return params
|
||||
|
||||
def _create_chat_result(
|
||||
self,
|
||||
response: Union[dict, openai.BaseModel],
|
||||
@@ -386,6 +400,11 @@ class ChatXAI(BaseChatOpenAI): # type: ignore[override]
|
||||
response.choices[0].message.reasoning_content # type: ignore
|
||||
)
|
||||
|
||||
if hasattr(response, "citations"):
|
||||
rtn.generations[0].message.additional_kwargs["citations"] = (
|
||||
response.citations
|
||||
)
|
||||
|
||||
return rtn
|
||||
|
||||
def _convert_chunk_to_generation_chunk(
|
||||
@@ -407,6 +426,10 @@ class ChatXAI(BaseChatOpenAI): # type: ignore[override]
|
||||
reasoning_content
|
||||
)
|
||||
|
||||
if (citations := chunk.get("citations")) and generation_chunk:
|
||||
if isinstance(generation_chunk.message, AIMessageChunk):
|
||||
generation_chunk.message.additional_kwargs["citations"] = citations
|
||||
|
||||
return generation_chunk
|
||||
|
||||
def with_structured_output(
|
||||
|
||||
Reference in New Issue
Block a user