From 5af13af19c45fd8ffd763090222ccbecb82cd16b Mon Sep 17 00:00:00 2001 From: "open-swe[bot]" Date: Wed, 6 Aug 2025 16:30:22 +0000 Subject: [PATCH] Apply patch [skip ci] --- .../partners/ollama/langchain_ollama/chat_models.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/libs/partners/ollama/langchain_ollama/chat_models.py b/libs/partners/ollama/langchain_ollama/chat_models.py index 60d7d084cbb..68ea7976b34 100644 --- a/libs/partners/ollama/langchain_ollama/chat_models.py +++ b/libs/partners/ollama/langchain_ollama/chat_models.py @@ -1031,6 +1031,7 @@ class ChatOllama(BaseChatModel): """Bind tool-like objects to this chat model. Assumes model is compatible with OpenAI tool-calling API. + For gpt-oss models, tools are converted to Harmony format. Args: tools: A list of tool definitions to bind to this chat model. @@ -1041,7 +1042,16 @@ class ChatOllama(BaseChatModel): kwargs: Any additional parameters are passed directly to ``self.bind(**kwargs)``. """ - formatted_tools = [convert_to_openai_tool(tool) for tool in tools] + # Check if this is a gpt-oss model that needs Harmony format + if _is_gpt_oss_model(self.model): + # For gpt-oss models, we'll need special handling + # We'll implement the conversion in the next task + formatted_tools = [convert_to_openai_tool(tool) for tool in tools] + # Mark that we need Harmony format conversion + kwargs["_harmony_format"] = True + else: + formatted_tools = [convert_to_openai_tool(tool) for tool in tools] + return super().bind(tools=formatted_tools, **kwargs) def with_structured_output( @@ -1396,3 +1406,4 @@ class ChatOllama(BaseChatModel): return RunnableMap(raw=llm) | parser_with_fallback return llm | output_parser +