Skip to content

Commit f2fcdc1

Browse files
committed
feat(tool): add max print output length control
1 parent 4b126e0 commit f2fcdc1

2 files changed

Lines changed: 10 additions & 3 deletions

File tree

flowllm/core/op/base_async_tool_op.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def __init__(
3434
save_answer: bool = True,
3535
input_schema_mapping: dict = None,
3636
output_schema_mapping: dict = None,
37+
max_print_output_length: int = 200,
3738
**kwargs,
3839
):
3940
"""Initialize the async tool operator.
@@ -44,6 +45,7 @@ def __init__(
4445
save_answer: If True, write primary output into `response.answer`.
4546
input_schema_mapping: Optional mapping from input names to context keys.
4647
output_schema_mapping: Optional mapping from output names to context keys.
48+
max_print_output_length: Maximum length of output strings to log.
4749
**kwargs: Extra arguments forwarded to `BaseAsyncOp`.
4850
"""
4951
super().__init__(**kwargs)
@@ -53,6 +55,7 @@ def __init__(
5355
self.save_answer: bool = save_answer
5456
self.input_schema_mapping: dict | None = input_schema_mapping # map key to context
5557
self.output_schema_mapping: dict | None = output_schema_mapping # map key to context
58+
self.max_print_output_length: int = max_print_output_length
5659

5760
self._tool_call: ToolCall | None = None
5861
self.input_dict: dict = {} # Actual input values extracted from context
@@ -233,10 +236,14 @@ async def async_after_execute(self):
233236
self.context.response.answer = json.dumps(self.output_dict, ensure_ascii=False)
234237

235238
if self.enable_print_output:
239+
output_str = str(self.output_dict)
240+
if len(output_str) > self.max_print_output_length:
241+
output_str = f"{output_str[:self.max_print_output_length]}..."
242+
236243
if self.tool_index == 0:
237-
logger.info(f"{self.name}.output_dict={self.output_dict}")
244+
logger.info(f"{self.name}.output_dict={output_str}")
238245
else:
239-
logger.info(f"{self.name}.{self.tool_index}.output_dict={self.output_dict}")
246+
logger.info(f"{self.name}.{self.tool_index}.output_dict={output_str}")
240247

241248
async def async_default_execute(self, e: Exception = None, **kwargs):
242249
"""Fill outputs with a default failure message when execution fails.

flowllm/core/schema/tool_call.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class ToolCall(BaseModel):
6262
}
6363
output:
6464
{
65-
"index": 0
65+
"index": 0,
6666
"id": "call_6596dafa2a6a46f7a217da",
6767
"function": {
6868
"arguments": "{\"location\": \"Beijing\"}",

0 commit comments

Comments
 (0)