From 83dcef234d9d665ce4f2413c0f87094dbab7c70d Mon Sep 17 00:00:00 2001 From: ccurme Date: Mon, 17 Feb 2025 14:19:51 -0500 Subject: [PATCH] xai[patch]: support dedicated structured output feature (#29853) https://docs.x.ai/docs/guides/structured-outputs Interface appears identical to OpenAI's. ```python from langchain.chat_models import init_chat_model from pydantic import BaseModel class Joke(BaseModel): setup: str punchline: str llm = init_chat_model("xai:grok-2").with_structured_output( Joke, method="json_schema" ) llm.invoke("Tell me a joke about cats.") ``` --- libs/partners/xai/langchain_xai/chat_models.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libs/partners/xai/langchain_xai/chat_models.py b/libs/partners/xai/langchain_xai/chat_models.py index a854be5487d..a6603c5316b 100644 --- a/libs/partners/xai/langchain_xai/chat_models.py +++ b/libs/partners/xai/langchain_xai/chat_models.py @@ -348,9 +348,14 @@ class ChatXAI(BaseChatOpenAI): # type: ignore[override] self.client = openai.OpenAI( **client_params, **sync_specific ).chat.completions + self.root_client = openai.OpenAI(**client_params, **sync_specific) if not (self.async_client or None): async_specific: dict = {"http_client": self.http_async_client} self.async_client = openai.AsyncOpenAI( **client_params, **async_specific ).chat.completions + self.root_async_client = openai.AsyncOpenAI( + **client_params, + **async_specific, + ) return self