Mehr-Agenten-Orchestrierungsmuster und bewährte Methoden

Generative Orchestrierung unterstützt auch Mehri-Agenten-Systeme, bei denen ein Agent andere Agenten aufruft. Durch die Zerlegung von Problemen in mehrere spezialisierte Agenten wird Ihre Anwendung modularer, skalierbarer und einfacher zu verwalten.

Inline-Agenten

lInline-Agenten, auch als untergeordnete Agenten bekannt, sind kleine, wiederverwendbare Workflows innerhalb desselben Agenten. Oft sind es einfach nur Themen, die der Hauptagent als Subroutinen verwendet. Beispielsweise kann der Hauptagent das Thema Text übersetzen als ein Schritt in einem größeren Plan aufrufen. Inline-Agenten teilen den Kontext mit dem Hauptagenten, sodass der Datenaustausch zwischen ihnen einfach ist.

Bewährte Methode: Inline-Agenten sollten sich auf eine bestimmte Aufgabe konzentrieren und sorgfältig getestet werden.

Verbundene Agents

Verbundene Agenten sind separate Agenten mit eigener Orchestrierung, eigenen Werkzeugen und eigenem Wissen. Der Hauptagent delegiert einen Teil einer Anfrage an einen untergeordneten Agent. Zum Beispiel kontaktiert ein IT-Agent einen Vertriebs-Agenten, um Preisinformationen zu erhalten. Verbundene Agenten ermöglichen Modularität und die Trennung von Domänen und können Planbeschränkungen umgehen. Sie könnten unterschiedliche Berechtigungen oder Wissensstände haben, daher sollten Governance- und Auditkontrollen angewendet werden.

Allerdings erfordert der Einsatz verbundener Agenten sorgfältige Governance.

  • Orchestrierung: Der übergeordnete Orchestrator sollte klare Kriterien haben, wann er an einen verbundenen Agenten übergeben wird. Der Orchestrator übergibt in der Regel, wenn die Absicht des Benutzers mit dem Zuständigkeitsbereich des verbundenen Agents übereinstimmt. Um diesen Prozess zu unterstützen, beschreiben Sie den Zweck des verbundenen Agents eindeutig in der Konfiguration des übergeordneten Elements. Behandeln Sie den gesamten verbundenen Agent als agentisches „Tool“ mit einer Beschreibung aus der Perspektive des übergeordneten Agents.

  • Datenübergabe: Sie müssen die Datenübergabe verwalten. Entscheiden Sie, welchen Kontext vom übergeordneten Element an den verbundenen Agenten weitergegeben werden soll. Copilot Studio überträgt standardmäßig die Gesprächshistorie, wenn ein Agent einen anderen aufruft, sodass der verbundene Agent den bisherigen Gesprächskontext versteht. Es kann auch erforderlich sein, bestimmte Parameter weiterzugeben. Zum Beispiel, wenn der Hauptagent den Namen des Benutzers bereits kennt, kann er diesen an den verbundenen Agenten weiterleiten, um eine erneute Nachfrage zu vermeiden.

  • Sicherheit: Der verbundene Agent könnte Zugriff auf Dinge haben, die der übergeordnete Agent nicht hat. Stellen Sie sicher, dass das Aufrufen des verbundenen Agents nicht versehentlich Einschränkungen umgeht. Zum Beispiel, wenn der übergeordnete Agent keine Datensätze löschen darf, der verbundene Agent es aber kann, sollte der übergeordnete Agent den verbundenen Agenten in Szenarien nicht anrufen, in denen eine Löschung ohne ordnungsgemäße Genehmigung erfolgen könnte. Behandlen Sie den Aufruf eines verbundenen Agents wie jede andere risikoreiche oder privilegierte Aktion. Stellen Sie sicher, dass bei sensiblen Aktionen die notwendigen Prüfungen durchgeführt oder die Zustimmung des Benutzers eingeholt wird.

  • Überwachung und Monitoring: Erfassen Sie, wann ein verbundener Agent aufgerufen wurde und welche Aktionen er ausgeführt hat. Da es sich um einen separaten Agenten handelt, stehen Ihnen separate Transkripte dafür zur Verfügung. Beim Debuggen ist es wichtig, die übergeordneten und verbundenen Sitzungen zu korrelieren. Im Regelfall verknüpfen Identifikatoren in der Telemetrie die beiden miteinander.

