3
0

Minor Updates

This commit is contained in:
Magnus Bender 2024-10-31 16:46:18 +01:00
parent 1fe15cf83a
commit e9893f125c
Signed by: bender
GPG Key ID: 5149A211831F2BD7
6 changed files with 18 additions and 9 deletions

View File

@ -34,13 +34,14 @@ Insbesondere bei Aufgabe, die der Agent nicht lösen kann, kann der Agent die An
Damit wird das Lösung des Rätsels (zumindest von diesem Agenten) aufgegeben. Damit wird das Lösung des Rätsels (zumindest von diesem Agenten) aufgegeben.
Sollte z.B. der Agent zur Extraktion von Bilder keine Antwort geben und gibt aber der Agent zur Extraktion von Audio eine Antwort, so wird die Lösung des Rätsels nicht aufgegeben, aber es sind nur die Daten des Typs Audio extrahiert vorhanden und nutzbar genutzt werden. Sollte z.B. der Agent zur Extraktion von Bilder keine Antwort geben und gibt aber der Agent zur Extraktion von Audio eine Antwort, so wird die Lösung des Rätsels nicht aufgegeben, aber es sind nur die Daten des Typs Audio extrahiert vorhanden und nutzbar genutzt werden.
Hieraus lässt sich auch ablesen, dass ein Agent evtl. das selbe Rätsel mehrfach bekommt, jeweils mit unterschiedlichen Daten die bereits extrahier sind. Hieraus lässt sich auch ablesen, dass ein Agent evtl. das selbe Rätsel mehrfach bekommt, jeweils mit unterschiedlichen Daten die bereits extrahiert sind.
Dadurch kann ein Agent direkt versuchen ein Rätsel zu lösen und falls die Daten nicht reichen, dies später mit mehr Daten wiederholen. Dadurch kann ein Agent direkt versuchen ein Rätsel zu lösen und falls die Daten nicht reichen, dies später mit mehr Daten wiederholen.
Das Framework führt die verschiedenen Extraktionen der verschiedenen Agenten zu Audio, Image, Text zusammen, d.h., das Framework stellt immer alle vorhandenen Extraktionen für ein Datensatz in den Nachrichten zusammen (dabei gilt ein Datensatz als gleich, wenn Datei, Typ und Prompt übereinstimmen.)
Die Zusammenführung findet nur innerhalb von Rätseln mit der gleichen ID statt.
> **ToDo** (für Magnus): Das Framework führt bisher die Extraktionen der verschiedenen Agenten zu Audio, Image, Text nicht zusammen. Über den Parameter `REQUIRE_FULL_EXTRACT` kann das Management angewiesen werden, zuerst alle Extraktionen aller Agenten abzuwarten, bevor das Rätsel zum Lösen weitergegeben wird.
> Vielleicht sollte dies aber geschehen, sodass immer maximal viel extrahierte Daten in den Nachrichten sind. Falls `REQUIRE_FULL_EXTRACT=true` so muss sichergestellt werden, dass auch alle Agenten (also für jeden Datensatz) irgendwann eine Extraktion bestimmt wird, andernfalls wartet das Management ewig.
> Andernfalls müsste die Agenten wohl selbst sammeln, was es nicht einfacher macht. Bei `REQUIRE_FULL_EXTRACT=false` bekommt der Agent zum Lösen ein Rätsel dann evtl. doppelt, jeweils mit weiteren Extraktionen.
> *Idee*: Wenn Management Antworten bzgl. Extraktionen bekommt, filtere db nach id und füge bei allen data items ohne extractions diese hinzu wenn es welche in der db gibt.
Ein Agent kann eine Antwort aber auch nicht nur stoppen, sondern auch für später aufheben (via <http://localhost:8080/docs/ums/agent/agent.html#BasicAgent.before_response>). Ein Agent kann eine Antwort aber auch nicht nur stoppen, sondern auch für später aufheben (via <http://localhost:8080/docs/ums/agent/agent.html#BasicAgent.before_response>).
So kann ein Agent z.B. auf die Lösung einer Unteraufgabe warten und erst anschließend seine Antwort an das Management senden. So kann ein Agent z.B. auf die Lösung einer Unteraufgabe warten und erst anschließend seine Antwort an das Management senden.

View File

@ -47,6 +47,13 @@
> Auch das Management und Agenten-Framework wurde neu entworfen, d.h., es können (und werden) noch ein paar Käfer irgendwo lauern. > Auch das Management und Agenten-Framework wurde neu entworfen, d.h., es können (und werden) noch ein paar Käfer irgendwo lauern.
> Bugs also bitte melden und bei Problemen mit dem System nachfragen (magnus.bender@uni-hamburg.de). > Bugs also bitte melden und bei Problemen mit dem System nachfragen (magnus.bender@uni-hamburg.de).
## Update Images
- Image für Management
- `docker compose pull` (aktualisiert neu)
- Images für Agenten
- `docker pull git.chai.uni-hamburg.de/ums-agenten/base-agent:cpu-arm64` (oder `:cpu-amd64`)
- `docker compose build`
## Docker Images ## Docker Images
Es gibt unter <https://git.chai.uni-hamburg.de/UMS-Agenten/-/packages> viele verschiedene Docker Images. Es gibt unter <https://git.chai.uni-hamburg.de/UMS-Agenten/-/packages> viele verschiedene Docker Images.
Die Images stellen die vorbereitete Umgebung da. Die Images stellen die vorbereitete Umgebung da.

View File

@ -16,6 +16,8 @@ services:
- SOLUTION_MAX_TRIALS=5 - SOLUTION_MAX_TRIALS=5
# limit to prevent messages in never ending cycles # limit to prevent messages in never ending cycles
- MESSAGE_MAX_CONTACTS=100 - MESSAGE_MAX_CONTACTS=100
# wait for all extraction agents to return results before solving a riddle
- REQUIRE_FULL_EXTRACT=false
# how to access management (the host name is the name of the service in this file) # how to access management (the host name is the name of the service in this file)
- MANAGEMENT_URL=http://management - MANAGEMENT_URL=http://management
# *register* the agents to the management # *register* the agents to the management

View File

@ -13,8 +13,7 @@ import re
from typing import Callable from typing import Callable
from ums.agent import ExtractAudioAgent, ExtractImageAgent, ExtractTextAgent from ums.agent import ExtractAudioAgent, ExtractImageAgent, ExtractTextAgent
from ums.utils.types import RiddleData, AgentMessage from ums.utils import RiddleData, AgentMessage, ExtractedData, ExtractedContent, ExtractedPositions
from ums.utils.schema import ExtractedData, ExtractedContent, ExtractedPositions
class SimpleExtractAudioAgent(ExtractAudioAgent): class SimpleExtractAudioAgent(ExtractAudioAgent):
# here we do not have an implementation for extracting audio, # here we do not have an implementation for extracting audio,

View File

@ -14,7 +14,7 @@ import re, random
from typing import Callable from typing import Callable
from ums.agent import SolveAgent from ums.agent import SolveAgent
from ums.utils.types import Riddle, RiddleData, RiddleSolution, RiddleDataType, RiddleStatus, AgentMessage from ums.utils import Riddle, RiddleData, RiddleSolution, RiddleDataType, AgentMessage
class SimpleSolveAgent(SolveAgent): class SimpleSolveAgent(SolveAgent):

View File

@ -12,7 +12,7 @@ import re
from typing import Callable from typing import Callable
from ums.agent import GatekeeperAgent from ums.agent import GatekeeperAgent
from ums.utils.types import Riddle, RiddleSolution, AgentMessage from ums.utils import Riddle, RiddleSolution, AgentMessage
class SimpleSolveAgent(GatekeeperAgent): class SimpleSolveAgent(GatekeeperAgent):