Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Note
Dieser Artikel beschreibt die Funktionen und das Verhalten des Standard-Harness. Erfahren Sie, wie Sie auf Standardfunktionen in Zugriff auf Standard-Agenten und Agentenflüsse zugreifen.
Im Standard-Harness können mehrere Komponenten die Anfrage eines Nutzers bearbeiten, und jede handelt aus ihrer eigenen Perspektive. Ein Thema kann eine Nachricht oder eine adaptive Karte anzeigen, ein Tool kann Daten zurückgeben, und ein Kind oder ein verbundener Agent kann aus seinem eigenen Kontext antworten. Die Orchestrierungsschicht setzt den Plan aus einem Kontext fort, der möglicherweise nicht mit der Reaktion übereinstimmt, die der Nutzer erhält. Wenn diese Blickwinkel auseinanderdriften, kann der Nutzer eine wiederholte Nachricht oder eine verpasste Antwort sehen. Hersteller erleben dieses Verhalten bei neueren Modellen häufiger als bei älteren.
Verstehen Sie, warum Duplikate auftreten, bevor Sie eine Lösung entwerfen. Erfahren Sie mehr über die Kontextverteilung im Standard-Harness.
Note
Wiederholte Nachrichten und doppelte Nachrichten sind in der Regel Designprobleme im Zusammenhang mit der Kontextverwaltung, nicht Bugs. Sie treten auf, wenn der Nutzer eine Antwort sieht, aber die Komponente, die den Plan fortsetzt, andere Informationen darüber enthält, was bereits beantwortet wurde.
Um diese Anwendungsfälle zu verstehen, betrachtet man zwei Flächen getrennt: die benutzersichtbare Ausgabe (was der Nutzer im Chat sieht) und den aktiven Kontext (die Informationen, die eine Komponente zur Verfügung hat, wenn sie entscheidet, was als Nächstes zu tun ist). Die Macher sehen den aktiven Kontext nicht direkt. Daher ist es wichtig, die Perspektive jeder Komponente zu verstehen und Eingaben und Ausgaben zu nutzen, um diese Perspektiven aufeinander abzustimmen.
Um ein Symptom in einem Live-Agent zu debuggen, beginnen Sie mit "Fehlerbehebung von doppelten Nachrichten und verpassten Antworten " und kehren Sie dann zu diesem Artikel zurück, um eine Redesign-Anleitung zu erhalten.
Entwurf mit Kontext im Hinterkopf
Wenn eine Anfrage in einem einzelnen Schritt bearbeitet wird, auf den Alle Themen beenden folgt, spielt das Kontextmanagement keine Rolle. Wenn eine Anfrage jedoch mehrere Komponenten verketten muss oder wenn der Benutzer mehr als eine Anfrage in derselben Sitzung stellt, ist das Kontextmanagement wichtig. Die meisten realen Anwendungsfälle durchlaufen mehrere Komponenten pro Sitzung, also entwickle sie entsprechend.
- Eine Komponente, dann alle Themen beenden. Ein einzelnes Thema, Tool, Child Agent oder verbundener Agent bearbeitet die Anfrage und die Sitzung endet. Wenn diese Komponente die vollständige Antwort schreibt und diese Fertigstellung meldet, hat die Orchestrierungsschicht keinen Grund, eine weitere Antwort zu schreiben.
- Mehrere Komponenten in der Sitzung. Eine Sitzung kann mehrere Komponenten ausführen, bevor sie dem Benutzer eine vollständige Antwort liefert. Eine Sitzung kann auch mehrere Anfragen umfassen. Eine Komponente kann einen Teil der Anfrage beantworten, während eine andere den Rest beantworten muss. Jede Komponente, die funktioniert, muss angeben, was sie getan hat. Andernfalls könnte eine spätere Komponente auf den Kontext reagieren, der offenbar unbeantwortet bleibt, und erneut reagieren.
| Wo der Kontext zählt | Example | Sounddesign |
|---|---|---|
| Kein Kontext verwendet | Ein Thema zeigt die vollständige Antwort in einer Nachricht oder einer adaptiven Karte. | Der Knoten Alle Themen beenden verhindert, dass die Orchestrierungsschicht nochmals antwortet. |
| Die Orchestrierungsschicht nutzt Kontext | Ein Thema zeigt eine Tabelle für Teil A, dann beantwortet die Orchestrierungsschicht Teil B mithilfe von Knowledge oder einem anderen Agenten. | Jede Komponente meldet, was sie beantwortet hat, und gibt alle Werte zurück, die spätere Schritte benötigen, sodass die Orchestrierungsschicht nicht zweimal antwortet. |
| Die Komponente verwendet Kontext | Ein Thema beantwortet dem Benutzer zunächst Teil A, dann übernimmt ein anderer Agent Teil B. Wenn der Agent einen übergeordneten Kontext erhält, in dem A unbeantwortet wirkt, beantwortet er A erneut. | Vermeiden Sie den übergeordneten Kontext des verbundenen Agenten, wo möglich, und Komponenten liefern Ausgaben zurück, die bestätigen, was beantwortet wurde und was verbleibt. |
Designkomponenten, um zu berichten, was passiert ist
Eine Komponente sendet eine wiederholte Nachricht oder doppelte Nachrichten, wenn die Orchestrierungsschicht keine Arbeit erkennen kann, die eine frühere Komponente abgeschlossen hat. Verwenden Sie jedes Mal denselben Designansatz, um doppelte Nachrichten zu vermeiden – geben Sie jeder Komponente die Anweisung, ihre Aktionen an die Orchestrierungsschicht zu melden. Für jeden Teil der Anfrage werden genau eine Komponente zugewiesen, die die Antwort schreibt, die der Benutzer erhält. Jede andere Komponente erledigt ihre Arbeit und gibt Kontext zurück, ohne dem Benutzer zu schreiben.
Nutzen Sie diese Praktiken gemeinsam als einen einheitlichen Designansatz:
- Rückgabewerte, die erfassen, was passiert ist. Allein die Ausgänge reichen für ältere Modelle meist aus.
- Füge der Themen- oder Subagentenbeschreibung eine Instruktion hinzu , die definiert, was ein erfolgreicher Durchlauf bedeutet. Dieser Ansatz macht das Design robust.
- Füge eine oberste Anweisung hinzu, damit die Orchestrierungsschicht diese Ausgaben überprüft, bevor sie antwortet. Neuere Modelle profitieren am meisten von diesem Ansatz.
Nur Komponenten, die benutzerdefinierte Ausgaben unterstützen, können Ausgaben zurückgeben und Beschreibungsanweisungen enthalten. Für Komponenten, die keine benutzerdefinierten Ausgaben unterstützen, verhindern Sie doppelte Nachrichten, indem Sie den erhaltenen Kontext einschränken und eine oberste Anweisung hinzufügen.
| Bestandteil | Berichte zurück mit | Beheben |
|---|---|---|
| Thema |
answered (Wahr/Falsch), choiceReceived (Wahr/Falsch), und die Ausgabe eines angezeigten Werts oder eine Zusammenfassungsausgabe (Text) |
Gib die Ausgaben zurück und füge der Beschreibung des Themas eine Anweisung hinzu. Entwerfen Sie Themen als Mini-Agenten, die doppelte Nachrichten vermeiden enthält Beispielbeschreibungen für Themen. |
| Subagent (Kind oder verbundener Agent) |
answered (Wahr/Falsch), interactionSummary (Text), openQuestions (Text) |
Gib die Ausgabewerte zurück, füge eine Eingabe zur Bereichsdefinition hinzu und füge der Beschreibung des Subagenten eine Anweisung hinzu. Design Subagents, die doppelte Nachrichten vermeiden, liefert beispielhafte Subagentenbeschreibungen. |
| Wissen (ein Aufruf zum Wissen) | Ich kann den Kontext nicht anpassen, kann eine Antwort wiederholen. | Behalte einen sauberen Kontext auf oberster Ebene bei und beeinflusse die Anfragen, die gesendet werden. |
| Generativer Antwortknoten | Man kann den Kontext nicht anpassen, kann eine Antwort wiederholen, die Antwort kann später wiederholt werden. | Behalten Sie einen sauberen Top-Level-Kontext bei, beeinflussen Sie die Anforderung, die in die Knoteneingabe geschrieben wird, und lassen Sie das Host-Topic die Ausgabe oder eine Ausgabe im Status „beantwortet“ zurückgeben. |
Entwickle eine robuste oberste Anweisung, um wiederholte Nachrichten zu vermeiden
Die Ausgaben halten die Orchestrierungsschicht auf dem Laufenden. Fügen Sie eine Anweisung auf oberster Ebene hinzu, die neuere Modelle anweist, ihre Antworten zu überprüfen, bevor sie antworten.
Die folgende oberste Agentenanweisung ist ein Beispiel, das für verschiedene Anwendungsfälle entwickelt wurde, unabhängig davon, ob eine Komponente direkt mit dem Benutzer kommuniziert oder nicht. Bearbeite und passe es nach Bedarf an.
Wann immer ein Thema oder Agent angerufen wird, suche immer nach dem 'beantworteten' booleschen Output, bevor du entscheidest, was du antwortest. Themen und Agenten haben ihren eigenen Kommunikationskanal mit dem Nutzer. Wenn 'beantwortet' wahr ist, gehen Sie immer davon aus, dass die Anfrage angemessen mit mindestens einer der Ausgabevariablen beantwortet wurde, und prüfen Sie anhand der Ausgabebeschreibung, welche. Gib keine unbeholfene Anerkennung des beantworteten Inhalts. Gib nur die unbeantworteten Ausgaben an und führe das Gespräch beim nächsten Schritt natürlich fort.
Der Begriff Kanal bezieht sich nicht auf einen Integrationskanal wie Teams oder eine Website. Es ist ein Prompting-Gerät, das der Orchestrierungsschicht mitteilt, dass der Nutzer die Antwort möglicherweise bereits gesehen oder eine Auswahl über eine andere Komponente wie ein Thema, eine Karte oder einen Subagent getroffen hat. Diese Formulierung veranlasst das Modell am effektivsten, seine Antwort vor der Antwort zu überprüfen.
Themen behandeln
Ein Thema kommuniziert oft direkt mit dem Nutzer, indem es eine Nachricht zeigt, eine Frage stellt oder eine adaptive Karte präsentiert. Der Orchestrierungskontext empfängt den Text des Themas als Klartext, registriert aber nicht, ob der Nutzer ihn gesehen hat. Der Kontext erhält auch keine adaptiven Kartenaktionen oder -auswahlen. Wenn das Thema dem Nutzer antwortet, diese Aktion aber nicht an die Orchestrierungsschicht meldet, behandelt die Orchestrierungsschicht die Anfrage als ungelöst und beantwortet sie erneut.
Gestalte ein Thema als Mini-Agent. Geben Sie eine Ausgabe mit dem Status „beantwortet“ zurück, damit die Orchestrierungsschicht weiß, dass die Anfrage bearbeitet wurde, und geben Sie jeden Wert zurück, den das Thema anzeigt, oder jede Auswahl, die es erfasst hat und die ein späterer Schritt benötigt. Die Ergebnisse machen die Aktionen und Ergebnisse dem Rest des Plans zugänglich. Füge der Themenbeschreibung eine Anweisung hinzu, die definiert, was ein erfolgreicher Durchlauf bedeutet.
Erfahren Sie mehr unter Design-Themen als Mini-Agenten, die doppelte Nachrichten vermeiden.
Umgang mit Kind- und verbundenen Agenten
Entwickle Kind- und verbundene Agenten, wie du jede andere Komponente entwirfst. Ihr Hin und Her mit dem Nutzer ist für den Elternteil unsichtbar, der erst durch Ausgaben erfährt, was passiert ist, und erst, nachdem der Agent fertig ist.
Kind- und verbundene Agenten können ebenfalls zuvor unbeantwortete Anfragen erhalten, die im Kontext des Elternagenten verbleiben.
Für jeden Agenten wird seine Aufgabe mit einer Eingabe begrenzt, angegeben, ob er auf den Benutzer antwortet oder schweigt, und Ausgaben zurückgegeben, die dem Elternagenten mitteilen, was passiert ist.
Erfahren Sie mehr unter Design Subagents, die doppelte Nachrichten vermeiden.
Wissen verwalten
Wissen ist eine oberste Konstruktion, auf die der Agent zurückgreift. Es erhält auf Grundlage des Agentendesigns eine Anfrage und den Kontext des Agenten. Die meisten wiederholten Nachrichtenprobleme treten auf, wenn der Kontext des Agenten keine Informationen von anderen Komponenten enthält. Entwickeln Sie Wissen, um zu beeinflussen, wie der Agent die Anfrage formuliert. Stelle sicher, dass andere Bauteile ihre Ausgänge korrekt nutzen.
Generative-Antworten-Knoten verarbeiten
Ein generativer Antwortknoten lebt innerhalb eines Themas und antwortet aus Wissen. Es erhält den übergeordneten Kontext sowie alles, was über seine Eingabe übergeben wird, sodass es sich wie Wissen auf oberster Ebene verhält und seine Antwort mit Informationen aus dem aktuellen Kontext ergänzt. Sie kann ihre Antwort direkt in den Chatbereich schreiben oder in einer Themenvariable speichern, aber sie kann von selbst nichts an den übergeordneten Kontext zurückgeben. Wie bei jedem Topic-Inhalt bleibt die Antwort innerhalb des Themas, es sei denn, das Thema gibt eine Ausgabe zurück.
Ein generativer Antwortknoten benötigt keine spezielle Behandlung außer der Regel, die für jedes Thema gilt: Das Ergebnis als Themenausgabe übergeben. Wenn der Knoten dem Benutzer im Thema antwortet, fügen Sie eine Ausgabe für den Status „Beantwortet“ und eine Ausgabe für den angezeigten Wert hinzu. Diese Ausgaben liefern der Orchestrierungsschicht eine Aufzeichnung, dass die Anfrage beantwortet wurde, und verhindern, dass ein später Schritt die Anfrage erneut beantwortet.
Stellen Sie sicher, dass Beschreibungen und Anweisungen mit dem Blickwinkel übereinstimmen
Beschreibungen und Anweisungen sind ebenfalls Teil des Kontextvertrags.
Diese Anweisung führt zum Thema:
When the user asks about their account balance, call the Account balance topic.
Diese Anweisung leitet die Zuständigkeit für Antworten an die Orchestrierungsschicht weiter und weist sie dort zu:
When the user asks about their account balance, call the Account balance topic and give the balance.
Wenn das Thema bereits das Gleichgewicht zeigt, erstellt die zweite Anweisung einen zweiten Antwortpfad. Wenn das Topic balanceValue nicht zurückgibt, könnte die Orchestrierungsschicht das Topic erneut aufrufen oder angeben, dass ihr der Wert nicht bekannt ist.
Verwenden Sie Beschreibungen und Anweisungen, die zur Perspektive passen:
- Eine Themenbeschreibung hilft der Orchestrierungsschicht zu entscheiden, wann und wie das Thema verwendet wird. Es folgt außerdem den Anweisungen, was als Nächstes zu tun oder ausgegeben werden soll.
- Eine Beschreibung des verbundenen Agenten stammt aus der Sicht der Eltern.
- Eine Connected-Agent-Anweisung wird aus der Sicht des verbundenen Agenten gelesen.
- Eine Themen- oder Connected-Agent-Ausgabebeschreibung erklärt der Orchestrierungsschicht, wie der zurückgegebene Wert interpretiert werden soll.
Für ein Thema, das dem Benutzer eine Antwort anzeigt und answered=true setzt, beschreiben Sie sowohl, wann zum Thema weitergeleitet werden soll, als auch, was ein erfolgreicher Ablauf bedeutet:
This topic handles account balance requests.
If its answered output is true, the user has already received their response and it should not be answered again.
Für ein Topic, das nur Ausgaben erzeugt, beschreiben Sie sowohl, wann an das Topic weitergeleitet werden soll, als auch, wie geantwortet werden soll:
This topic handles account balance requests and responds with the balance value in italics.
Stellen Sie den Kontext in langen Gesprächen wieder her
Ein Wert, den eine Komponente hatte, kann den aktiven Kontext auf zwei Arten verlassen. In einer langen Sitzung könnte ein Wert, der vor ein paar Zügen noch verfügbar war, im aktiven Kontext nicht mehr vorhanden sein. Oder eine Komponente holt ein vollständiges Ergebnis, verwendet den entsprechenden Teil zur Antwort und gibt nur diese Antwort zurück, sodass der Rest des Ergebnisses nie die Orchestrierungsschicht erreicht. So oder so könnte der Agent die Daten erneut abrufen oder den Nutzer nach bereits vorhandenen Informationen fragen, was der Nutzer als falsche Antwort empfindet. Die Orchestrierungsschicht verhält sich, als hätte sie den Wert nie erhalten.
Entwerfen Sie dieses Szenario, indem Sie wichtigen Kontext zurückgeben und speichern und ihn bei Bedarf wieder ausliefern:
Geben Sie ein vollständiges Ergebnis zurück, nicht nur den Teil, der zur Beantwortung verwendet wird. Ein abgerufenes Ergebnis hat oft mehr als ein Feld, viele Zeilen und langen Text. Gib alle Daten zurück, die ein späterer Schritt möglicherweise als Ausgabe benötigt, damit die Orchestrierungsschicht sie verfügbar hat, ohne sie erneut abrufen zu müssen.
Speichern und verwenden Sie Werte über mehrere Interaktionen hinweg. An den richtigen Punkten, vor oder nach einem Toolaufruf, routen Sie zu einem Thema, das den Wert über seine Eingaben und Ausgaben sowie eine globale Variable speichern oder bereitstellen kann, sodass der Plan den Wert nicht abruft oder erneut danach fragt.
Tip
Nahtloses agentisches Verhalten basiert auf einem Agentendesign, das den Kontext in jedem Schritt und aus jeder Perspektive berücksichtigt.
Verwandte Informationen
- Kontextverteilung im Standard-Harness
- Gestalten Sie Themen als Mini-Agenten, die doppelte Nachrichten vermeiden
- Entwickle Subagenten, die doppelte Nachrichten vermeiden
- Fehlerbeseitigung von doppelten Nachrichten und verpassten Antworten
- Generative Orchestrierungsfähigkeiten anwenden
- Verwenden von generativen Antworten in einem Thema
- Agent-Verhalten mit generativer KI orchestrieren
- Themeneingaben und -ausgaben verwalten
- Konfigurieren Sie hochwertige Instruktionen für generative Orchestrierung
- Multi-Agent-Orchestrierungsmuster und bewährte Methoden