Kelola status

Status dalam agen mengikuti paradigma yang sama dengan aplikasi web modern. Agents SDK menyediakan beberapa abstraksi untuk mempermudah pengelolaan state.

Seperti halnya aplikasi web, agen secara tanpa status sedari awalnya. Instans yang berbeda dari agen Anda dapat menangani giliran percakapan tertentu. Untuk beberapa agen, kesederhanaan ini lebih disukai—agen dapat beroperasi tanpa informasi tambahan, atau informasi yang diperlukan dijamin berada dalam pesan masuk. Bagi orang lain, status (seperti di tempat mana percakapan ditinggalkan atau data yang sebelumnya diterima tentang pengguna) diperlukan agar agen memiliki percakapan yang berguna.

Mengapa saya memerlukan status?

Mempertahankan status memungkinkan agen Anda melakukan percakapan yang lebih bermakna dengan mengingat hal-hal tertentu tentang pengguna atau percakapan. Sebagai contoh, jika Anda telah berbicara dengan pengguna tersebut sebelumnya, Anda dapat menyimpan informasi tentangnya, sehingga Anda tidak perlu menanyakannya lagi. Status juga menyimpan data lebih lama dari giliran saat ini, sehingga agen Anda terus menyimpan informasi selama percakapan yang terdiri dari beberapa giliran.

Dalam konteks agen, terdapat beberapa lapisan penggunaan state: storage layer, manajemen state, dan AgentApplication.

Lapisan penyimpanan

Pada bagian backend, tempat penyimpanan state sebenarnya dilakukan, terdapat lapisan penyimpanan. Anda dapat menganggap ini sebagai penyimpanan fisik, seperti penyimpanan dalam memori, Azure, atau server pihak ketiga.

Agents SDK menyertakan beberapa implementasi untuk lapisan penyimpanan:

Penyimpanan memori mengimplementasikan penyimpanan dalam memori untuk tujuan pengujian. Penyimpanan data dalam memori ditujukan untuk pengujian lokal saja karena penyimpanan ini bersifat mudah menguap dan sementara. Data tersebut dihapus setiap kali agen dimulai ulang.

Azure Blob Storage terhubung ke database objek Azure Blob Storage.

Penyimpanan terpartisi Azure Cosmos DB terhubung ke database NoSQL Cosmos DB yang terpartisi.

Untuk instruksi tentang cara menghubungkan ke opsi penyimpanan lainnya, lihat Gambaran Umum Penyimpanan SDK Agen

Manajemen status

Manajemen state secara otomatis menangani proses membaca dan menulis state agen Anda ke lapisan penyimpanan yang mendasarinya. Status disimpan sebagai properti status, yang secara efektif merupakan pasangan kunci-nilai yang dapat dibaca dan ditulis oleh agen Anda melalui objek manajemen status tanpa khawatir tentang implementasi khusus yang mendasarinya. Properti status tersebut menentukan bagaimana informasi tersebut disimpan. Misalnya, saat Anda mengambil properti yang Anda tentukan sebagai kelas atau objek tertentu, Anda tahu bagaimana data tersebut akan disusun.

Properti status ini dikelompokkan ke dalam "wadah" yang dibatasi ruang lingkupnya, yang adalah kumpulan untuk membantu mengatur properti tersebut. SDK mencakup tiga "wadah" ini.

  • Status pengguna
  • Status percakapan

Semua wadah ini adalah subkelas kelas status agen, yang dapat diturunkan untuk menentukan jenis wadah lain dengan cakupan yang berbeda.

Wadah yang telah ditentukan sebelumnya ini tercakup dalam visibilitas tertentu, tergantung pada wadah:

  • Status pengguna tersedia di setiap giliran agen bercakap-cakap dengan pengguna tersebut di saluran tersebut, terlepas dari percakapan
  • Status percakapan tersedia di setiap giliran dalam percakapan tertentu, terlepas dari penggunanya, seperti dalam percakapan grup

Status pengguna dan state percakapan dibatasi oleh saluran. Orang yang sama yang menggunakan saluran berbeda untuk mengakses agen Anda akan dianggap sebagai pengguna yang berbeda, satu untuk setiap saluran, dan masing-masing memiliki state pengguna yang unik.

Kunci yang digunakan untuk masing-masing wadah yang telah ditentukan ini bersifat khusus untuk pengguna dan percakapan, atau agen. Saat menetapkan nilai properti status Anda, kunci ditentukan untuk Anda secara internal, dengan informasi yang terkandung dalam konteks giliran untuk memastikan bahwa setiap pengguna atau percakapan dikategorikan dengan benar ke dalam wadah dan properti yang tepat. Secara khusus, kunci didefinisikan sebagai berikut:

  • Status pengguna membuat kunci dengan menggunakan ID saluran dan ID sumber. Misalnya: {Activity.ChannelId}/users/{Activity.From.Id}#YourPropertyName
  • Status percakapan membuat kunci dengan menggunakan ID saluran dan ID percakapan. Misalnya: {Activity.ChannelId}/conversations/{Activity.Conversation.Id}#YourPropertyName

Kapan menggunakan masing-masing tipe status

Status percakapan sangat berguna untuk memantau konteks percakapan, seperti:

  • Apakah agen pernah mengajukan pertanyaan kepada pengguna, dan pertanyaan apa yang diajukan
  • Apa topik percakapan saat ini, atau apa topik percakapan sebelumnya
  • Mencatat riwayat obrolan

Status pengguna berguna untuk mencatat informasi tentang pengguna, seperti:

  • Informasi pengguna yang tidak krusial, seperti nama dan preferensi, pengaturan alarm, atau preferensi peringatan
  • Informasi tentang percakapan terakhir dengan agen
    • Misalnya, agen dukungan produk mungkin melacak produk mana yang ditanyakan pengguna.

AgentApplication

  • Penangan rute yang Anda tambahkan akan diberi instans TurnState. Anda dapat mengakses state percakapan atau state pengguna dari instans ini.
  • State dimuat dan disimpan secara otomatis.