Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Deze zelfstudiestap laat zien hoe u een gesprek met meerdere paden kunt voeren met een agent, waar de agent is gebouwd op de Azure OpenAI Chat Completion-service.
Belangrijk
Agent Framework ondersteunt veel verschillende typen agents. In deze zelfstudie wordt een agent gebruikt op basis van een Chat Completion-dienst, maar alle andere agenttypen worden op dezelfde manier uitgevoerd. Zie de gebruikershandleiding voor Agent Framework voor meer informatie over andere agenttypen en hoe u deze samenwerkt.
Vereiste voorwaarden
Zie de stap Een eenvoudige agent maken en uitvoeren in deze zelfstudie voor vereisten en het maken van de agent.
Het uitvoeren van de agent met een multi-turn gesprek
Agents zijn staatloos en onderhouden geen status intern tussen aanroepen. Om een gesprek met een agent met meerdere beurten te voeren, moet u een object maken om de gespreksstatus vast te houden en dit object aan de agent door te geven wanneer deze wordt uitgevoerd.
Als u het gespreksstatusobject wilt maken, roept u de GetNewThread methode aan op het agentexemplaar.
AgentThread thread = agent.GetNewThread();
U kunt dit threadobject vervolgens doorgeven aan de RunAsync en RunStreamingAsync methoden op het agentexemplaren, samen met de gebruikersinvoer.
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));
Hierdoor blijft de gespreksstatus tussen de oproepen behouden en kan de agent verwijzen naar eerdere invoer- en antwoordberichten in het gesprek wanneer deze op nieuwe invoer reageert.
Belangrijk
Het type service dat door de AIAgent wordt gebruikt, bepaalt hoe de gespreksgeschiedenis wordt opgeslagen. Wanneer u bijvoorbeeld een ChatCompletion-service gebruikt, zoals in dit voorbeeld, wordt de gespreksgeschiedenis opgeslagen in het object AgentThread en verzonden naar de service voor elke oproep. Wanneer u de Azure AI Agent-service aan de andere kant gebruikt, wordt de gespreksgeschiedenis opgeslagen in de Azure AI Agent-service en wordt alleen een verwijzing naar het gesprek verzonden naar de service bij elke oproep.
Eén agent met meerdere gesprekken
Het is mogelijk om meerdere, onafhankelijke gesprekken met hetzelfde agentexemplaren te voeren door meerdere AgentThread objecten te maken.
Deze threads kunnen vervolgens worden gebruikt voor het onderhouden van afzonderlijke gespreksstatussen voor elk gesprek.
De gesprekken zijn volledig onafhankelijk van elkaar, omdat de agent geen status intern onderhoudt.
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));
Het uitvoeren van de agent met een multi-turn gesprek
Agents zijn staatloos en onderhouden geen status intern tussen aanroepen. Om een gesprek met een agent met meerdere beurten te voeren, moet u een object maken om de gespreksstatus vast te houden en dit object aan de agent door te geven wanneer deze wordt uitgevoerd.
Als u het gespreksstatusobject wilt maken, roept u de get_new_thread() methode aan op het agentexemplaar.
thread = agent.get_new_thread()
U kunt dit threadobject vervolgens doorgeven aan de run en run_stream methoden op het agentexemplaren, samen met de gebruikersinvoer.
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())
Hierdoor blijft de gespreksstatus tussen de oproepen behouden en kan de agent verwijzen naar eerdere invoer- en antwoordberichten in het gesprek wanneer deze op nieuwe invoer reageert.
Belangrijk
Het type service dat door de agent wordt gebruikt, bepaalt hoe de gespreksgeschiedenis wordt opgeslagen. Wanneer u bijvoorbeeld een chatvoltooiingsservice gebruikt, zoals in dit voorbeeld, wordt de gespreksgeschiedenis opgeslagen in het object AgentThread en verzonden naar de service bij elke oproep. Wanneer u de Azure AI Agent-service aan de andere kant gebruikt, wordt de gespreksgeschiedenis opgeslagen in de Azure AI Agent-service en wordt alleen een verwijzing naar het gesprek verzonden naar de service bij elke oproep.
Eén agent met meerdere gesprekken
Het is mogelijk om meerdere, onafhankelijke gesprekken met hetzelfde agentexemplaren te voeren door meerdere AgentThread objecten te maken.
Deze threads kunnen vervolgens worden gebruikt voor het onderhouden van afzonderlijke gespreksstatussen voor elk gesprek.
De gesprekken zijn volledig onafhankelijk van elkaar, omdat de agent geen status intern onderhoudt.
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())