Follower Agent 🚶🏽‍♂️

Der FollowerAgent erbt vom AppAgent und ist dafür verantwortlich, die Anweisungen des Benutzers auszuführen, um spezifische Aufgaben innerhalb der Anwendung durchzuführen. Der FollowerAgent ist darauf ausgelegt, eine Reihe von Aktionen basierend auf der Anleitung des Benutzers auszuführen. Er ist besonders nützlich für Softwaretests, wenn klare Anweisungen zur Validierung des Anwendungsverhaltens gegeben werden.

Anders als der AppAgent

Der FollowerAgent teilt die meisten Funktionalitäten mit dem AppAgent, ist aber darauf ausgelegt, die vom Benutzer bereitgestellten Schritt-für-Schritt-Anweisungen zu befolgen, anstatt eigene Schlussfolgerungen zu ziehen, um die nächste Aktion zu bestimmen.

Verwendung

Der FollowerAgent ist im follower-Modus verfügbar. Weitere Details finden Sie in der Dokumentation. Er verwendet auch unterschiedliche Session und Processor, um die Anweisungen des Benutzers zu verarbeiten. Die schrittweisen Anweisungen werden vom Benutzer in einer JSON-Datei bereitgestellt, die dann vom FollowerAgent geparst wird, um die Aktionen auszuführen. Ein Beispiel für die JSON-Datei ist unten dargestellt

{
    "task": "Type in a bold text of 'Test For Fun'",
    "steps": 
    [
        "1.type in 'Test For Fun'",
        "2.select the text of 'Test For Fun'",
        "3.click on the bold"
    ],
    "object": "draft.docx"
}

Referenz

Basen: AppAgent

Die FollowerAgent-Klasse ist der Manager eines FollowedAgent, der die Schritt-für-Schritt-Anweisungen für die Aktionsausführung innerhalb einer Anwendung befolgt. Sie ist eine Unterklasse des AppAgent, der die Aktionsausführung innerhalb der Anwendung abschließt.

Initialisiert den FollowAgent.

Parameter
  • name (str) –

    Der Name des Agenten.

  • process_name (str) –

    Der Prozessname der App.

  • app_root_name (str) –

    Der Root-Name der App.

  • is_visual (bool) –

    Das Flag, das angibt, ob der Agent visuell ist oder nicht.

  • main_prompt (str) –

    Der Pfad zur Haupt-Prompt-Datei.

  • example_prompt (str) –

    Der Pfad zur Beispiel-Prompt-Datei.

  • api_prompt (str) –

    Der Pfad zur API-Prompt-Datei.

  • app_info_prompt (str) –

    Der Pfad zur App-Info-Prompt-Datei.

Quellcode in agents/agent/follower_agent.py
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
52
53
54
55
56
57
58
59
60
61
def __init__(
    self,
    name: str,
    process_name: str,
    app_root_name: str,
    is_visual: bool,
    main_prompt: str,
    example_prompt: str,
    api_prompt: str,
    app_info_prompt: str,
):
    """
    Initialize the FollowAgent.
    :param name: The name of the agent.
    :param process_name: The process name of the app.
    :param app_root_name: The root name of the app.
    :param is_visual: The flag indicating whether the agent is visual or not.
    :param main_prompt: The main prompt file path.
    :param example_prompt: The example prompt file path.
    :param api_prompt: The API prompt file path.
    :param app_info_prompt: The app information prompt file path.
    """
    super().__init__(
        name=name,
        process_name=process_name,
        app_root_name=app_root_name,
        is_visual=is_visual,
        main_prompt=main_prompt,
        example_prompt=example_prompt,
        api_prompt=api_prompt,
        skip_prompter=True,
    )

    self.prompter = self.get_prompter(
        is_visual,
        main_prompt,
        example_prompt,
        api_prompt,
        app_info_prompt,
        app_root_name,
    )

get_prompter(is_visual, main_prompt, example_prompt, api_prompt, app_info_prompt, app_root_name='')

Ruft den Prompter für den Follower-Agenten ab.

Parameter
  • is_visual (str) –

    Das Flag, das angibt, ob der Agent visuell ist oder nicht.

  • main_prompt (str) –

    Der Pfad zur Haupt-Prompt-Datei.

  • example_prompt (str) –

    Der Pfad zur Beispiel-Prompt-Datei.

  • api_prompt (str) –

    Der Pfad zur API-Prompt-Datei.

  • app_info_prompt (str) –

    Der Pfad zur App-Info-Prompt-Datei.

  • app_root_name (str, Standard: '' ) –

    Der Root-Name der App.

