fix: ensure tool usage counter is incremented for add_image tool

Address Bugbot feedback: when skipping _format_result() for add_image tool,
the task.used_tools counter was not being incremented. Now we increment
the counter before the conditional check and pass skip_counter=True to
_format_result() to avoid double-counting.

Co-Authored-By: João <joao@crewai.com>
This commit is contained in:
Devin AI
2025-12-02 10:36:43 +00:00
parent cff9cfb665
commit 5110817709

View File

@@ -314,6 +314,10 @@ class ToolUsage:
attempts=self._run_attempts,
)
# Always increment tool usage counter (this is normally done in _format_result)
if self.task:
self.task.used_tools += 1
# For add_image tool, preserve the raw dict result for multimodal handling
# The result is a dict like {"role": "user", "content": [...]} that should
# not be stringified
@@ -323,8 +327,19 @@ class ToolUsage:
and tool.name.casefold().strip()
== add_image_tool.get("name", "").casefold().strip()
)
if not is_add_image_tool:
result = self._format_result(result=result)
if is_add_image_tool:
# For add_image, only apply format reminder if needed (skip stringification)
if self._should_remember_format():
# Append format reminder to the text content if present
format_reminder = self._i18n.slice("tools").format(
tools=self.tools_description, tool_names=self.tools_names
)
if isinstance(result, dict) and "content" in result:
# Add format reminder as a text item in the content list
if isinstance(result["content"], list):
result["content"].append({"type": "text", "text": format_reminder})
else:
result = self._format_result(result=result, skip_counter=True)
data = {
"result": result,
@@ -363,8 +378,8 @@ class ToolUsage:
return result
def _format_result(self, result: Any) -> str:
if self.task:
def _format_result(self, result: Any, skip_counter: bool = False) -> str:
if self.task and not skip_counter:
self.task.used_tools += 1
if self._should_remember_format():
result = self._remember_format(result=result)