Was ist ein Software-Agent?

(Dieses Dokument dient als historische Referenz – ich schrieb es 2005 und veröffentlichte es auf meiner jetzt nicht mehr existierenden Website http://agtivity.com/agdef.htm, aber es sollte zumindest noch eine gewisse aktuelle Relevanz haben.)

Für neuere Überlegungen zu diesem Thema lesen Sie diese neueren Arbeiten:

  • Was sind Autonomie und Agency?
  • Intelligente Entitäten: Principals, Agents, and Assistants
  • Was ist ein intelligenter digitaler Assistent?

Ein Software-Agent (oder Autonomer Agent oder Intelligenter Agent) ist ein Computerprogramm, das in einer dynamischen Umgebung (in der Veränderungen die Norm sind) im Auftrag einer anderen Entität (Mensch oder Computer) auf Ziele hinarbeitet (im Gegensatz zu diskreten Aufgaben), möglicherweise über einen längeren Zeitraum hinweg, ohne ständige direkte Überwachung oder Kontrolle, und das ein erhebliches Maß an Flexibilität und sogar Kreativität bei der Umsetzung von Zielen in Handlungsaufgaben zeigt.

Ein Software-Agenten-System (oder Multi-Agenten-System (MAS)) ist eine Rechenumgebung (wie das Web oder ein Grid-Computing-Umgebungs-Overlay-Netz), in der einzelne Software-Agenten miteinander interagieren, manchmal in kooperativer, manchmal in kompetitiver Weise und manchmal autonom, indem sie ihre individuellen Ziele verfolgen, auf Ressourcen und Dienste der Umgebung zugreifen und gelegentlich Ergebnisse für die Entitäten produzieren, die diese Software-Agenten initiiert haben.

Eine einfachere, strukturiertere Definition besagt, dass ein Software-Agent ein Computerprogramm ist, das die Merkmale einer Agentur oder einer Software-Agentur aufweist.

Die andere Entität könnte ein Mensch, ein traditionelles, „altes“ Computerprogramm, ein Roboter oder ein anderer Software-Agent sein. Ein Software-Agent ähnelt einem Roboter, operiert aber im Cyberspace, in einem Computernetz.

Ein Software-Agent ist autonom oder zumindest teilautonom, d. h. er kann Aufgaben bei der Verfolgung eines Ziels mit einem Minimum an direkter Überwachung oder direkter Kontrolle ausführen, kann aber mit einer anderen Entität interagieren, um Anweisungen oder Ergebnisse zu erhalten. Er kann eine Benutzerschnittstelle haben oder auch nicht.

Ein Software-Agent könnte in der Tat interaktiv oder konversationell sein und im Namen einer anderen Einheit handeln, die für den „Benutzer“, der mit dem Agenten interagiert, nicht direkt sichtbar ist.

Ein Software-Agent muss möglicherweise ein hohes Maß an „Intelligenz“ besitzen, um mit einer dynamischen Umgebung umgehen zu können, in der das Unerwartete die Norm ist. Es ist aber auch möglich, einen „dummen“ Software-Agenten zu haben, der autonom arbeitet, um genau definierte Aufgaben zu erfüllen, und nur dann eine Überwachung anfordert, wenn er unerwartete Bedingungen feststellt.

Ein Software-Agent kann „mobil“ sein und sich im Netz bewegen oder bewegt werden, aber ein Software-Agent kann auch „statisch“ sein und seine gesamte Arbeit auf einem Host-Computer im Netz verrichten, einschließlich des Zugriffs auf Ressourcen, die sich auf anderen Hosts als dem befinden, auf dem der Agent ausgeführt wird.

Ein interaktiver oder konversationeller Agent kann in der Tat nur ein „Assistent“ sein, der unter direkter Kontrolle und im Namen desselben Benutzers arbeitet. Dies wäre eine weniger autonome Arbeitsweise, aber der interaktive Agent könnte möglicherweise angewiesen werden, loszugehen und ein Ziel zu erreichen und dabei in einem autonomen Modus zu arbeiten. Die Frage nach der „Agentur“ ist vor allem, inwieweit es KEINE Eins-zu-eins-Beziehung zwischen der Konvertierung zwischen Benutzer und Agent und den tatsächlichen Aufgaben gibt, die der angebliche Agent ausführt. Ein Assistent tut genau das, was man ihm sagt.

Ein Agent kann ein einzelner Agent sein (ein Agent, der eine Reihe von Aufgaben ausführt, um ein Ziel zu erreichen), Teil eines Agenten-Ensembles (ein relativ kleines Team mit Spezialisierung unter den Teammitgliedern) oder ein sehr kleiner Teil einer Agenten-Armada (eine große Anzahl von Agenten mit einem beträchtlichen Maß an Parallelität selbst für bestimmte Aufgaben). Selbst ein einzelner Agent kann mit anderen Agenten interagieren, die für eine andere Einheit verantwortlich sind. Was ein Agenten-Ensemble von einer Agenten-Armada unterscheidet, ist die Tatsache, dass sie für eine einzige Entität verantwortlich sind.

Man kann von einer Agentengemeinschaft oder einer Gemeinschaft von Software-Agenten oder einem Multi-Agenten-System sprechen, in dem viele unabhängige Agenten zumindest scheinbar bei der Verfolgung gemeinsamer Ziele kooperieren (und/oder konkurrieren). Die Gemeinschaft kann auf im Voraus geplante Mitglieder beschränkt sein, oder sie kann offen sein und beliebigen externen Agenten erlauben, der offenen Gemeinschaft von Software-Agenten „beizutreten“.

Ein Software-Agent kann ewig oder unbegrenzt laufen und kontinuierlich seine Ziele verfolgen, aber es ist auch möglich, dass eine Instanz eines Agenten beendet wird, sobald seine Ziele erreicht sind oder nicht mehr benötigt werden.

Eigenschaften, die häufig als geeignet für Software-Agenten genannt werden, sind u.a.: reaktives, abwägendes, zielgerichtetes, adaptives, autonomes, lernendes, kommunikatives, konkurrierendes und kollaboratives Verhalten.

Software-Agenten (und Software-Agenten-Systeme) sollten unter Verwendung einer modularen Architektur entworfen werden.

Software-Agenten sind der nächste Evolutionsschritt nach Objekten und Programmen. Objekte neigen dazu, passiv zu sein, wobei immer nur ein Objekt aktiv ist, und Objekte neigen dazu, in Programmen „versteckt“ zu sein. Programme sind in der Regel relativ statisch, und die Entwicklung einer verteilten Berechnung mit einer unbestimmten Anzahl von zusammenarbeitenden Programmen ist keine leichte Aufgabe. Software-Agenten bieten Möglichkeiten für Parallelität und Zusammenarbeit zwischen Programmen, und zwar in großem Maßstab, und zwar auf einfache Weise und in einer robusten, zuverlässigen, flexiblen und sicheren Art und Weise.

Zur Diskussion von Fragen im Zusammenhang mit der Definition, was ein Agent ist oder nicht ist, klicken Sie hier.

Formen von Software-Agenten

Da es keine feste Definition eines Software-Agenten gibt, sind hier die verschiedenen Formen von Software-Agenten, die ich bisher identifiziert habe:

  • System-Agent – eine kontinuierlich laufende Hintergrundaufgabe oder ein Daemon, der typischerweise einen spezialisierten, vorprogrammierten Zweck hat.
  • Benutzer-Agent – die Client-seitige Benutzerschnittstelle für eine anspruchsvolle Netzwerkanwendung. Zum Beispiel der Webbrowser für den Zugriff auf das World Wide Web.
  • Client Agent – die clientseitige Benutzerschnittstelle für eine serverbasierte Anwendung wie eine Suchmaschine oder die Suche nach Geschäften. Die Serverseite führt in der Regel einfach eine Datenbankabfrage in einer Datenbank durch, die unabhängig von einer Art Web-Crawler verwaltet wird, der Änderungen an Websites überwacht.
  • Web-Crawler – ein serverbasiertes Programm, das das Web oder ausgewählte Teile des Webs kontinuierlich oder periodisch auf der Suche nach interessanten Informationen durchsucht. Dabei handelt es sich nicht wirklich um einen Agenten, da er nicht im Auftrag eines einzelnen Benutzers handelt, sondern Daten sammelt, die für eine breite Benutzergruppe verwendet werden können.
  • Conversational Agent – ein interaktives Programm, das eine sehr benutzerfreundliche Oberfläche präsentiert und dann bestimmte Aufgaben auf Anweisung des Benutzers ausführt. Da es direkt auf Benutzeranfragen reagiert, arbeitet es nicht wirklich autonom.
  • Intelligenter Agent – ein Programm, das eine Aufgabe ausführt oder Ziele mit minimaler spezifischer Anweisung verfolgt und dabei intelligente oder heuristische Techniken einsetzt, so dass der Benutzer sehr beeindruckt ist, dass ein Computer so intelligent sein kann. Ein IA braucht nicht mobil zu sein, da auf das riesige Angebot an Informationen im Internet auch aus der Ferne zugegriffen werden kann.
  • Mobiler Agent – ein autonomes Programm, das zwischen Wirtssystemen wandert, um ein oder mehrere Ziele zu verfolgen. Ein MA muss nicht wirklich intelligent sein, aber genügend Flexibilität besitzen, um mit einer Umgebung zurechtzukommen, in der sich Dinge ändern oder jederzeit unzugänglich sein können.
  • (Geschlossenes) Multi-Agenten-System – eine eng integrierte Anwendungsumgebung, in der Teile der Anwendung auf Miniprogramme aufgeteilt sind, die Teilziele verfolgen.
  • Offenes Multiagentensystem – eine lose integrierte, verteilte Anwendungsumgebung, in der unabhängig voneinander konstruierte Programme (Agenten) an strukturierten Interaktionen teilnehmen können, bei denen die Agenten ein erhebliches Maß an gemeinsamen Interessen haben (Gemeinschaft).
  • Ultimativer Software-Agent – ein extrem intelligentes und flexibles Programm, das ähnlich wie eine reale Person handeln kann, aber auf den Cyberspace beschränkt ist. Darüber hinaus hat ein USA die Fähigkeit, sich dynamisch in Unteragenten aufzuteilen, die Teilaufgaben ausführen und parallel mit einem beliebigen Grad an Interaktion arbeiten können. Ein USA kann sich auch selbst klonen (oder vorzugsweise automatisch von der Agenteninfrastruktur geklont werden), um die inhärente Parallelität des Netzes zu nutzen. Aufgeteilte oder geklonte Sub-Agenten können an jedem beliebigen Punkt neu kombiniert werden, wenn dies für die Funktion oder die Leistung des Gesamtagenten angemessen ist. Ein US-Agent kann auch mit anderen, unabhängigen US-Agenten (einer Gemeinschaft von US-Agenten) interagieren, für die der US-Agent kein vorprogrammiertes Bewusstsein hat. Es kann eine breite Palette von Programmiersprachen, Implementierungstechniken und Kommunikationsprotokollen verwendet werden. Jede USA ist mit jeder anderen USA vollständig interoperabel, sie unterliegt lediglich administrativen Kontrollen und Ressourcenbeschränkungen.
  • Roboter – ein intelligenter Software-Agent, der in der realen Welt mobil ist. Roboter können sich heute nicht selbst klonen, aber theoretisch KÖNNTE ein Roboter physisch Kopien von sich selbst bauen ODER „leere“ Roboter (oder Hüllen) kaufen oder mieten (ähnlich wie ein Autoverleih). Theoretisch könnte ein Roboter sich selbst an einen anderen Ort „transportieren“, indem er einfach eine leere Hülle an einem anderen Ort erwirbt und dann seinen Softwarestand auf diesen anderen „leeren“ Roboter „hochlädt“. Der Roboter kann sich entscheiden, die ursprüngliche Hülle zu verlassen, oder er kann diesen Mechanismus einfach zum Klonen verwenden.
  • Robotergemeinschaft – Roboter, die bei der Verfolgung gemeinsamer Interessen interagieren können.
  • Hybrider Roboter/Agent – ein Roboter, der mit einem oder mehreren Softwareagenten interagieren kann, oder ein Softwareagent, der mit einem oder mehreren Robotern interagieren kann. Richtig interessant wird es, wenn eine Gemeinschaft von Robotern mit einer Gemeinschaft von Softwareagenten interagiert! Beachten Sie auch, dass ein Roboter seinen Software-Status an einen Software-Agenten übertragen und dann im Cyberspace agieren könnte, WENN er ein Software-Agent wäre, und dann seinen Status wieder an den Roboter zurückgeben könnte. Ein Software-Agent könnte das Gegenteil tun: seinen Zustand an einen physischen Roboter übertragen, den Roboter bedienen und dann seinen Zustand wieder in den Cyberspace zurückgeben. Ein Roboter kann so handeln, als wäre er ein Software-Agent mit Fernzugriff. Und ein Software-Agent kann auch einen physischen Roboter direkt aus dem Cyberspace bedienen, ebenfalls über Fernzugriff. Tatsächlich kann ein einziger Software-Agent (oder ein Team von Agenten) mehrere Roboter am selben oder an verschiedenen Orten steuern, einschließlich der Kontrolle der Interaktion dieser Roboter.

Eine noch frühere Sichtweise des Themas findet sich in dem Papier von Stan Franklin und Art Graesser mit dem Titel „Is it an Agent, or just a Program? A Taxonomy for Autonomous Agents“

Siehe auch den Wikipedia-Artikel zu Software-Agenten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.