diff --git a/lib/crewai/src/crewai/llms/providers/anthropic/completion.py b/lib/crewai/src/crewai/llms/providers/anthropic/completion.py index b6df34b94..94afbb06d 100644 --- a/lib/crewai/src/crewai/llms/providers/anthropic/completion.py +++ b/lib/crewai/src/crewai/llms/providers/anthropic/completion.py @@ -494,6 +494,10 @@ class AnthropicCompletion(BaseLLM): "required": [], } + func_info = tool.get("function", {}) + if func_info.get("strict"): + anthropic_tool["strict"] = True + anthropic_tools.append(anthropic_tool) return anthropic_tools diff --git a/lib/crewai/src/crewai/llms/providers/bedrock/completion.py b/lib/crewai/src/crewai/llms/providers/bedrock/completion.py index c25c9bfec..59c8ef28e 100644 --- a/lib/crewai/src/crewai/llms/providers/bedrock/completion.py +++ b/lib/crewai/src/crewai/llms/providers/bedrock/completion.py @@ -118,7 +118,7 @@ def _preprocess_structured_data( try: - from aiobotocore.session import ( # type: ignore[import-untyped] + from aiobotocore.session import ( get_session as get_aiobotocore_session, ) @@ -169,6 +169,7 @@ class ToolSpec(TypedDict, total=False): name: Required[str] description: Required[str] inputSchema: ToolInputSchema + strict: bool class ConverseToolTypeDef(TypedDict): @@ -1965,6 +1966,10 @@ class BedrockCompletion(BaseLLM): input_schema: ToolInputSchema = {"json": parameters} tool_spec["inputSchema"] = input_schema + func_info = tool.get("function", {}) + if func_info.get("strict"): + tool_spec["strict"] = True + converse_tool: ConverseToolTypeDef = {"toolSpec": tool_spec} converse_tools.append(converse_tool)