Skip to content

Commit 61a0fcc

Browse files
authored
fix agent putout the output of workflow-tool twice (#26835) (#27087)
1 parent f627348 commit 61a0fcc

File tree

4 files changed

+8
-3
lines changed

4 files changed

+8
-3
lines changed

api/core/tools/__base/tool.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,12 +210,13 @@ def create_blob_message(self, blob: bytes, meta: dict | None = None) -> ToolInvo
210210
meta=meta,
211211
)
212212

213-
def create_json_message(self, object: dict) -> ToolInvokeMessage:
213+
def create_json_message(self, object: dict, suppress_output: bool = False) -> ToolInvokeMessage:
214214
"""
215215
create a json message
216216
"""
217217
return ToolInvokeMessage(
218-
type=ToolInvokeMessage.MessageType.JSON, message=ToolInvokeMessage.JsonMessage(json_object=object)
218+
type=ToolInvokeMessage.MessageType.JSON,
219+
message=ToolInvokeMessage.JsonMessage(json_object=object, suppress_output=suppress_output),
219220
)
220221

221222
def create_variable_message(

api/core/tools/entities/tool_entities.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ class TextMessage(BaseModel):
129129

130130
class JsonMessage(BaseModel):
131131
json_object: dict
132+
suppress_output: bool = Field(default=False, description="Whether to suppress JSON output in result string")
132133

133134
class BlobMessage(BaseModel):
134135
blob: bytes

api/core/tools/tool_engine.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,9 @@ def _convert_tool_response_to_str(tool_response: list[ToolInvokeMessage]) -> str
245245
+ "you do not need to create it, just tell the user to check it now."
246246
)
247247
elif response.type == ToolInvokeMessage.MessageType.JSON:
248+
json_message = cast(ToolInvokeMessage.JsonMessage, response.message)
249+
if json_message.suppress_output:
250+
continue
248251
json_parts.append(
249252
json.dumps(
250253
safe_json_value(cast(ToolInvokeMessage.JsonMessage, response.message).json_object),

api/core/tools/workflow_as_tool/tool.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ def _invoke(
117117
self._latest_usage = self._derive_usage_from_result(data)
118118

119119
yield self.create_text_message(json.dumps(outputs, ensure_ascii=False))
120-
yield self.create_json_message(outputs)
120+
yield self.create_json_message(outputs, suppress_output=True)
121121

122122
@property
123123
def latest_usage(self) -> LLMUsage:

0 commit comments

Comments
 (0)