Apakah Anda membutuhkan cara cepat untuk menambahkan pengalaman AI percakapan ke aplikasi .NET? Dengan Aspose.LLM, Anda dapat membangun obrolan sederhana tanpa secara eksplisit membuat atau mengelola ID sesi. SendMessageAsync secara otomatis menggunakan sesi saat ini, memungkinkan pesan berurutan berbagi konteks percakapan.
Pola ini berguna untuk satu percakapan pada satu waktu, termasuk alat CLI, prototipe, skrip, dan aplikasi sederhana lainnya.
Saat Simple Chat Menjadi Pilihan yang Tepat
Pola implisit-sesi cocok untuk:
- Satu pertanyaan dan jawaban.
- Percakapan singkat bolak-balik.
- Aplikasi CLI dan skrip.
- Prototipe.
- Aplikasi di mana hanya satu percakapan yang perlu aktif pada satu waktu.
Jika aplikasi Anda membutuhkan banyak percakapan independen—misalnya, chatbot yang melayani banyak pengguna—Anda harus menggunakan API sesi eksplisit Aspose.LLM sebagai gantinya.
Kirim Pesan Tanpa Mengelola Sesi
Pola pesan inti sengaja dibuat kecil:
string reply = await api.SendMessageAsync("What is 2 + 2?");
Console.WriteLine(reply);
Ketika Anda melakukan panggilan berikutnya pada instance AsposeLLMApi yang sama, panggilan tersebut termasuk dalam percakapan saat ini yang sama:
await api.SendMessageAsync("My name is Alice.");
string reply = await api.SendMessageAsync("What is my name?");
Console.WriteLine(reply);
Anda tidak membuat ID sesi, tidak meneruskannya antar panggilan, atau secara eksplisit menambahkan riwayat percakapan. Instansi AsposeLLMApi yang sama mempertahankan percakapan saat ini untuk Anda. Sumber yang ada mendokumentasikan perilaku ini sebagai sesi implisit yang dipertahankan selama masa hidup instansi API. fileciteturn0file0L29-L34
Pengaturan lengkap masih memerlukan instance API berlisensi dan preset. Contoh sumber menggunakan Aspose.LLM.License, Qwen25Preset, dan AsposeLLMApi.Create(preset). fileciteturn0file0L87-L122
Membangun Obrolan Konsol Interaktif
Dengan pola pesan dasar yang dipahami, mari kita ubah menjadi aplikasi konsol interaktif kecil.
Bagian pentingnya adalah membuat API sekali, lalu menggunakannya kembali untuk setiap pesan:
using Aspose.LLM;
using Aspose.LLM.Abstractions.Parameters.Presets;
internal class SimpleChatDemo
{
public static async Task Main()
{
var license = new Aspose.LLM.License();
license.SetLicense("Aspose.LLM.lic");
var preset = new Qwen25Preset();
using var api = AsposeLLMApi.Create(preset);
Console.WriteLine("Ask me anything. Type 'quit' to exit.");
while (true)
{
Console.Write("> ");
string? line = Console.ReadLine();
if (line == null || line.Equals("quit", StringComparison.OrdinalIgnoreCase))
break;
try
{
string reply = await api.SendMessageAsync(line);
Console.WriteLine(reply);
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
}
Contoh ini membuat obrolan sederhana:
- Instansi API dibuat sekali.
- Setiap pemanggilan
SendMessageAsyncmenggunakan sesi implisit yang sama. - Pesan-pesan sebelumnya tetap tersedia bagi model.
- Loop menyediakan percakapan bolak-balik yang alami.
- Pengecualian ditangani per pesan sehingga satu permintaan yang gagal tidak menghentikan aplikasi.
Contoh sumber menggunakan struktur yang sama dan mencatat bahwa satu instance API mempertahankan konteks di seluruh iterasi. fileciteturn0file0L192-L245
Untuk menjalankannya, buat proyek konsol .NET, ganti Program.cs yang dihasilkan, dan jalankan:
dotnet new console
dotnet run
Aspose.LLM menyediakan kelas tingkat tinggi AsposeLLMApi yang mengabstraksikan pemuatan model, tokenisasi, dan inferensi. Untuk memulai, instal paket NuGet:
Install-Package Aspose.LLM
Sesuaikan Satu Pesan dengan Preset yang Berbeda
Bagaimana jika sebagian besar percakapan Anda harus menggunakan perilaku default, tetapi satu pertanyaan tertentu membutuhkan respons yang lebih deterministik?
Anda dapat melewatkan preset yang berbeda ke SendMessageAsync untuk panggilan tersebut:
var strictPreset = new Qwen25Preset();
strictPreset.SamplerParameters.Temperature = 0.1f;
string reply = await api.SendMessageAsync(
"What is the square root of 144?",
preset: strictPreset);
Console.WriteLine(reply);
Penimpaan hanya berlaku untuk panggilan itu. Preset default API tetap tidak berubah, dan sesi yang mendasarinya terus memberikan konteks percakapan. fileciteturn0file0L126-L159
Suhu rendah seperti 0.1f membuat sampling lebih deterministik, yang dapat berguna untuk pertanyaan di mana Anda menginginkan variasi yang lebih sedikit dalam respons yang dihasilkan. fileciteturn0file0L155-L159
Lindungi Permintaan Obrolan yang Berjalan Lama dengan Pembatalan
Inferensi model lokal dapat memakan waktu lebih lama untuk prompt yang besar atau respons yang lebih panjang. Anda dapat mencegah permintaan individual berjalan tanpa batas dengan melewatkan CancellationToken.
Sebagai contoh, atur batas waktu 30 detik:
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(30));
try
{
string reply = await api.SendMessageAsync(
"Write a 500-word essay about migration patterns of the Arctic tern.",
cancellationToken: cts.Token);
Console.WriteLine(reply);
}
catch (OperationCanceledException)
{
Console.WriteLine("Generation timed out.");
}
Sumber mendokumentasikan pola yang sama: buat sebuah CancellationTokenSource dengan batas waktu, berikan token‑nya ke SendMessageAsync, dan tangkap OperationCanceledException ketika permintaan dibatalkan. fileciteturn0file0L161‑L190
Dalam aplikasi ASP.NET Core, Anda juga dapat meneruskan token pembatalan permintaan sehingga proses pembuatan dapat dihentikan ketika klien terputus.
Masalah Umum
| Masalah | Apa yang harus diperiksa |
|---|---|
Not licensed for this method | Pastikan lisensi dimuat sebelum memanggil SendMessageAsync. |
Multiple AsposeLLMApi instances | Gunakan kembali satu instance dan dispose dengan benar. |
| Slow first response | Unduhan model/engine awal dapat memakan waktu beberapa menit pada mesin yang baru. |
Sumber secara khusus mendokumentasikan kesalahan lisensi, perilaku satu-instansi-aktif, dan pemuatan model pertama yang lebih lambat. fileciteturn0file0L249-L255
Obrolan Sederhana vs. Sesi Eksplisit
Pendekatan sesi implisit sengaja dibatasi: itu menjaga implementasi tetap kecil dengan mempertahankan satu percakapan saat ini pada instance AsposeLLMApi.
| Jika Anda membutuhkan… | Gunakan |
|---|---|
| Satu percakapan | SendMessageAsync |
| Obrolan interaktif singkat | SendMessageAsync |
| CLI atau prototipe | SendMessageAsync |
| Beberapa percakapan independen | Sesi eksplisit |
| Beberapa pengguna atau obrolan bersamaan | Sesi eksplisit |
| Status percakapan yang persisten | Persistensi sesi |
Gunakan pesan implisit ketika satu percakapan sudah cukup. Beralih ke API sesi eksplisit ketika Anda memerlukan percakapan independen, pengguna bersamaan, status persisten, atau kontrol lebih besar atas identitas sesi. Sumber yang ada merekomendasikan sesi eksplisit untuk percakapan bersamaan dan status persisten. fileciteturn0file0L266-L274
Untuk pendekatan sesi eksplisit, lihat dokumentasi Aspose.LLM dan API multi-turn/sesi.
Dapatkan Lisensi Gratis
Aspose menawarkan lisensi sementara untuk evaluasi. Dapatkan satu dari halaman lisensi sementara Aspose dan letakkan file Aspose.LLM.lic di tempat aplikasi Anda dapat memuatnya.
Sumber Daya Tambahan Gratis
Kesimpulan
Membangun chat AI sederhana dengan Aspose.LLM tidak memerlukan manajemen sesi secara eksplisit. Dengan membuat satu instance AsposeLLMApi dan memanggil SendMessageAsync, Anda dapat membangun pengalaman percakapan di mana API secara otomatis mempertahankan sesi saat ini.
Untuk aplikasi sederhana, prototipe, skrip, dan pengalaman obrolan satu pengguna, ini menjaga implementasi tetap minimal. Ketika aplikasi Anda berkembang untuk mendukung banyak percakapan atau memerlukan kontrol sesi yang eksplisit, Anda dapat beralih ke API berbasis sesi.
FAQs
Apakah saya perlu mengelola sesi obrolan secara manual dengan Aspose.LLM? Tidak. Metode
SendMessageAsyncimplisit‑sesi secara otomatis melacak status percakapan selama masa hidup instanceAsposeLLMApi.Apakah saya dapat mengubah perilaku model untuk hanya satu pertanyaan? Ya. Berikan preset yang berbeda (mis., dengan suhu lebih rendah) sebagai argumen
presetkeSendMessageAsync. Hanya panggilan itu yang menggunakan pengaturan baru.Bagaimana cara menghentikan proses generasi yang berjalan lama? Buat sebuah
CancellationTokenSourcedengan batas waktu dan berikan token‑nya keSendMessageAsync. TangkapOperationCanceledExceptionuntuk menangani batas waktu.Kesalahan umum apa yang harus saya perhatikan? Lisensi yang hilang, membuat beberapa instance API secara bersamaan, dan pemuatan model pertama yang lambat adalah masalah yang paling sering terjadi. Ikuti langkah-langkah mitigasi yang dijelaskan di atas.
Apakah kode contoh siap untuk produksi? Potongan kode ini disalin dari dokumentasi resmi Aspose dan belum diuji di sandbox. Uji mereka di lingkungan Anda sendiri dan tambahkan penanganan error yang kuat sebelum diterapkan.
