@@ -210,12 +210,13 @@ class Tool(ABC):
|
|||||||
meta=meta,
|
meta=meta,
|
||||||
)
|
)
|
||||||
|
|
||||||
def create_json_message(self, object: dict) -> ToolInvokeMessage:
|
def create_json_message(self, object: dict, suppress_output: bool = False) -> ToolInvokeMessage:
|
||||||
"""
|
"""
|
||||||
create a json message
|
create a json message
|
||||||
"""
|
"""
|
||||||
return ToolInvokeMessage(
|
return ToolInvokeMessage(
|
||||||
type=ToolInvokeMessage.MessageType.JSON, message=ToolInvokeMessage.JsonMessage(json_object=object)
|
type=ToolInvokeMessage.MessageType.JSON,
|
||||||
|
message=ToolInvokeMessage.JsonMessage(json_object=object, suppress_output=suppress_output),
|
||||||
)
|
)
|
||||||
|
|
||||||
def create_variable_message(
|
def create_variable_message(
|
||||||
|
|||||||
@@ -129,6 +129,7 @@ class ToolInvokeMessage(BaseModel):
|
|||||||
|
|
||||||
class JsonMessage(BaseModel):
|
class JsonMessage(BaseModel):
|
||||||
json_object: dict
|
json_object: dict
|
||||||
|
suppress_output: bool = Field(default=False, description="Whether to suppress JSON output in result string")
|
||||||
|
|
||||||
class BlobMessage(BaseModel):
|
class BlobMessage(BaseModel):
|
||||||
blob: bytes
|
blob: bytes
|
||||||
|
|||||||
@@ -245,6 +245,9 @@ class ToolEngine:
|
|||||||
+ "you do not need to create it, just tell the user to check it now."
|
+ "you do not need to create it, just tell the user to check it now."
|
||||||
)
|
)
|
||||||
elif response.type == ToolInvokeMessage.MessageType.JSON:
|
elif response.type == ToolInvokeMessage.MessageType.JSON:
|
||||||
|
json_message = cast(ToolInvokeMessage.JsonMessage, response.message)
|
||||||
|
if json_message.suppress_output:
|
||||||
|
continue
|
||||||
json_parts.append(
|
json_parts.append(
|
||||||
json.dumps(
|
json.dumps(
|
||||||
safe_json_value(cast(ToolInvokeMessage.JsonMessage, response.message).json_object),
|
safe_json_value(cast(ToolInvokeMessage.JsonMessage, response.message).json_object),
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ class WorkflowTool(Tool):
|
|||||||
self._latest_usage = self._derive_usage_from_result(data)
|
self._latest_usage = self._derive_usage_from_result(data)
|
||||||
|
|
||||||
yield self.create_text_message(json.dumps(outputs, ensure_ascii=False))
|
yield self.create_text_message(json.dumps(outputs, ensure_ascii=False))
|
||||||
yield self.create_json_message(outputs)
|
yield self.create_json_message(outputs, suppress_output=True)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def latest_usage(self) -> LLMUsage:
|
def latest_usage(self) -> LLMUsage:
|
||||||
|
|||||||
Reference in New Issue
Block a user