From 0dd05d7b6d49f151c54dd1c14e7f4c6eb45bf077 Mon Sep 17 00:00:00 2001 From: Yeuoly Date: Sun, 29 Sep 2024 20:58:07 +0800 Subject: [PATCH] feat: tool output schema --- api/core/tools/entities/api_entities.py | 1 + api/core/tools/entities/tool_entities.py | 2 +- api/services/tools/tools_transform_service.py | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/api/core/tools/entities/api_entities.py b/api/core/tools/entities/api_entities.py index 18db659bb9..eff808a181 100644 --- a/api/core/tools/entities/api_entities.py +++ b/api/core/tools/entities/api_entities.py @@ -16,6 +16,7 @@ class ToolApiEntity(BaseModel): description: I18nObject parameters: Optional[list[ToolParameter]] = None labels: list[str] = Field(default_factory=list) + output_schema: Optional[dict] = None ToolProviderTypeApiLiteral = Optional[Literal["builtin", "api", "workflow"]] diff --git a/api/core/tools/entities/tool_entities.py b/api/core/tools/entities/tool_entities.py index d037b00d33..c96498f80b 100644 --- a/api/core/tools/entities/tool_entities.py +++ b/api/core/tools/entities/tool_entities.py @@ -298,7 +298,7 @@ class ToolEntity(BaseModel): identity: ToolIdentity parameters: list[ToolParameter] = Field(default_factory=list) description: Optional[ToolDescription] = None - # TODO: output schema + output_schema: Optional[dict] = None has_runtime_parameters: bool = Field(default=False, description="Whether the tool has runtime parameters") # pydantic configs diff --git a/api/services/tools/tools_transform_service.py b/api/services/tools/tools_transform_service.py index e74301fe9d..d68818bbb2 100644 --- a/api/services/tools/tools_transform_service.py +++ b/api/services/tools/tools_transform_service.py @@ -262,6 +262,7 @@ class ToolTransformService: name=tool.entity.identity.name, label=tool.entity.identity.label, description=tool.entity.description.human if tool.entity.description else I18nObject(en_US=""), + output_schema=tool.entity.output_schema, parameters=current_parameters, labels=labels or [], )