fix: workflow as tool type

This commit is contained in:
Yeuoly 2024-08-29 14:09:47 +08:00
parent c8b0160ea9
commit 4a8d3c54ca
No known key found for this signature in database
GPG Key ID: A66E7E320FB19F61
3 changed files with 27 additions and 3 deletions

View File

@ -4,7 +4,7 @@ import os
import threading import threading
import uuid import uuid
from collections.abc import Generator from collections.abc import Generator
from typing import Union from typing import Literal, Union, overload
from flask import Flask, current_app from flask import Flask, current_app
from pydantic import ValidationError from pydantic import ValidationError
@ -32,6 +32,28 @@ logger = logging.getLogger(__name__)
class WorkflowAppGenerator(BaseAppGenerator): class WorkflowAppGenerator(BaseAppGenerator):
@overload
def generate(
self, app_model: App,
workflow: Workflow,
user: Union[Account, EndUser],
args: dict,
invoke_from: InvokeFrom,
stream: Literal[True] = True,
call_depth: int = 0,
) -> Generator[dict, None, None]: ...
@overload
def generate(
self, app_model: App,
workflow: Workflow,
user: Union[Account, EndUser],
args: dict,
invoke_from: InvokeFrom,
stream: Literal[False] = False,
call_depth: int = 0,
) -> dict: ...
def generate( def generate(
self, app_model: App, self, app_model: App,
workflow: Workflow, workflow: Workflow,

View File

@ -1,5 +1,5 @@
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from collections.abc import Generator, Mapping from collections.abc import Generator
from copy import deepcopy from copy import deepcopy
from enum import Enum from enum import Enum
from typing import TYPE_CHECKING, Any, Optional, Union from typing import TYPE_CHECKING, Any, Optional, Union

View File

@ -48,6 +48,8 @@ class WorkflowTool(Tool):
from core.app.apps.workflow.app_generator import WorkflowAppGenerator from core.app.apps.workflow.app_generator import WorkflowAppGenerator
generator = WorkflowAppGenerator() generator = WorkflowAppGenerator()
assert self.runtime and self.runtime.invoke_from
result = generator.generate( result = generator.generate(
app_model=app, app_model=app,
workflow=workflow, workflow=workflow,
@ -154,7 +156,7 @@ class WorkflowTool(Tool):
try: try:
file_var_list = [FileVar(**f) for f in file] file_var_list = [FileVar(**f) for f in file]
for file_var in file_var_list: for file_var in file_var_list:
file_dict = { file_dict: dict[str, Any] = {
'transfer_method': file_var.transfer_method.value, 'transfer_method': file_var.transfer_method.value,
'type': file_var.type.value, 'type': file_var.type.value,
} }