mirror of
https://github.com/OpenBMB/ChatDev.git
synced 2026-04-25 19:28:09 +00:00
51 lines
1.4 KiB
Python
Executable File
51 lines
1.4 KiB
Python
Executable File
"""Base classes for payload processors applied on edges."""
|
|
|
|
from abc import ABC, abstractmethod
|
|
from dataclasses import dataclass
|
|
from typing import Any, Generic, TypeVar
|
|
|
|
from entity.messages import Message
|
|
from runtime.node.executor import ExecutionContext
|
|
from utils.log_manager import LogManager
|
|
from utils.function_manager import FunctionManager
|
|
|
|
TConfig = TypeVar("TConfig")
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class ProcessorFactoryContext:
|
|
"""Context passed to processor implementations."""
|
|
|
|
function_manager: "FunctionManager | None" = None
|
|
log_manager: "LogManager | None" = None
|
|
|
|
|
|
class EdgePayloadProcessor(Generic[TConfig], ABC):
|
|
"""Base payload processor API."""
|
|
|
|
label: str | None = None
|
|
metadata: dict[str, Any] | None = None
|
|
|
|
def __init__(self, config: TConfig, ctx: ProcessorFactoryContext) -> None:
|
|
self.config = config
|
|
self.ctx = ctx
|
|
|
|
@abstractmethod
|
|
def transform(
|
|
self,
|
|
payload: Message,
|
|
*,
|
|
source_result: Message,
|
|
from_node: Any,
|
|
edge_link: Any,
|
|
log_manager: LogManager,
|
|
context: ExecutionContext,
|
|
) -> Message | None:
|
|
"""Return transformed payload or None to drop the message."""
|
|
|
|
def _clone(self, payload: Message) -> Message:
|
|
return payload.clone()
|
|
|
|
def _text(self, payload: Message) -> str:
|
|
return payload.text_content()
|