aboutsummaryrefslogtreecommitdiff
path: root/autogpts/autogpt/autogpt/agents/protocols.py
blob: 22fab67f9ed64bed4bb0789f83d462e7ec3b8d3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from abc import abstractmethod
from typing import TYPE_CHECKING, Iterator

from autogpt.agents.components import AgentComponent

if TYPE_CHECKING:
    from autogpt.agents.base import BaseAgentActionProposal
    from autogpt.core.resource.model_providers.schema import ChatMessage
    from autogpt.models.action_history import ActionResult
    from autogpt.models.command import Command


class DirectiveProvider(AgentComponent):
    def get_constraints(self) -> Iterator[str]:
        return iter([])

    def get_resources(self) -> Iterator[str]:
        return iter([])

    def get_best_practices(self) -> Iterator[str]:
        return iter([])


class CommandProvider(AgentComponent):
    @abstractmethod
    def get_commands(self) -> Iterator["Command"]:
        ...


class MessageProvider(AgentComponent):
    @abstractmethod
    def get_messages(self) -> Iterator["ChatMessage"]:
        ...


class AfterParse(AgentComponent):
    @abstractmethod
    def after_parse(self, result: "BaseAgentActionProposal") -> None:
        ...


class ExecutionFailure(AgentComponent):
    @abstractmethod
    def execution_failure(self, error: Exception) -> None:
        ...


class AfterExecute(AgentComponent):
    @abstractmethod
    def after_execute(self, result: "ActionResult") -> None:
        ...