Rückgabe
  • FollowerAgentPrompter

    Die Prompter-Instanz.

Quellcode in agents/agent/follower_agent.py
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
def get_prompter(
    self,
    is_visual: str,
    main_prompt: str,
    example_prompt: str,
    api_prompt: str,
    app_info_prompt: str,
    app_root_name: str = "",
) -> FollowerAgentPrompter:
    """
    Get the prompter for the follower agent.
    :param is_visual: The flag indicating whether the agent is visual or not.
    :param main_prompt: The main prompt file path.
    :param example_prompt: The example prompt file path.
    :param api_prompt: The API prompt file path.
    :param app_info_prompt: The app information prompt file path.
    :param app_root_name: The root name of the app.
    :return: The prompter instance.
    """
    return FollowerAgentPrompter(
        is_visual,
        main_prompt,
        example_prompt,
        api_prompt,
        app_info_prompt,
        app_root_name,
    )

message_constructor(dynamic_examples, dynamic_knowledge, image_list, control_info, prev_subtask, plan, request, subtask, host_message, current_state, state_diff, blackboard_prompt, include_last_screenshot)

Konstruiert die Prompt-Nachricht für den FollowAgent.

Parameter
  • dynamic_examples (str) –

    Die dynamischen Beispiele, die aus der Selbstdemonstration und menschlichen Demonstration abgerufen wurden.

  • dynamic_knowledge (str) –

    Das dynamische Wissen, das aus der Selbstdemonstration und menschlichen Demonstration abgerufen wurde.

  • image_list (List[str]) –

    Die Liste der Screenshot-Bilder.

  • control_info (str) –

    Die Steuerinformation.

  • prev_subtask (List[str]) –

    Die vorherige Teilaufgabe.

  • plan (List[str]) –

    Der Plan.

  • request (str) –

    Die Anfrage.

  • subtask (str) –

    Die Teilaufgabe.

  • host_message (List[str]) –

    Die Host-Nachricht.

  • current_state (Dict[str, str]) –

    Der aktuelle Zustand der App.

  • state_diff (Dict[str, str]) –

    Die Zustandsdifferenz zwischen dem aktuellen und dem vorherigen Zustand.

  • blackboard_prompt (List[Dict[str, str]]) –

    Der Black-Board-Prompt.

  • include_last_screenshot (bool) –

    Das Flag, das angibt, ob der letzte Screenshot enthalten sein soll.

Rückgabe
  • List[Dict[str, str]]

    Die Prompt-Nachricht.

Quellcode in agents/agent/follower_agent.py
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
def message_constructor(
    self,
    dynamic_examples: str,
    dynamic_knowledge: str,
    image_list: List[str],
    control_info: str,
    prev_subtask: List[str],
    plan: List[str],
    request: str,
    subtask: str,
    host_message: List[str],
    current_state: Dict[str, str],
    state_diff: Dict[str, str],
    blackboard_prompt: List[Dict[str, str]],
    include_last_screenshot: bool,
) -> List[Dict[str, str]]:
    """
    Construct the prompt message for the FollowAgent.
    :param dynamic_examples: The dynamic examples retrieved from the self-demonstration and human demonstration.
    :param dynamic_knowledge: The dynamic knowledge retrieved from the self-demonstration and human demonstration.
    :param image_list: The list of screenshot images.
    :param control_info: The control information.
    :param prev_subtask: The previous subtask.
    :param plan: The plan.
    :param request: The request.
    :param subtask: The subtask.
    :param host_message: The host message.
    :param current_state: The current state of the app.
    :param state_diff: The state difference between the current state and the previous state.
    :param blackboard_prompt: The blackboard prompt.
    :param include_last_screenshot: The flag indicating whether the last screenshot should be included.
    :return: The prompt message.
    """
    followagent_prompt_system_message = self.prompter.system_prompt_construction(
        dynamic_examples
    )
    followagent_prompt_user_message = self.prompter.user_content_construction(
        image_list=image_list,
        control_item=control_info,
        prev_subtask=prev_subtask,
        prev_plan=plan,
        user_request=request,
        subtask=subtask,
        current_application=self._process_name,
        host_message=host_message,
        retrieved_docs=dynamic_knowledge,
        current_state=current_state,
        state_diff=state_diff,
        include_last_screenshot=include_last_screenshot,
    )

    followagent_prompt_message = self.prompter.prompt_construction(
        followagent_prompt_system_message, followagent_prompt_user_message
    )

    return followagent_prompt_message