From 534717d85b57f9b99b3814526da1512106d7f4ec Mon Sep 17 00:00:00 2001 From: kamilbenkirane Date: Wed, 25 Mar 2026 19:55:04 +0100 Subject: [PATCH] fix: improve tool error messages (#226) - Name the protocol in ChatCompletions error: "not supported by Chat Completions" - ToolSupport with empty tools list now says "not supported by this model" instead of "Supported: []" --- src/celeste/constraints.py | 7 +++++-- src/celeste/protocols/chatcompletions/parameters.py | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/celeste/constraints.py b/src/celeste/constraints.py index 31befbba..eb5b3da6 100644 --- a/src/celeste/constraints.py +++ b/src/celeste/constraints.py @@ -382,8 +382,11 @@ def __call__(self, value: list) -> list: """Validate tools list against supported tools.""" for item in value: if isinstance(item, Tool) and type(item) not in self.tools: - supported = [t.__name__ for t in self.tools] - msg = f"Tool '{type(item).__name__}' not supported. Supported: {supported}" + if self.tools: + supported = [t.__name__ for t in self.tools] + msg = f"Tool '{type(item).__name__}' not supported. Supported: {supported}" + else: + msg = f"Tool '{type(item).__name__}' is not supported by this model" raise ConstraintViolationError(msg) return value diff --git a/src/celeste/protocols/chatcompletions/parameters.py b/src/celeste/protocols/chatcompletions/parameters.py index d6f2493e..92b098df 100644 --- a/src/celeste/protocols/chatcompletions/parameters.py +++ b/src/celeste/protocols/chatcompletions/parameters.py @@ -99,7 +99,7 @@ def map( if isinstance(item, Tool): mapper = dispatch.get(type(item)) if mapper is None: - msg = f"Tool '{type(item).__name__}' is not supported by this provider" + msg = f"Tool '{type(item).__name__}' is not supported by Chat Completions" raise ValueError(msg) tools.append(mapper.map_tool(item)) elif isinstance(item, dict) and "name" in item: