Bagikan melalui


Percakapan multi-giliran dengan agen

Langkah tutorial ini menunjukkan kepada Anda cara melakukan percakapan multi-giliran dengan agen yang dibangun di atas layanan Chat Completion Azure OpenAI.

Penting

Agent Framework mendukung berbagai jenis agen. Tutorial ini menggunakan agen berdasarkan layanan Penyelesaian Obrolan, tetapi semua jenis agen lainnya dijalankan dengan cara yang sama. Untuk informasi selengkapnya tentang jenis agen lain dan cara membangunnya, lihat panduan pengguna Agent Framework.

Prasyarat

Untuk prasyarat dan pembuatan agen, lihat langkah Membuat dan menjalankan agen sederhana dalam tutorial ini.

Menjalankan agen dengan percakapan multi-giliran

Agen tidak memiliki status dan tidak mempertahankan status apa pun secara internal antara panggilan. Untuk melakukan percakapan multi-giliran dengan agen, Anda perlu membuat objek yang menyimpan status percakapan dan memberikan objek ini ke agen saat menjalankannya.

Untuk membuat objek status percakapan, panggil GetNewSessionAsync metode pada instans agen.

AgentSession session = await agent.GetNewSessionAsync();

Anda kemudian dapat meneruskan objek sesi ini ke metode RunAsync dan RunStreamingAsync pada instans agen, bersama dengan masukan pengguna.

Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate.", session));
Console.WriteLine(await agent.RunAsync("Now add some emojis to the joke and tell it in the voice of a pirate's parrot.", session));

Ini akan mempertahankan status percakapan antara panggilan, dan agen akan dapat merujuk ke pesan input dan respons sebelumnya dalam percakapan saat menanggapi input baru.

Penting

Jenis layanan yang digunakan oleh AIAgent akan menentukan bagaimana riwayat obrolan disimpan. Misalnya, saat menggunakan layanan ChatCompletion, seperti dalam contoh ini, riwayat obrolan disimpan di objek AgentSession dan dikirim ke layanan pada setiap panggilan. Saat menggunakan layanan Agen Azure AI di sisi lain, riwayat obrolan disimpan di layanan Agen Azure AI dan hanya referensi ke riwayat obrolan yang dikirim ke layanan pada setiap panggilan.

Agen tunggal dengan beberapa percakapan

Dimungkinkan untuk memiliki beberapa percakapan independen dengan instans agen yang sama, dengan membuat beberapa AgentSession objek. Sesi ini kemudian dapat digunakan untuk mempertahankan status percakapan terpisah untuk setiap percakapan. Percakapan akan sepenuhnya independen satu sama lain, karena agen tidak mempertahankan status apa pun secara internal.

AgentSession session1 = await agent.GetNewSessionAsync();
AgentSession session2 = await agent.GetNewSessionAsync();
Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate.", session1));
Console.WriteLine(await agent.RunAsync("Tell me a joke about a robot.", session2));
Console.WriteLine(await agent.RunAsync("Now add some emojis to the joke and tell it in the voice of a pirate's parrot.", session1));
Console.WriteLine(await agent.RunAsync("Now add some emojis to the joke and tell it in the voice of a robot.", session2));

Menjalankan agen dengan percakapan multi-giliran

Agen tidak memiliki status dan tidak mempertahankan status apa pun secara internal antara panggilan. Untuk melakukan percakapan multi-giliran dengan agen, Anda perlu membuat objek yang menyimpan status percakapan dan memberikan objek ini ke agen saat menjalankannya.

Untuk membuat objek status percakapan, panggil get_new_thread() metode pada instans agen.

thread = agent.get_new_thread()

Anda kemudian dapat meneruskan objek utas ini ke metode run dan run_stream pada instance agen, bersama dengan input pengguna.

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())

Ini akan mempertahankan status percakapan antara panggilan, dan agen akan dapat merujuk ke pesan input dan respons sebelumnya dalam percakapan saat menanggapi input baru.

Penting

Jenis layanan yang digunakan oleh agen akan menentukan bagaimana riwayat percakapan disimpan. Misalnya, saat menggunakan layanan Penyelesaian Obrolan, seperti dalam contoh ini, riwayat percakapan disimpan di objek AgentThread dan dikirim ke layanan pada setiap panggilan. Saat menggunakan layanan Agen Azure AI, riwayat percakapan disimpan di layanan tersebut dan hanya referensi percakapan yang dikirim ke layanan pada setiap panggilan.

Agen tunggal dengan beberapa percakapan

Dimungkinkan untuk memiliki beberapa percakapan independen dengan instans agen yang sama, dengan membuat beberapa AgentThread objek. Utas ini kemudian dapat digunakan untuk mempertahankan status percakapan yang terpisah untuk setiap sesi percakapan. Percakapan akan sepenuhnya independen satu sama lain, karena agen tidak mempertahankan status apa pun secara internal.

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())

Langkah selanjutnya