Zeitpunkt für die Trennung von Agenten

Erstelle nicht für jede Teiltaufgabe einen separaten Agenten. Verwenden Sie separate Agenten, wenn die Teilaufgabe:

  • Komplex genug ist, um über eigene Werkzeuge oder eigenes Wissen zu verfügen (anderes Fachgebiet)
  • Erfordert andere Governance-Regeln oder Zugriffskontrollen als der Hauptagent
  • Kann in vielen verschiedenen Hauptagenten wiederverwendet werden (fungiert damit als Serviceagent)

Wenn keine dieser Bedingungen zutrifft, kann ein einfacher Inline-Agent die Aufgabe effizient erledigen und ist dabei auch unkomplizierter als ein vollwertig verbundener Agent. Getrennte Agenten bringen einen Overhead ins System. Es gibt eine etwas längere Ausführungszeit aufgrund von Kontextwechseln sowie eine erhöhte Komplexität bei der Verwaltung und Wartung mehrerer Agenten. Nutzen Sie sie also mit Bedacht. Für einen pragmatischen Ansatz beginnen Sie zunächst mit nur einem Agenten. Teilen Sie erst dann in mehrere Agenten auf, wenn Sie einen klaren Bedarf an Modularität erkennen oder eine Grenze sehen, die ein einzelner Agent nicht überschreiten sollte.

Best Practices für Mehrfach-Agenten-Orchestrierung

Die folgenden Best Practices gelten bei der Erstellung von Anweisungen für über- und untergeordnete Agenten in einem Mehrfach-Agent-Setup.

1. Einzelantwort-Prinzip

Stellen Sie sicher, dass pro Interaktion nur ein Agent mit dem Nutzer spricht. Bei einem Multi-Agent-Setup sollte nur der übergeordnete Agent die finale Antwort liefern. Unteragenten Forscher, keine Antwortende.

  • Empfehlung: Fügen Sie zu den Anweisungen des übergeordneten Elements hinzu: Du bist der einzige Agent, der mit dem Nutzer kommuniziert. Kombiniere Ergebnisse von allen untergeordneten Agents in einer einzigen Antwort.“
  • Nicht melden: Lassen Sie es mehrdeutig. Ohne klare Anweisungen antworten untergeordnete Agenten direkt an den Nutzer und verursachen dadurch doppelte oder unvollständige Nachrichten.

2. Unteragent-Anweisungen müssen ihre Rolle deklarieren

Weisen Sie Unteragentenen immer darauf hin, dass sie untergeordnete Agenten sind. Untergeordnete Agenten wissen nicht inhärent, dass sie Teil einer Orchestrierung sind. Ohne explizite Anweisung verhalten sie sich wie eigenständige Agenten und senden Nachrichten direkt an den Benutzer.

  • Anweisung: Fügen Sie zu den Anweisungen jedes untergeordneten Agenten hinzu: „Sie sind ein untergeordneter Agent.“ Sie dürfen dem Benutzer NICHT direkt antworten. Ihre Aufgabe ist es, Informationen zu suchen und die Ergebnisse an den übergeordneten Agent zurückzugeben. Das übergeordnete Element übernimmt die gesamte Kommunikation mit dem Benutzer.
  • -Vermeiden: Gehen Sie davon aus, dass der untergeordnete Agent das Orchestrierungsmuster selbst herausfinden.

3. Verwenden Sie klare, direkte Sprache in den Anweisungen

