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.
In diesem Schritt des Tutorials wird gezeigt, wie Sie eine mehrstufige Unterhaltung mit einem Agenten führen, bei dem der Agent auf dem Dienst Azure OpenAI Chat Completion basiert.
Von Bedeutung
Agent Framework unterstützt viele verschiedene Arten von Agents. In diesem Lernprogramm wird ein Agent basierend auf einem Chatabschlussdienst verwendet, aber alle anderen Agenttypen werden auf die gleiche Weise ausgeführt. Weitere Informationen zu anderen Agenttypen und deren Erstellung finden Sie im Agent Framework-Benutzerhandbuch.
Voraussetzungen
Für die Voraussetzungen und das Erstellen des Agents, siehe den Schritt Erstellen und Ausführen eines einfachen Agenten in diesem Tutorial.
Ausführen des Agents mit einem Mehrphasen-Dialog
Agents sind zustandslos und pflegen keinen Zustand intern zwischen Aufrufen. Um ein mehrstufiges Gespräch mit einem Agenten zu führen, müssen Sie ein Objekt erstellen, um den Gesprächszustand zu speichern und dieses Objekt beim Ausführen an den Agenten zu übergeben.
Rufen Sie zum Erstellen des Unterhaltungsstatusobjekts die GetNewThread Methode für die Agentinstanz auf.
AgentThread thread = agent.GetNewThread();
Anschließend können Sie dieses Threadobjekt zusammen mit der Benutzereingabe an die Methoden RunAsync und RunStreamingAsync der Agentinstanz übergeben.
Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate.", thread));
Console.WriteLine(await agent.RunAsync("Now add some emojis to the joke and tell it in the voice of a pirate's parrot.", thread));
Dadurch wird der Konversationsstatus zwischen den Anrufen beibehalten, und der Agent kann auf vorherige Eingabe- und Antwortnachrichten in der Unterhaltung verweisen, wenn er auf neue Eingaben antwortet.
Von Bedeutung
Der Diensttyp, der von dem AIAgent Dienst verwendet wird, bestimmt, wie der Unterhaltungsverlauf gespeichert wird. Wenn Sie beispielsweise einen ChatCompletion-Dienst wie in diesem Beispiel verwenden, wird der Unterhaltungsverlauf im AgentThread-Objekt gespeichert und bei jedem Anruf an den Dienst gesendet. Wenn Sie den Azure AI-Agent-Dienst dagegen verwenden, wird der Unterhaltungsverlauf im Azure AI-Agent-Dienst gespeichert, und bei jedem Anruf wird nur ein Verweis auf die Unterhaltung an den Dienst gesendet.
Einzelner Agent mit mehreren Unterhaltungen
Es ist möglich, mehrere unabhängige Unterhaltungen mit derselben Agentinstanz zu führen, indem mehrere AgentThread Objekte erstellt werden.
Diese Threads können dann verwendet werden, um separate Unterhaltungszustände für jede Unterhaltung zu verwalten.
Die Gespräche sind vollständig unabhängig voneinander, da der Agent keinen internen Zustand verwaltet.
AgentThread thread1 = agent.GetNewThread();
AgentThread thread2 = agent.GetNewThread();
Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate.", thread1));
Console.WriteLine(await agent.RunAsync("Tell me a joke about a robot.", thread2));
Console.WriteLine(await agent.RunAsync("Now add some emojis to the joke and tell it in the voice of a pirate's parrot.", thread1));
Console.WriteLine(await agent.RunAsync("Now add some emojis to the joke and tell it in the voice of a robot.", thread2));
Ausführen des Agents mit einem Mehrphasen-Dialog
Agents sind zustandslos und pflegen keinen Zustand intern zwischen Aufrufen. Um ein mehrstufiges Gespräch mit einem Agenten zu führen, müssen Sie ein Objekt erstellen, um den Gesprächszustand zu speichern und dieses Objekt beim Ausführen an den Agenten zu übergeben.
Rufen Sie zum Erstellen des Unterhaltungsstatusobjekts die get_new_thread() Methode für die Agentinstanz auf.
thread = agent.get_new_thread()
Anschließend können Sie dieses Threadobjekt zusammen mit der Benutzereingabe an die Methoden run und run_stream der Agentinstanz übergeben.
async def main():
result1 = await agent.run("Tell me a joke about a pirate.", thread=thread)
print(result1.text)
result2 = await agent.run("Now add some emojis to the joke and tell it in the voice of a pirate's parrot.", thread=thread)
print(result2.text)
asyncio.run(main())
Dadurch wird der Konversationsstatus zwischen den Anrufen beibehalten, und der Agent kann auf vorherige Eingabe- und Antwortnachrichten in der Unterhaltung verweisen, wenn er auf neue Eingaben antwortet.
Von Bedeutung
Der Diensttyp, der vom Agenten verwendet wird, bestimmt, wie die Gesprächsverläufe gespeichert werden. Wenn Sie beispielsweise einen Chatabschlussdienst wie in diesem Beispiel verwenden, wird der Unterhaltungsverlauf im AgentThread-Objekt gespeichert und bei jedem Anruf an den Dienst gesendet. Wenn Sie den Azure AI-Agent-Dienst dagegen verwenden, wird der Unterhaltungsverlauf im Azure AI-Agent-Dienst gespeichert, und bei jedem Anruf wird nur ein Verweis auf die Unterhaltung an den Dienst gesendet.
Einzelner Agent mit mehreren Unterhaltungen
Es ist möglich, mehrere unabhängige Unterhaltungen mit derselben Agentinstanz zu führen, indem mehrere AgentThread Objekte erstellt werden.
Diese Threads können dann verwendet werden, um separate Unterhaltungszustände für jede Unterhaltung zu verwalten.
Die Gespräche sind vollständig unabhängig voneinander, da der Agent keinen internen Zustand verwaltet.
async def main():
thread1 = agent.get_new_thread()
thread2 = agent.get_new_thread()
result1 = await agent.run("Tell me a joke about a pirate.", thread=thread1)
print(result1.text)
result2 = await agent.run("Tell me a joke about a robot.", thread=thread2)
print(result2.text)
result3 = await agent.run("Now add some emojis to the joke and tell it in the voice of a pirate's parrot.", thread=thread1)
print(result3.text)
result4 = await agent.run("Now add some emojis to the joke and tell it in the voice of a robot.", thread=thread2)
print(result4.text)
asyncio.run(main())