diff --git a/libs/partners/huggingface/langchain_huggingface/chat_models/huggingface.py b/libs/partners/huggingface/langchain_huggingface/chat_models/huggingface.py index 73de645203448..235e01078224a 100644 --- a/libs/partners/huggingface/langchain_huggingface/chat_models/huggingface.py +++ b/libs/partners/huggingface/langchain_huggingface/chat_models/huggingface.py @@ -39,7 +39,7 @@ ) from langchain_core.messages.tool import ToolCallChunk from langchain_core.messages.tool import tool_call_chunk as create_tool_call_chunk -from langchain_core.output_parsers import JsonOutputParser +from langchain_core.output_parsers import JsonOutputParser, PydanticOutputParser from langchain_core.output_parsers.openai_tools import ( JsonOutputKeyToolsParser, make_invalid_tool_call, @@ -966,9 +966,16 @@ def with_structured_output( "schema": schema, }, ) - output_parser: Union[ # type: ignore[no-redef] - JsonOutputKeyToolsParser, JsonOutputParser - ] = JsonOutputParser() # type: ignore[arg-type] + + if is_pydantic_schema: + output_parser: Union[ # type: ignore[no-redef] + JsonOutputKeyToolsParser, JsonOutputParser, PydanticOutputParser + ] = JsonOutputParser() # type: ignore[arg-type] + else: + output_parser = JsonOutputParser() + + + elif method == "json_mode": llm = self.bind( response_format={"type": "json_object"},