From f5f53d1101ea73d8465deb7d73b0a4e70bb556e7 Mon Sep 17 00:00:00 2001 From: Priyanshi Garg Date: Thu, 21 Nov 2024 20:03:00 +0530 Subject: [PATCH] community: fix compatibility issue in kinetica chat model integration for Pydantic 2 (#28252) Fixed a compatibility issue in the `load_messages_from_context()` function for the Kinetica chat model integration. The issue was caused by stricter validation introduced in Pydantic 2. --- libs/community/langchain_community/chat_models/kinetica.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libs/community/langchain_community/chat_models/kinetica.py b/libs/community/langchain_community/chat_models/kinetica.py index a2bc9542399..e4a44f8d6a0 100644 --- a/libs/community/langchain_community/chat_models/kinetica.py +++ b/libs/community/langchain_community/chat_models/kinetica.py @@ -78,7 +78,7 @@ class _KdtSuggestContext(BaseModel): class _KdtSuggestPayload(BaseModel): """pydantic API request type""" - question: Optional[str] + question: Optional[str] = None context: List[_KdtSuggestContext] def get_system_str(self) -> str: @@ -410,17 +410,20 @@ class ChatKinetica(BaseChatModel): # query kinetica for the prompt sql = f"GENERATE PROMPT WITH OPTIONS (CONTEXT_NAMES = '{context_name}')" + result = self._execute_sql(sql) prompt = result["Prompt"] prompt_json = json.loads(prompt) # convert the prompt to messages # request = SuggestRequest.model_validate(prompt_json) # pydantic v2 + request = _KdtoSuggestRequest.model_validate(prompt_json) payload = request.payload dict_messages = [] dict_messages.append(dict(role="system", content=payload.get_system_str())) + dict_messages.extend(payload.get_messages()) messages = [self._convert_message_from_dict(m) for m in dict_messages] return messages