3
0
Agent-Template/Example.md

3.1 KiB

Beispiel: Rätsel & Agent

Der Beispielagent kann Rechenaufgaben lösen, dabei ist das Rätsel eine einfache Aufgabe mit Variablen und in den Daten (Textdateien) werden den Variablen Werte zugewiesen.

Der Beispielagent ist nicht sonderlich schlau, sondern funktioniert nur Rätseln, die genau einen bestimmten Aufbau haben.

Beispiel Rätsel (AgentMessage)

  • Daten (als Dateien in ./data/share)
    • ./example/x.txt: x = 10
    • ./example/y.txt: y = 15
    • ./example/z.txt: z = 20
  • Rätsel z.B.
    • Kontext: "[Taschenrechner]"
    • Frage: "x * y ="
  • Eingabe unter http://localhost:8080/app/new möglich
    • Für die Dateien ist eine Liste vorhandener Dateien hinterlegt, sodass Eingaben vervollständigt werden.
    • Es wird eine JSON-Vorschau angezeigt und das Rätsel kann an das Management geschickt werden
  • Beispiel für JSON Darstellung
  • Nachrichten könnten unter http://localhost:8080/app/table angesehen werden
    • Nachricht mit Solution=True sollte dann die Lösung beinhalten

Ablauf der Bestimmung der Lösung

Siehe auch → Implementierung

  1. Nachricht mit Rätsel an Management senden
  2. Management wertet Nachricht und sendet Nachricht an alle ihm bekannten Extract-Agenten
  3. Extract-Agenten extrahieren Daten und senden Ergebnis zurück an Management (status.extract.finished == True)
  4. Management senden Nachricht (mit Extraktionen) an alle ihm bekannten Solve-Agenten
  5. Solve-Agenten versuchen das Rätsel zu lösen
  6. Management bekommt Ergebnis von Solve-Agenten und sendet dies an Gatekeeper-Agenten
  7. Gatekeeper-Agent prüft Lösung und akzeptiert oder lehnt diese ab. Sendet Entscheidung an Management.
  8. Management prüft, ob Lösung angenommen. Falls Lösung nicht akzeptiert, so wird Rätsel erneut gestellt (maximal SOLUTION_MAX_TRIALS mal)

Agenten Quellcode

  1. Extract ./src/extract/agent.py
  2. Solve ./src/solve/agent.py
  3. Validate ./src/validate/agent.py

JSON-Darstellung

{
	"id": "ex1",
	"sub_ids": [],
	"riddle": {
		"context": "[Taschenrechner]",
		"question": "x * y =",
		"solutions_before": []
	},
	"solution": [],
	"data": [
		{
			"type": "text",
			"file_plain": "example/x.txt",
			"file_extracted": null
		},
		{
			"type": "text",
			"file_plain": "example/y.txt",
			"file_extracted": null
		},
		{
			"type": "text",
			"file_plain": "example/z.txt",
			"file_extracted": null
		}
	],
	"status": {
		"extract": {
			"required": true,
			"finished": false
		},
		"solve": {
			"required": true,
			"finished": false
		},
		"validate": {
			"required": true,
			"finished": false
		},
		"trial": 0,
		"solved": false
	},
	"contacts": 0
}