Bạn cần một cách nhanh chóng để thêm trải nghiệm AI hội thoại vào ứng dụng .NET? Với Aspose.LLM, bạn có thể xây dựng một cuộc trò chuyện đơn giản mà không cần tạo hoặc quản lý ID phiên một cách rõ ràng. SendMessageAsync tự động sử dụng phiên hiện tại, cho phép các tin nhắn liên tiếp chia sẻ ngữ cảnh hội thoại.
Mẫu này hữu ích cho một cuộc trò chuyện tại một thời điểm, bao gồm các công cụ CLI, nguyên mẫu, script và các ứng dụng đơn giản khác.
Khi Trò Chuyện Đơn Giản Là Lựa Chọn Phù Hợp
Mẫu implicit-session phù hợp tốt cho:
- Một câu hỏi và trả lời duy nhất.
- Một cuộc trò chuyện ngắn qua lại.
- Các ứng dụng và script CLI.
- Nguyên mẫu.
- Các ứng dụng mà chỉ cần một cuộc trò chuyện hoạt động cùng một lúc.
Nếu ứng dụng của bạn cần nhiều cuộc trò chuyện độc lập—ví dụ, một chatbot phục vụ nhiều người dùng—bạn nên sử dụng các API phiên rõ ràng của Aspose.LLM thay vì.
Gửi tin nhắn mà không quản lý phiên
Mẫu tin nhắn cốt lõi được thiết kế cố ý nhỏ gọn:
string reply = await api.SendMessageAsync("What is 2 + 2?");
Console.WriteLine(reply);
Khi bạn thực hiện các cuộc gọi tiếp theo trên cùng một thể hiện AsposeLLMApi, chúng sẽ thuộc cùng một cuộc trò chuyện hiện tại:
await api.SendMessageAsync("My name is Alice.");
string reply = await api.SendMessageAsync("What is my name?");
Console.WriteLine(reply);
Bạn không tạo ID phiên, không truyền nó giữa các lần gọi, và không cần thêm lịch sử hội thoại một cách rõ ràng. Cùng một thể hiện AsposeLLMApi sẽ duy trì cuộc hội thoại hiện tại cho bạn. Nguồn tài liệu hiện có mô tả hành vi này như một phiên ngầm được duy trì trong suốt thời gian tồn tại của thể hiện API. fileciteturn0file0L29-L34
Việc thiết lập đầy đủ vẫn yêu cầu một thể hiện API có giấy phép và một preset. Ví dụ nguồn sử dụng Aspose.LLM.License, Qwen25Preset, và AsposeLLMApi.Create(preset). fileciteturn0file0L87-L122
Xây dựng một Trò chuyện Console tương tác
Khi đã hiểu mẫu nhắn tin cơ bản, chúng ta hãy biến nó thành một ứng dụng console tương tác nhỏ.
Phần quan trọng là tạo API một lần, sau đó tái sử dụng nó cho mỗi tin nhắn:
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}");
}
}
}
}
Ví dụ này giữ cho cuộc trò chuyện đơn giản:
- Thực thể API được tạo một lần.
- Mọi lời gọi
SendMessageAsyncđều sử dụng cùng một phiên ngầm. - Các tin nhắn trước vẫn khả dụng cho mô hình.
- Vòng lặp cung cấp một cuộc trò chuyện tự nhiên qua lại.
- Các ngoại lệ được xử lý riêng cho mỗi tin nhắn, vì vậy một yêu cầu thất bại sẽ không làm dừng ứng dụng.
Ví dụ nguồn sử dụng cùng một cấu trúc và ghi chú rằng một thể hiện API duy nhất duy trì ngữ cảnh qua các vòng lặp. fileciteturn0file0L192-L245
Để chạy nó, tạo một dự án console .NET, thay thế tệp Program.cs được tạo, và chạy:
dotnet new console
dotnet run
Aspose.LLM cung cấp một lớp AsposeLLMApi cấp cao giúp trừu tượng hoá việc tải mô hình, token hoá và suy luận. Để bắt đầu, hãy cài đặt gói NuGet:
Install-Package Aspose.LLM
Tùy chỉnh một tin nhắn duy nhất với một preset khác
Nếu hầu hết các cuộc trò chuyện của bạn nên sử dụng hành vi mặc định, nhưng một câu hỏi cụ thể lại cần một phản hồi quyết định hơn thì sao?
Bạn có thể truyền một preset khác vào SendMessageAsync cho cuộc gọi đó:
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);
Việc ghi đè chỉ áp dụng cho cuộc gọi đó. Cài đặt mặc định của API vẫn không thay đổi, và phiên làm việc nền vẫn tiếp tục cung cấp ngữ cảnh hội thoại. fileciteturn0file0L126-L159
Nhiệt độ thấp như 0.1f làm cho việc lấy mẫu trở nên quyết định hơn, điều này có thể hữu ích cho các câu hỏi mà bạn muốn giảm sự biến đổi trong phản hồi được tạo ra. fileciteturn0file0L155-L159
Bảo vệ các yêu cầu trò chuyện kéo dài lâu bằng việc hủy bỏ
Việc suy luận mô hình cục bộ có thể mất thời gian lâu hơn đối với các lời nhắc lớn hoặc phản hồi dài hơn. Bạn có thể ngăn một yêu cầu riêng lẻ chạy vô hạn bằng cách truyền một CancellationToken.
Ví dụ, đặt thời gian chờ 30 giây:
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.");
}
Nguồn tài liệu mô tả cùng một mẫu: tạo một CancellationTokenSource với thời gian chờ, truyền token của nó cho SendMessageAsync, và bắt OperationCanceledException khi yêu cầu bị hủy. fileciteturn0file0L161-L190
Trong một ứng dụng ASP.NET Core, bạn cũng có thể truyền token hủy yêu cầu để quá trình tạo có thể dừng lại khi khách hàng ngắt kết nối.
Vấn đề chung
| Problem | What to check |
|---|---|
Not licensed for this method | Đảm bảo rằng giấy phép đã được tải trước khi gọi SendMessageAsync. |
Nhiều AsposeLLMApi instances | Tái sử dụng một thể hiện duy nhất và giải phóng nó đúng cách. |
| Phản hồi đầu tiên chậm | Việc tải xuống mô hình/động cơ ban đầu có thể mất vài phút trên máy mới. |
Nguồn tài liệu cụ thể ghi lại lỗi cấp phép, hành vi một phiên bản hoạt động duy nhất, và việc tải mô hình đầu tiên chậm hơn. fileciteturn0file0L249-L255
Chat Đơn Giản vs. Phiên Rõ Ràng
Cách tiếp cận implicit-session được giới hạn cố ý: nó giữ cho việc triển khai nhỏ gọn bằng cách duy trì một cuộc trò chuyện hiện tại trên một thể hiện AsposeLLMApi.
| Nếu bạn cần… | Sử dụng |
|---|---|
| Một cuộc hội thoại | SendMessageAsync |
| Một cuộc trò chuyện tương tác ngắn | SendMessageAsync |
| CLI hoặc nguyên mẫu | SendMessageAsync |
| Nhiều cuộc hội thoại độc lập | Explicit sessions |
| Nhiều người dùng hoặc các cuộc trò chuyện đồng thời | Explicit sessions |
| Trạng thái hội thoại liên tục | Session persistence |
Sử dụng tin nhắn ngầm khi một cuộc trò chuyện là đủ. Chuyển sang các API phiên rõ ràng khi bạn cần các cuộc trò chuyện độc lập, người dùng đồng thời, trạng thái bền vững, hoặc kiểm soát nhiều hơn đối với danh tính phiên. Nguồn hiện có khuyến nghị sử dụng các phiên rõ ràng cho các cuộc trò chuyện đồng thời và trạng thái bền vững. fileciteturn0file0L266-L274
Đối với cách tiếp cận phiên rõ ràng, xem tài liệu Aspose.LLM và các API đa vòng/phiên.
Nhận Giấy Phép Miễn Phí
Aspose cung cấp giấy phép tạm thời để đánh giá. Lấy một giấy phép từ trang giấy phép tạm thời của Aspose và đặt tệp Aspose.LLM.lic ở nơi ứng dụng của bạn có thể tải nó.
Tài nguyên bổ sung miễn phí
Kết luận
Xây dựng một cuộc trò chuyện AI đơn giản với Aspose.LLM không yêu cầu quản lý phiên một cách rõ ràng. Bằng cách tạo một thể hiện AsposeLLMApi và gọi SendMessageAsync, bạn có thể xây dựng trải nghiệm hội thoại mà API tự động duy trì phiên hiện tại.
Đối với các ứng dụng đơn giản, nguyên mẫu, script và trải nghiệm trò chuyện một người dùng, cách này giữ cho việc triển khai tối thiểu. Khi ứng dụng của bạn mở rộng để hỗ trợ nhiều cuộc trò chuyện hoặc yêu cầu kiểm soát phiên một cách rõ ràng, bạn có thể chuyển sang các API dựa trên phiên.
FAQs
Tôi có cần quản lý các phiên trò chuyện một cách thủ công với Aspose.LLM không? Không. Phương thức
SendMessageAsyncimplicit‑session tự động theo dõi trạng thái hội thoại trong suốt vòng đời của thực thểAsposeLLMApi.Tôi có thể thay đổi hành vi của mô hình chỉ cho một câu hỏi không? Có. Cung cấp một preset khác (ví dụ, với nhiệt độ thấp hơn) làm đối số
presetchoSendMessageAsync. Chỉ cuộc gọi đó mới sử dụng các cài đặt mới.Làm sao để dừng một quá trình tạo kéo dài? Tạo một
CancellationTokenSourcevới thời gian chờ và truyền token của nó choSendMessageAsync. BắtOperationCanceledExceptionđể xử lý thời gian chờ.Những lỗi phổ biến nào tôi nên chú ý? Thiếu giấy phép, tạo nhiều thể hiện API đồng thời và việc tải mô hình lần đầu chậm là những vấn đề thường gặp nhất. Hãy thực hiện các bước giảm thiểu đã mô tả ở trên.
Mã mẫu đã sẵn sàng cho sản xuất chưa? Các đoạn mã được sao chép từ tài liệu chính thức của Aspose và chưa được kiểm tra trong môi trường sandbox. Hãy kiểm tra chúng trong môi trường của bạn và thêm xử lý lỗi mạnh mẽ trước khi triển khai.