Verwenden Sie immer direktive Sprache. Vermeiden Sie sanfte oder höfliche Formulierungen. Die Plattform fügt systemseitige Anweisungen ein, indem sie starke Sprache verwendet (MUSS, NICHT, NIE). Anweisungen, die mit weicher Sprache formuliert sind (bitte versuchen Sie, Sie sollten, es wäre gut, wenn) verlieren an Priorität, wenn sie im Widerspruch stehen.

  • Empfohlen: Antworten Sie NIE dem Benutzer direkt. Geben Sie NUR Ihre Ergebnisse zurück.
  • Empfohlen: Es muss genau eine endgültige Antwort pro Nutzerfrage geben.
  • Vermeiden: Bitte vermeiden Sie es, Nachrichten an den Nutzer zu senden, und geben Sie stattdessen Ihre Ergebnisse zurück.
  • Vermeiden: Idealerweise wollen wir eine einzige kombinierte Antwort.

4. Verwenden Sie pro untergeordnetem Agent eine Wissensquelle (keine Überschneidung)

Weisen Sie jedem untergeordneten Agent unterschiedliche, nicht überlappende Wissensquellen zu. Wenn zwei untergeordnete Agenten die gleiche Wissensquelle durchsuchen, findet einer von ihnen die Antwort zuerst. Der zweite untergeordnete Agent liefert entweder doppelte Ergebnisse oder überspringt seine Suche vollständig, wodurch kein Mehrwert entsteht.

  • Empfohlen: CA-1 sucht in Wissensquelle A (zum Beispiel HR-Richtlinien). CA-2 durchsucht Wissensquelle B (zum Beispiel IT-Dokumentation).
  • Vermeiden: Geben Sie beiden untergeordneten Agenten Zugriff auf dieselben Dokumente, Dataverse-Tabellen oder SharePoint-Seiten.
  • Hinweis: Wenn Sie nur eine Wissensquelle haben, verwenden Sie einen einzelnen Agenten mit Wissensquelle, anstatt ihn in zwei Unteragenten aufzuteilen. Mehrfach-Agent bietet nur dann einen Mehrwert, wenn die Quellen wirklich unterschiedlich sind.

5. Verwenden Sie genaue und eindeutige Beschreibungen für untergeordnete Agenten

Schreiben Sie klare, unterschiedliche Beschreibungen für jeden Unteragent, der für den übergeordneten Agent sichtbar ist. Der übergeordnete Agent verwendet Beschreibungen von untergeordneten Agenten, um das Routing zu bestimmen. Wenn die Beschreibungen vage, identisch oder ungenau sind, kann das übergeordnete Element keine guten Routing-Entscheidungen treffen.

  • Empfohlen: CA-1: Durchsucht HR-Richtliniendokumente nach mitarbeiterbezogenen Fragen. CA-2: "Durchsucht IT-Wissensdatenbank nach Fragen zum technischen Support.
  • Vermeident: Geben Sie beiden Agenten die gleiche Beschreibung, wenn sie unterschiedliche Domänen bedienen.
  • Vermeiden: Verwenden Sie generische Beschreibungen wie „Dieser Agent kann bei Fragen helfen.“

6. Befehle übergeordneter Elemente müssen das Orchestrierungsmuster definieren

Sagen Sie dem übergeordneten Agent, wie er orchestrieren soll. Sagen Sie nicht nur „Verwende untergeordnete Agents“. Der übergeordnete Agent benötigt explizite Anweisungen für das Muster: Agents aufrufen, auf Ergebnisse warten, kombinieren und dann antworten.

  • Empfohlen: Wenn der Nutzer eine Frage stellt: 1. Rufen Sie beide untergeordnete Agents auf, um Informationen zu sammeln. 2. Warten, bis beide untergeordneten Agenten ihre Ergebnisse zurückgeben. 3. Kombinieren Sie die Ergebnisse zu einer einzigen, einheitlichen Antwort. 4. Liefern Sie dem Nutzer exakt eine Antwort. Untergeordnete Agenten dürfen dem Benutzer nicht direkt antworten.
  • Sagen Sie nicht: „Wenn der Benutzer eine Frage stellt, rufe untergeordnete Agents auf, rufe die Antwort von beiden Quellen ab, und gib eine einzige kombinierte Antwort.“ (Dies ist zu vage. Die Anweisung teilt Unteragents nicht mit, im schweigend Hintergrund zu bleiben.)

