آیا به روشی سریع برای افزودن تجربه هوش مصنوعی مکالمه‌ای به یک برنامه .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 حفظ می‌شود، مستند می‌کند. fileciteturn0file0L29‑L34

راه‌اندازی کامل هنوز به یک نمونه API دارای مجوز و یک پیش‌تنظیم نیاز دارد. مثال منبع از Aspose.LLM.License، Qwen25Preset و AsposeLLMApi.Create(preset) استفاده می‌کند. fileciteturn0file0L87-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 زمینه را در طول تکرارها حفظ می‌کند. fileciteturn0file0L192-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 بدون تغییر می‌ماند و جلسهٔ زیرین به ارائهٔ زمینهٔ گفتگو ادامه می‌دهد. fileciteturn0file0L126‑L159

دمای پایین مانند 0.1f نمونه‌برداری را بیشتر قطعی می‌کند، که می‌تواند برای سوالاتی که می‌خواهید تغییرات کمتری در پاسخ تولید شده داشته باشید، مفید باشد. fileciteturn0file0L155‑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 را بگیرید. fileciteturn0file0L161‑L190

در یک برنامه ASP.NET Core، می‌توانید توکن لغو درخواست را نیز ارسال کنید تا تولید زمانی که مشتری قطع اتصال می‌کند، متوقف شود.

مشکلات رایج

مشکلچه چیزی را بررسی کنید
Not licensed for this methodاطمینان حاصل کنید که لایسنس قبل از فراخوانی SendMessageAsync بارگذاری شده است.
چندین نمونه AsposeLLMApiیک نمونه واحد را دوباره استفاده کنید و آن را به‌درستی آزاد کنید.
پاسخ اولیه کنددانلود اولیه مدل/موتور می‌تواند چندین دقیقه بر روی یک ماشین تازه نصب شده طول بکشد.

منبع به‌طور خاص خطای مجوز، رفتار تک‑نمونه‑فعال، و بارگذاری اولیه کندتر مدل را مستند می‌کند. fileciteturn0file0L249‑L255

چت ساده در مقابل جلسات صریح

رویکرد جلسه ضمنی به‌صورت عمدی محدود است: این کار پیاده‌سازی را کوچک نگه می‌دارد با حفظ یک گفتگوی جاری بر روی یک نمونه AsposeLLMApi.

اگر نیاز دارید…استفاده
یک گفت‌وگوSendMessageAsync
چت تعاملی کوتاهSendMessageAsync
یک CLI یا نمونه اولیهSendMessageAsync
چند گفت‌وگوی مستقلجلسات صریح
چند کاربر یا چت‌های همزمانجلسات صریح
حالت مکالمه پایدارپایداری جلسه

از پیام‌رسانی ضمنی استفاده کنید وقتی یک گفت‌وگو کافی است. وقتی به گفت‌وگوهای مستقل، کاربران همزمان، حالت پایدار یا کنترل بیشتر بر هویت جلسه نیاز دارید، به APIهای جلسه صریح منتقل شوید. منبع موجود جلسات صریح را برای گفت‌وگوهای همزمان و حالت پایدار توصیه می‌کند. fileciteturn0file0L266‑L274

برای روش جلسه صریح، مستندات Aspose.LLM و APIهای چند‑نوبت/جلسه را ببینید.

دریافت یک لایسنس رایگان

Aspose برای ارزیابی مجوزهای موقت ارائه می‌دهد. یکی را از صفحه مجوز موقت Aspose دریافت کنید و فایل Aspose.LLM.lic را در جایی قرار دهید که برنامه شما بتواند آن را بارگذاری کند.

منابع اضافی رایگان

نتیجه‌گیری

ساخت یک چت ساده هوش مصنوعی با Aspose.LLM نیازی به مدیریت صریح جلسه ندارد. با ایجاد یک نمونه AsposeLLMApi و فراخوانی SendMessageAsync، می‌توانید تجربه گفت‌وگو ایجاد کنید که در آن API به‌صورت خودکار جلسه فعلی را حفظ می‌کند.

برای برنامه‌های ساده، نمونه‌سازی‌ها، اسکریپت‌ها و تجربه‌های چت تک‌کاربره، این کار پیاده‌سازی را به حداقل می‌رساند. هنگامی که برنامه شما برای پشتیبانی از چندین گفتگو رشد می‌کند یا به کنترل صریح جلسه نیاز دارد، می‌توانید به APIهای مبتنی بر جلسه منتقل شوید.

سؤالات متداول

  1. آیا لازم است جلسات چت را به‌صورت دستی با Aspose.LLM مدیریت کنم؟ خیر. متد SendMessageAsync ضمنی‑جلسه به‌صورت خودکار وضعیت مکالمه را در طول عمر نمونه AsposeLLMApi ردیابی می‌کند.

  2. آیا می‌توانم رفتار مدل را فقط برای یک سؤال تغییر دهم؟ بله. یک پیش‌تنظیم متفاوت (مثلاً با دمای پایین‌تر) را به‌عنوان آرگومان preset به SendMessageAsync ارائه دهید. فقط آن فراخوانی از تنظیمات جدید استفاده می‌کند.

  3. چگونه می‌توانم یک تولید طولانی‌مدت را متوقف کنم؟ یک CancellationTokenSource با زمان‌سقف ایجاد کنید و توکن آن را به SendMessageAsync پاس دهید. برای مدیریت زمان‌سقف، OperationCanceledException را دریافت کنید.

  4. چه خطاهای رایجی باید مراقبشان باشم؟ عدم وجود لایسنس، ایجاد همزمان چندین نمونه API، و بارگذاری اولیه مدل به‌صورت کند، رایج‌ترین مشکلات هستند. مراحل کاهش این مشکلات که در بالا توضیح داده شد را دنبال کنید.

  5. آیا کد نمونه برای تولید آماده است؟ این قطعات از مستندات رسمی Aspose بازتولید شده‌اند و تست‑شده در محیط ایزوله نیستند. آنها را در محیط خود تست کنید و قبل از استقرار، مدیریت خطای قوی اضافه کنید.

بیشتر بخوانید