mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-09-18 16:00:41 +00:00
docs: New AWEL tutorial (#1245)
This commit is contained in:
@@ -20,13 +20,21 @@ T = TypeVar("T")
|
||||
|
||||
|
||||
class _EMPTY_DATA_TYPE:
|
||||
"""A special type to represent empty data."""
|
||||
|
||||
def __init__(self, name: str = "EMPTY_DATA"):
|
||||
self.name = name
|
||||
|
||||
def __bool__(self):
|
||||
return False
|
||||
|
||||
def __str__(self):
|
||||
return f"EmptyData({self.name})"
|
||||
|
||||
EMPTY_DATA = _EMPTY_DATA_TYPE()
|
||||
SKIP_DATA = _EMPTY_DATA_TYPE()
|
||||
PLACEHOLDER_DATA = _EMPTY_DATA_TYPE()
|
||||
|
||||
EMPTY_DATA = _EMPTY_DATA_TYPE("EMPTY_DATA")
|
||||
SKIP_DATA = _EMPTY_DATA_TYPE("SKIP_DATA")
|
||||
PLACEHOLDER_DATA = _EMPTY_DATA_TYPE("PLACEHOLDER_DATA")
|
||||
|
||||
|
||||
def is_empty_data(data: Any):
|
||||
@@ -37,7 +45,7 @@ def is_empty_data(data: Any):
|
||||
|
||||
|
||||
MapFunc = Union[Callable[[IN], OUT], Callable[[IN], Awaitable[OUT]]]
|
||||
ReduceFunc = Union[Callable[[IN], OUT], Callable[[IN], Awaitable[OUT]]]
|
||||
ReduceFunc = Union[Callable[[IN, IN], OUT], Callable[[IN, IN], Awaitable[OUT]]]
|
||||
StreamFunc = Callable[[IN], Awaitable[AsyncIterator[OUT]]]
|
||||
UnStreamFunc = Callable[[AsyncIterator[IN]], OUT]
|
||||
TransformFunc = Callable[[AsyncIterator[IN]], Awaitable[AsyncIterator[OUT]]]
|
||||
@@ -341,7 +349,7 @@ class InputContext(ABC):
|
||||
"""
|
||||
|
||||
@abstractmethod
|
||||
async def reduce(self, reduce_func: Callable[[Any], Any]) -> "InputContext":
|
||||
async def reduce(self, reduce_func: ReduceFunc) -> "InputContext":
|
||||
"""Apply a reducing function to the inputs.
|
||||
|
||||
Args:
|
||||
|
@@ -479,7 +479,8 @@ class DefaultInputContext(InputContext):
|
||||
if apply_type == "map":
|
||||
result: Coroutine[Any, Any, TaskOutput[Any]] = out.task_output.map(func)
|
||||
elif apply_type == "reduce":
|
||||
result = out.task_output.reduce(func)
|
||||
reduce_func = cast(ReduceFunc, func)
|
||||
result = out.task_output.reduce(reduce_func)
|
||||
elif apply_type == "check_condition":
|
||||
result = out.task_output.check_condition(func)
|
||||
else:
|
||||
@@ -541,14 +542,16 @@ class DefaultInputContext(InputContext):
|
||||
)
|
||||
return DefaultInputContext([single_output])
|
||||
|
||||
async def reduce(self, reduce_func: Callable[[Any], Any]) -> InputContext:
|
||||
async def reduce(self, reduce_func: ReduceFunc) -> InputContext:
|
||||
"""Apply a reduce function to all parent outputs."""
|
||||
if not self.check_stream():
|
||||
raise ValueError(
|
||||
"The output in all tasks must has same output format of stream to apply"
|
||||
" reduce function"
|
||||
)
|
||||
new_outputs, results = await self._apply_func(reduce_func, apply_type="reduce")
|
||||
new_outputs, results = await self._apply_func(
|
||||
reduce_func, apply_type="reduce" # type: ignore
|
||||
)
|
||||
for i, task_ctx in enumerate(new_outputs):
|
||||
task_ctx = cast(TaskContext, task_ctx)
|
||||
task_ctx.set_task_output(results[i])
|
||||
|
Reference in New Issue
Block a user