آیا به روشی سریع برای افزودن تجربه هوش مصنوعی مکالمهای به یک برنامه .NET نیاز دارید؟ با Aspose.LLM میتوانید یک چت ساده بسازید بدون اینکه بهصورت صریح شناسههای جلسه را ایجاد یا مدیریت کنید. SendMessageAsync بهصورت خودکار از جلسه جاری استفاده میکند و به پیامهای متوالی اجازه میدهد تا زمینه مکالمه را بهاشتراک بگذارند.
این الگو برای یک مکالمه در هر زمان مفید است، از جمله ابزارهای CLI، نمونههای اولیه، اسکریپتها و سایر برنامههای ساده.
زمانی که چت ساده گزینه مناسبی است
الگوی جلسه ضمنی برای موارد زیر مناسب است:
- یک سؤال واحد و پاسخ.
- یک گفتگوی کوتاه رفتوآمد.
- برنامهها و اسکریپتهای CLI.
- نمونههای اولیه.
- برنامههایی که در هر زمان فقط یک گفتوگو باید فعال باشد.
اگر برنامه شما به چندین گفتگوی مستقل نیاز دارد—به عنوان مثال، یک چتبات که به چندین کاربر سرویس میدهد—باید بهجای آن از APIهای جلسه صریح Aspose.LLM استفاده کنید.
ارسال پیام بدون مدیریت جلسه
الگوی پیامرسانی اصلی بهصورت عمدی کوچک است:
string reply = await api.SendMessageAsync("What is 2 + 2?");
Console.WriteLine(reply);
هنگامی که تماسهای بعدی را بر روی همان نمونه AsposeLLMApi انجام میدهید، آنها به همان گفتگوی جاری تعلق دارند:
await api.SendMessageAsync("My name is Alice.");
string reply = await api.SendMessageAsync("What is my name?");
Console.WriteLine(reply);
شما یک شناسهٔ جلسه ایجاد نمیکنید، آن را بین فراخوانیها پاس نمیدهید یا بهطور صریح تاریخچهٔ گفتوگو را اضافه نمیکنید. همان نمونهٔ AsposeLLMApi مکالمهٔ جاری را برای شما حفظ میکند. منبع موجود این رفتار را بهعنوان یک جلسهٔ ضمنی که برای طول عمر نمونهٔ API حفظ میشود، مستند میکند. fileciteturn0file0L29‑L34
راهاندازی کامل هنوز به یک نمونه API دارای مجوز و یک پیشتنظیم نیاز دارد. مثال منبع از Aspose.LLM.License، Qwen25Preset و AsposeLLMApi.Create(preset) استفاده میکند. fileciteturn0file0L87-L122
ساخت یک چت تعاملی در کنسول
با درک الگوی پیامرسانی پایه، بیایید آن را به یک برنامه کنسول تعاملی کوچک تبدیل کنیم.
قسمت مهم این است که API را یک بار ایجاد کنید و سپس برای هر پیام از آن استفاده مجدد کنید:
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}");
}
}
}
}
این مثال چت را ساده نگه میدارد:
- نمونه API یک بار ایجاد میشود.
- هر فراخوانی
SendMessageAsyncاز همان جلسه ضمنی استفاده میکند. - پیامهای قبلی برای مدل در دسترس باقی میمانند.
- حلقه یک گفتگوی طبیعی رفتوآمد فراهم میکند.
- استثناها برای هر پیام بهصورت جداگانه مدیریت میشوند بهطوری که یک درخواست ناموفق برنامه را خاتمه ندهد.
مثال منبع از همان ساختار استفاده میکند و اشاره میکند که یک نمونهٔ تک API زمینه را در طول تکرارها حفظ میکند. fileciteturn0file0L192-L245
برای اجرای آن، یک پروژه کنسول .NET ایجاد کنید، فایل Program.cs تولید شده را جایگزین کنید و اجرا کنید:
dotnet new console
dotnet run
Aspose.LLM یک کلاس سطح‑بالا به نام AsposeLLMApi فراهم میکند که بارگذاری مدل، توکنیزهسازی و استنتاج را انتزاع میکند. برای شروع، بسته NuGet را نصب کنید:
Install-Package Aspose.LLM
سفارشیسازی یک پیام تک با یک پیشتنظیم متفاوت
اگر بیشتر مکالمات شما باید از رفتار پیشفرض استفاده کنند، اما یک سؤال خاص نیاز به پاسخ تعیینکنندهتری داشته باشد چه میشود؟
میتوانید یک پیشتنظیم متفاوت را به SendMessageAsync برای آن فراخوانی پاس دهید:
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);
بازنویسی فقط برای آن فراخوان اعمال میشود. پیشتنظیم پیشفرض API بدون تغییر میماند و جلسهٔ زیرین به ارائهٔ زمینهٔ گفتگو ادامه میدهد. fileciteturn0file0L126‑L159
دمای پایین مانند 0.1f نمونهبرداری را بیشتر قطعی میکند، که میتواند برای سوالاتی که میخواهید تغییرات کمتری در پاسخ تولید شده داشته باشید، مفید باشد. fileciteturn0file0L155‑L159
حفاظت از درخواستهای چت طولانیمدت با لغو
استنتاج مدل محلی میتواند برای درخواستهای بزرگ یا پاسخهای طولانیتر زمان بیشتری ببرد. میتوانید با ارسال یک CancellationToken از اجرای نامحدود یک درخواست جلوگیری کنید.
به عنوان مثال، یک زمانسنج 30 ثانیهای تنظیم کنید:
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.");
}
منبع همان الگو را مستند میکند: یک CancellationTokenSource با زمانساز ایجاد کنید، توکن آن را به SendMessageAsync پاس دهید، و هنگام لغو درخواست، OperationCanceledException را بگیرید. fileciteturn0file0L161‑L190
در یک برنامه ASP.NET Core، میتوانید توکن لغو درخواست را نیز ارسال کنید تا تولید زمانی که مشتری قطع اتصال میکند، متوقف شود.
مشکلات رایج
| مشکل | چه چیزی را بررسی کنید |
|---|---|
Not licensed for this method | اطمینان حاصل کنید که لایسنس قبل از فراخوانی SendMessageAsync بارگذاری شده است. |
چندین نمونه AsposeLLMApi | یک نمونه واحد را دوباره استفاده کنید و آن را بهدرستی آزاد کنید. |
| پاسخ اولیه کند | دانلود اولیه مدل/موتور میتواند چندین دقیقه بر روی یک ماشین تازه نصب شده طول بکشد. |
منبع بهطور خاص خطای مجوز، رفتار تک‑نمونه‑فعال، و بارگذاری اولیه کندتر مدل را مستند میکند. fileciteturn0file0L249‑L255
چت ساده در مقابل جلسات صریح
رویکرد جلسه ضمنی بهصورت عمدی محدود است: این کار پیادهسازی را کوچک نگه میدارد با حفظ یک گفتگوی جاری بر روی یک نمونه AsposeLLMApi.
| اگر نیاز دارید… | استفاده |
|---|---|
| یک گفتوگو | SendMessageAsync |
| چت تعاملی کوتاه | SendMessageAsync |
| یک CLI یا نمونه اولیه | SendMessageAsync |
| چند گفتوگوی مستقل | جلسات صریح |
| چند کاربر یا چتهای همزمان | جلسات صریح |
| حالت مکالمه پایدار | پایداری جلسه |
از پیامرسانی ضمنی استفاده کنید وقتی یک گفتوگو کافی است. وقتی به گفتوگوهای مستقل، کاربران همزمان، حالت پایدار یا کنترل بیشتر بر هویت جلسه نیاز دارید، به APIهای جلسه صریح منتقل شوید. منبع موجود جلسات صریح را برای گفتوگوهای همزمان و حالت پایدار توصیه میکند. fileciteturn0file0L266‑L274
برای روش جلسه صریح، مستندات Aspose.LLM و APIهای چند‑نوبت/جلسه را ببینید.
دریافت یک لایسنس رایگان
Aspose برای ارزیابی مجوزهای موقت ارائه میدهد. یکی را از صفحه مجوز موقت Aspose دریافت کنید و فایل Aspose.LLM.lic را در جایی قرار دهید که برنامه شما بتواند آن را بارگذاری کند.
منابع اضافی رایگان
نتیجهگیری
ساخت یک چت ساده هوش مصنوعی با Aspose.LLM نیازی به مدیریت صریح جلسه ندارد. با ایجاد یک نمونه AsposeLLMApi و فراخوانی SendMessageAsync، میتوانید تجربه گفتوگو ایجاد کنید که در آن API بهصورت خودکار جلسه فعلی را حفظ میکند.
برای برنامههای ساده، نمونهسازیها، اسکریپتها و تجربههای چت تککاربره، این کار پیادهسازی را به حداقل میرساند. هنگامی که برنامه شما برای پشتیبانی از چندین گفتگو رشد میکند یا به کنترل صریح جلسه نیاز دارد، میتوانید به APIهای مبتنی بر جلسه منتقل شوید.
سؤالات متداول
آیا لازم است جلسات چت را بهصورت دستی با Aspose.LLM مدیریت کنم؟ خیر. متد
SendMessageAsyncضمنی‑جلسه بهصورت خودکار وضعیت مکالمه را در طول عمر نمونهAsposeLLMApiردیابی میکند.آیا میتوانم رفتار مدل را فقط برای یک سؤال تغییر دهم؟ بله. یک پیشتنظیم متفاوت (مثلاً با دمای پایینتر) را بهعنوان آرگومان
presetبهSendMessageAsyncارائه دهید. فقط آن فراخوانی از تنظیمات جدید استفاده میکند.چگونه میتوانم یک تولید طولانیمدت را متوقف کنم؟ یک
CancellationTokenSourceبا زمانسقف ایجاد کنید و توکن آن را بهSendMessageAsyncپاس دهید. برای مدیریت زمانسقف،OperationCanceledExceptionرا دریافت کنید.چه خطاهای رایجی باید مراقبشان باشم؟ عدم وجود لایسنس، ایجاد همزمان چندین نمونه API، و بارگذاری اولیه مدل بهصورت کند، رایجترین مشکلات هستند. مراحل کاهش این مشکلات که در بالا توضیح داده شد را دنبال کنید.
آیا کد نمونه برای تولید آماده است؟ این قطعات از مستندات رسمی Aspose بازتولید شدهاند و تست‑شده در محیط ایزوله نیستند. آنها را در محیط خود تست کنید و قبل از استقرار، مدیریت خطای قوی اضافه کنید.
