Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Aplikasi dapat menggunakan model dari berbagai layanan inferensi untuk pergantian percakapan yang berbeda. Misalnya, aplikasi dapat mengubah model berdasarkan pilihan pengguna, kemampuan model, ketersediaan, atau biaya.
Mengubah tujuan untuk permintaan berikutnya hanyalah satu bagian dari perutean. Model baru juga memerlukan percakapan sebelumnya untuk melanjutkan dengan konteks yang sama. Apakah dapat menerima konteks tersebut tergantung pada tempat riwayat obrolan disimpan dan siapa yang mengontrolnya.
Penyimpanan riwayat obrolan menentukan portabilitas
Layanan inferensi mendukung pendekatan yang berbeda untuk status percakapan. Beberapa API mengharapkan pemanggil untuk memberikan riwayat pesan yang relevan dengan setiap permintaan. API lain menyimpan percakapan di layanan inferensi dan memungkinkan pemanggil untuk melanjutkannya dengan menyertakan sebuah pengenal.
| Model riwayat | Tempat pesan disimpan | Apa yang dikirim oleh penelepon |
|---|---|---|
| Dikelola oleh pemanggil | Dalam memori yang dikontrol aplikasi atau penyimpanan tahan lama | Riwayat pesan yang relevan beserta pesan baru pada setiap permintaan |
| Dikelola oleh layanan inferensi | Dalam penyimpanan yang dikelola oleh layanan inferensi | Pengidentifikasi percakapan atau respons khusus layanan, ditambah pesan baru apa pun. |
Beberapa layanan inferensi mendukung kedua pendekatan melalui API atau opsi yang berbeda. Misalnya, respons OpenAI memiliki parameter store yang dapat Anda atur ke true untuk riwayat obrolan yang dikelola oleh layanan inferensi, dan ke false untuk yang dikelola oleh pemanggil.
Riwayat yang dikelola penelepon mendukung perutean
Saat pemanggil mengelola riwayat, pemanggil memiliki akses ke pesan dari interaksi sebelumnya. Router dapat memilih model atau layanan inferensi lain, dan pemanggil dapat mengirim pesan tersebut dengan permintaan berikutnya.
Riwayat tidak harus tetap berada di memori proses. Ini dapat berasal dari penyimpanan tahan lama milik aplikasi, selama aplikasi dapat memuatnya dan mengirimkannya ke layanan yang dipilih. Tujuan juga harus mendukung konten pesan dan fitur yang digunakan sebelumnya dalam percakapan.
Perutean batas riwayat yang dikelola oleh layanan inferensi
Ketika layanan inferensi mengelola riwayat, itu adalah sumber kebenaran untuk percakapan. Pemanggil biasanya mempertahankan pengidentifikasi buram alih-alih pesan itu sendiri.
Pengidentifikasi tersebut mengacu pada status yang dipegang oleh layanan asal. Akses juga dapat bergantung pada akun atau proyek, titik akhir, dan kredensial yang digunakan untuk membuat percakapan. Klien untuk layanan lain tidak dapat menggunakan pengidentifikasi untuk mengambil pesan. Klien lain untuk layanan yang sama mungkin juga tidak dapat mengakses percakapan jika menggunakan cakupan yang berbeda.
Layanan mungkin mendukung perubahan model dalam salah satu percakapan tersimpannya sendiri. Perilaku tersebut khusus untuk layanan dan bukan perutean portabel. Router umum tidak dapat mentransfer percakapan sisi layanan ke penyedia lain tanpa terlebih dahulu mengambil atau menyusun ulang pesan.
| Skenario perutean | Model riwayat | Result |
|---|---|---|
| Beralih antar model dari satu penyedia | Dikelola oleh pemanggil | Pemanggil dapat memutar ulang riwayat ke model baru. Model baru harus mendukung jenis pesan dan konten yang digunakan pada giliran sebelumnya. |
| Beralih antara penyedia inferensi yang berbeda | Dikelola oleh pemanggil | Pemanggil dapat memutar ulang riwayat ke penyedia baru. Penyedia baru harus menerima peran, jenis konten, pesan pemanggilan alat, dan pesan hasil alat yang digunakan pada giliran-giliran sebelumnya. |
| Mengganti model dalam satu percakapan di sisi layanan | Dikelola oleh layanan inferensi | Sakelar hanya berfungsi jika layanan inferensi memungkinkan percakapan yang ada dilanjutkan dengan model baru. Klien perutean tidak dapat mengaktifkan perilaku ini. |
| Beralih ke layanan inferensi yang berbeda | Dikelola oleh layanan inferensi | Layanan baru tidak dapat mengakses pengidentifikasi percakapan layanan asli. Ambil atau rekonstruksi pesan-pesan, dan mulailah rute baru dengan riwayat yang dikelola oleh pemanggil. |
Untuk informasi selengkapnya tentang model penyimpanan ini, lihat Penyimpanan.
Cara Agent Framework mengimplementasikan perutean runtime
Agent Framework dapat menyediakan riwayat yang dikelola oleh pemanggil yang diperlukan untuk perutean portabel. Dalam pola perutean ini, penyedia riwayat obrolan adalah sumber kebenaran untuk percakapan. Ini dapat menyimpan pesan di sesi agen atau di penyimpanan milik aplikasi.
Di Kerangka Kerja Agen, riwayat yang dikelola pemanggil mencakup status sesi lokal dan penyimpanan riwayat obrolan kustom. Riwayat yang dikelola oleh layanan inferensi sesuai dengan penyimpanan yang dikelola oleh layanan.
Untuk ChatClientAgent, klien chat perutean berada di lapisan klien chat dari pipeline agen. Agen dan sesinya tetap sama sementara klien perutean memilih salah satu dari beberapa instans bernama IChatClient untuk setiap permintaan.
Permintaan yang dirutekan mengikuti urutan ini:
- Penyedia riwayat obrolan memuat riwayat percakapan.
- Agen menggabungkan riwayat dengan input untuk giliran saat ini.
- Klien perutean memilih klien chat yang aktif untuk sesi tersebut.
- Klien yang dipilih menerima permintaan lengkap.
- Penyedia riwayat obrolan menyimpan pesan baru setelah dijalankan.
Karena klien yang dipilih menerima riwayat yang dimuat oleh penyedia, aplikasi dapat mengubah rute tanpa membangun kembali percakapan secara manual.
.NET SDK menyediakan fitur eksperimental RoutePersistingRoutingChatClient. Atur rute awal dengan RoutePersistingRoutingChatClientOptions.DefaultRoute, periksa rute sesi dengan GetActiveRoute, dan ubah dengan SetActiveRoute. Jika Anda tidak mengatur rute default, klien menggunakan rute pertama yang disediakan saat konstruksi.
Terdapat lebih banyak klien perutean di Microsoft.Extensions.AI yang memungkinkan strategi perutean tambahan.
Lihat contoh perutean multi-model untuk implementasi lengkap dalam C#.
Important
Setiap klien chat yang terdaftar sebagai rute harus menggunakan riwayat yang dikelola oleh pemanggil dan disediakan oleh penyedia riwayat obrolan. Penyedia dapat menyimpan riwayat tersebut dalam sesi atau di penyimpanan milik aplikasi. Jangan mendaftarkan rute yang menggunakan riwayat percakapan yang dikelola layanan inferensi.
dukungan Python saat ini tidak tersedia.
Dukungan Go saat ini tidak tersedia.