Agent Prompter
Der Prompter ist eine Schlüsselkomponente des UFO-Frameworks und verantwortlich für die Erstellung von Prompts für die LLM zur Generierung von Antworten. Der Prompter ist im Ordner ufo/prompts implementiert. Jeder Agent hat seine eigene Prompter-Klasse, die die Struktur des Prompts und die an die LLM zu übergebenden Informationen definiert.
Komponenten
Ein an die LLM übergebener Prompt ist normalerweise eine Liste von Dictionaries, wobei jedes Dictionary die folgenden Schlüssel enthält
| Key | Beschreibung |
|---|---|
role |
Die Rolle des Textes im Prompt, kann system, user oder assistant sein. |
content |
Der Inhalt des Textes für die jeweilige Rolle. |
Tipp
Die offizielle Dokumentation kann für die Erstellung von Prompts hilfreich sein.
In der __init__-Methode der Prompter-Klasse können Sie die Vorlage des Prompts für jede Komponente definieren, und die endgültige Prompt-Nachricht wird durch Kombination der Vorlagen jeder Komponente mit der prompt_construction-Methode erstellt.
System-Prompt
Der System-Prompt verwendet die in der config_dev.yaml-Datei für jeden Agenten konfigurierte Vorlage. Er enthält normalerweise Anweisungen für die Rolle des Agenten, Aktionen, Tipps, Antwortformate usw. Sie müssen die Methode system_prompt_construction verwenden, um den System-Prompt zu erstellen.
Prompts zu API-Anweisungen und Demobeispiele sind ebenfalls im System-Prompt enthalten, die jeweils von den Methoden api_prompt_helper und examples_prompt_helper erstellt werden. Hier sind die Unterkomponenten des System-Prompts
| Komponente | Beschreibung | Methode |
|---|---|---|
apis |
Die API-Anweisungen für den Agenten. | api_prompt_helper |
examples |
Die Demobeispiele für den Agenten. | examples_prompt_helper |
Benutzer-Prompt
Der Benutzer-Prompt wird basierend auf Informationen aus der Beobachtung des Agenten, externem Wissen und dem Blackboard erstellt. Sie können die Methode user_prompt_construction verwenden, um den Benutzer-Prompt zu erstellen. Hier sind die Unterkomponenten des Benutzer-Prompts
| Komponente | Beschreibung | Methode |
|---|---|---|
observation |
Die Beobachtung des Agenten. | user_content_construction |
retrieved_docs |
Das aus der externen Wissensdatenbank abgerufene Wissen. | retrived_documents_prompt_helper |
blackboard |
Die im Blackboard gespeicherten Informationen. |
blackboard_to_prompt |
Referenz
Sie finden die Implementierung des Prompter im Ordner ufo/prompts. Hier ist die grundlegende Struktur der Prompter-Klasse
Basen: ABC
Die Klasse BasicPrompter ist die abstrakte Klasse für den Prompter.
Initialisiert den BasicPrompter.
| Parameter |
|
|---|
Quellcode in prompter/basic.py
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | |
api_prompt_helper()
Eine Hilfsfunktion zur Erstellung der API-Liste und -beschreibungen für den Prompt.
Quellcode in prompter/basic.py
139 140 141 142 143 144 | |
examples_prompt_helper()
Eine Hilfsfunktion zur Erstellung des Beispiel-Prompts für In-Context-Learning.
Quellcode in prompter/basic.py
132 133 134 135 136 137 | |
load_prompt_template(template_path, is_visual=None) staticmethod
Lädt die Prompt-Vorlage.
| Rückgabe |
|
|---|
Quellcode in prompter/basic.py
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | |
prompt_construction(system_prompt, user_content) staticmethod
Erstellt den Prompt zur Zusammenfassung der Erfahrung in ein Beispiel.
| Parameter |
|
|---|
Quellcode in prompter/basic.py
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | |
retrived_documents_prompt_helper(header, separator, documents) staticmethod
Erstellt den Prompt für abgerufene Dokumente.
| Parameter |
|
|---|
Quellcode in prompter/basic.py
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | |
system_prompt_construction() abstractmethod
Erstellt den System-Prompt für LLM.
Quellcode in prompter/basic.py
108 109 110 111 112 113 114 | |
user_content_construction() abstractmethod
Erstellt den vollständigen Benutzerinhalt für LLM, einschließlich des Benutzer-Prompts und der Bilder.
Quellcode in prompter/basic.py
124 125 126 127 128 129 130 | |
user_prompt_construction() abstractmethod
Erstellt den textbasierten Benutzer-Prompt für LLM basierend auf dem Feld user in der Prompt-Vorlage.
Quellcode in prompter/basic.py
116 117 118 119 120 121 122 | |
Tipp
Sie können die Klasse Prompter an Ihre Anforderungen anpassen.