From 8cf5f20bb5988dd85fcd0e339c082090a6aff400 Mon Sep 17 00:00:00 2001 From: Mohammad Mohtashim <45242107+keenborder786@users.noreply.github.com> Date: Fri, 20 Dec 2024 22:06:04 +0500 Subject: [PATCH] `required` tool_choice added for ChatHuggingFace (#28851) - **Description:** HuggingFace Inference Client V3 now supports `required` as tool_choice which has been added. - **Issue:** #28842 --- .../langchain_huggingface/chat_models/huggingface.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/partners/huggingface/langchain_huggingface/chat_models/huggingface.py b/libs/partners/huggingface/langchain_huggingface/chat_models/huggingface.py index 593df16133b..30510ca10fe 100644 --- a/libs/partners/huggingface/langchain_huggingface/chat_models/huggingface.py +++ b/libs/partners/huggingface/langchain_huggingface/chat_models/huggingface.py @@ -474,7 +474,9 @@ class ChatHuggingFace(BaseChatModel): self, tools: Sequence[Union[Dict[str, Any], Type, Callable, BaseTool]], *, - tool_choice: Optional[Union[dict, str, Literal["auto", "none"], bool]] = None, + tool_choice: Optional[ + Union[dict, str, Literal["auto", "none", "required"], bool] + ] = None, **kwargs: Any, ) -> Runnable[LanguageModelInput, BaseMessage]: """Bind tool-like objects to this chat model. @@ -502,7 +504,7 @@ class ChatHuggingFace(BaseChatModel): f"tool. Received {len(formatted_tools)} tools." ) if isinstance(tool_choice, str): - if tool_choice not in ("auto", "none"): + if tool_choice not in ("auto", "none", "required"): tool_choice = { "type": "function", "function": {"name": tool_choice},