7. Fügen Sie die keine direkte Antwort-Direktive in die Aufgabendelegation ein

Selbst bei klaren Anweisungen für untergeordnete Agenten sorgt eine zusätzliche Verstärkung in der delegierten Aufgabe für mehr Sicherheit.

  • Hinweis: Fügen Sie den Anweisungen für den übergeordneten Agent Folgendes hinzu: „Wenn du an einen untergeordneten Agent delegierst, füge der Aufgabe immer Folgendes hinzu: ‚Gib nur deine Ergebnisse zurück. Antworten Sie nicht auf den Nutzer.
  • Vermeiden: Verlassen Sie sich ausschließlich auf die Anweisungen der untergeordneten Agenten. Der Aufgaben-Kontext gibt den untergeordneten Agenten Signale, die das Muster verstärken.

8. Testen Sie mit fachfremden Abfragen

Testen Sie immer mit Fragen, die außerhalb der Domänen aller untergeordneten Agenten liegen. Diese Tests zeigen, ob Unteragents korrekterweise „keine Informationen gefunden“ zurückgeben, statt möglicherweise falsche Informationen zu liefern, hängen zu bleiben oder verwirrende Nachrichten zu senden.

  • Empfohlen: Führen Sie Tests mit fachfremden Abfragen durch (zum Beispiel nach dem Wetter fragen, wenn die Agenten HR und IT abdecken).
  • Hinweis: Stellen Sie sicher, dass der übergeordnete Agent die Situation „beide Agents haben nichts gefunden“ ordnungsgemäß handhabt.
  • Vermeiden: Ausschließlich mit einfachsten Abfragen testen, die exakt zur Domäne eines untergeordneten Agenten passen.

9. Bevorzugen Sie „Fragen“ gegenüber „Informieren“, wenn eine Rückmeldung erwartet wird

Nutzen Sie Frage- oder Fragestil-Interaktionen, wenn Sie erwarten, dass der Nutzer antwortet. Verwenden Sie den „Inform/Send-Stil“ nur für finale Einweg-Nachrichten. Wenn der Agent den Nutzer mit einer Einweg-Nachricht (informieren) etwas fragt, wird die Antwort des Nutzers als neue Anfrage an den übergeordneten Planner zurückgesendet. In diesem Fall ist es besser, die Unterhaltung mit dem untergeordneten Agenten fortzusetzen.

  • Empfehlung: Schreiben Sie Anweisungen wie: „Wenn Sie eine Klärung benötigen, stellen Sie dem Nutzer eine Frage und warten Sie auf die Antwort.“
  • Vermeiden: Schreiben Sie Anweisungen wie: „Informieren Sie den Nutzer über die Optionen und lassen Sie ihn wählen.“ „Informieren“ signalisiert eine Einweg-Nachricht, während „Fragen“ einen zweiseitigen Austausch signalisiert.

Kurzübersicht-Checkliste

# Überprüfen
1 Die Anweisungen des übergeordneten Elements geben ausdrücklich an: „Nur ich antworte auf den Nutzer“
2 Jede Subagent-Anweisung sagt „Antworten Sie nicht direkt dem Benutzer“
3 Anweisungen verwenden eine starke direktive Sprache (MUSS, NIEMALS, NUR)
4 Jeder untergeordnete Agent hat eine einzigartige, nicht überlappende Wissensquelle
5 Beschreibung des untergeordneten Agents sind präzise, unverwechselbar und spezifisch
6 Übergeordnete Befehle definieren das vollständige Orchestrierungsmuster (aufrufen → warten → kombinieren → antworten)
7 Der übergeordnete Agent übergibt „keine direkte Antwort“ im Kontext einer delegierten Aufgabe
8 Getestet mit Domain-Mismatch-Abfragen
9 Die Unterscheidung zwischen „fragen“ und „informieren“ wird in den Anweisungen des untergeordneten Agents korrekt umgesetzt