Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ez az oktatási lépés bemutatja, hogyan lehet többfordulós beszélgetést folytatni egy ügynökkel, ahol az ügynök az Azure OpenAI Chat Completion szolgáltatásra épül.
Fontos
Az Agent Framework számos különböző típusú ügynököt támogat. Ez az oktatóanyag egy Csevegés befejezése szolgáltatáson alapuló ügynököt használ, de minden más ügynöktípus ugyanúgy fut. A többi ügynöktípusról és azok felépítéséről az Agent Framework felhasználói útmutatójában talál további információt.
Előfeltételek
Az előfeltételekről és az ügynök létrehozásáról részletekkel a Hozzon létre és futtasson egy egyszerű ügynököt lépésben talál ebben az oktatóanyagban.
Az ügynök futtatása többfordulós beszélgetéssel
Az ügynökök állapotmentesek, és nem tárolnak belső állapotot a hívások között. Ha többfordulós beszélgetést szeretne folytatni egy ügynökkel, létre kell hoznia egy objektumot, amely megtartja a beszélgetés állapotát, és a futtatáskor átadja ezt az objektumot az ügynöknek.
A beszélgetésállapot-objektum létrehozásához hívja meg a metódust GetNewThread az ügynökpéldányon.
AgentThread thread = agent.GetNewThread();
Ezután átadhatja ezt a szálobjektumot az ügynökpéldány RunAsync és RunStreamingAsync metódusainak a felhasználói bemenettel együtt.
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));
Ez fenntartja a beszélgetés állapotát a hívások között, és az ügynök az új bemenetekre való válaszadáskor hivatkozni fog a beszélgetés korábbi bemeneti és válaszüzeneteire.
Fontos
A használt szolgáltatás típusa határozza meg a AIAgent beszélgetési előzmények tárolásának módját. Ha például egy ChatCompletion szolgáltatást használ, például ebben a példában, a beszélgetési előzményeket az AgentThread objektum tárolja, és minden híváskor elküldi a szolgáltatásnak. Ha viszont az Azure AI Agent szolgáltatást használja, a rendszer a beszélgetési előzményeket az Azure AI-ügynök szolgáltatásban tárolja, és minden híváskor csak a beszélgetésre mutató hivatkozást küldi el a szolgáltatásnak.
Egyetlen ügynök több konverzációval
Több, egymástól független beszélgetést is kezdeményezhet ugyanazzal az ügynökpéldánysal több AgentThread objektum létrehozásával.
Ezek a szálak ezután külön beszélgetési állapotok fenntartására használhatók az egyes beszélgetésekhez.
A beszélgetések teljesen függetlenek lesznek egymástól, mivel az ügynök nem tart fenn bármilyen belső állapotot.
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));
Az ügynök futtatása többfordulós beszélgetéssel
Az ügynökök állapotmentesek, és nem tárolnak belső állapotot a hívások között. Ha többfordulós beszélgetést szeretne folytatni egy ügynökkel, létre kell hoznia egy objektumot, amely megtartja a beszélgetés állapotát, és a futtatáskor átadja ezt az objektumot az ügynöknek.
A beszélgetésállapot-objektum létrehozásához hívja meg a metódust get_new_thread() az ügynökpéldányon.
thread = agent.get_new_thread()
Ezután átadhatja ezt a szálobjektumot az ügynökpéldány run és run_stream metódusainak a felhasználói bemenettel együtt.
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())
Ez fenntartja a beszélgetés állapotát a hívások között, és az ügynök az új bemenetekre való válaszadáskor hivatkozni fog a beszélgetés korábbi bemeneti és válaszüzeneteire.
Fontos
Az ügynök által használt szolgáltatástípus határozza meg a beszélgetési előzmények tárolási módját. Ha például csevegés-befejező szolgáltatást használ, például ebben a példában, a beszélgetési előzményeket az AgentThread objektum tárolja, és minden híváskor elküldi a szolgáltatásnak. Ha viszont az Azure AI Agent szolgáltatást használja, a rendszer a beszélgetési előzményeket az Azure AI-ügynök szolgáltatásban tárolja, és minden híváskor csak a beszélgetésre mutató hivatkozást küldi el a szolgáltatásnak.
Egyetlen ügynök több konverzációval
Több, egymástól független beszélgetést is kezdeményezhet ugyanazzal az ügynökpéldánysal több AgentThread objektum létrehozásával.
Ezek a szálak ezután külön beszélgetési állapotok fenntartására használhatók az egyes beszélgetésekhez.
A beszélgetések teljesen függetlenek lesznek egymástól, mivel az ügynök nem tart fenn bármilyen belső állapotot.
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())