هل تحتاج إلى طريقة سريعة لإضافة تجربة ذكاء اصطناعي محادثة إلى تطبيق .NET؟ باستخدام Aspose.LLM، يمكنك بناء دردشة بسيطة دون الحاجة إلى إنشاء أو إدارة معرفات الجلسة صراحةً. SendMessageAsync يستخدم الجلسة الحالية تلقائيًا، مما يسمح للرسائل المتتالية بمشاركة سياق المحادثة.

هذا النمط مفيد لمحادثة واحدة في كل مرة، بما في ذلك أدوات سطر الأوامر، والنماذج الأولية، والسكربتات، وغيرها من التطبيقات البسيطة.

عندما تكون الدردشة البسيطة هي الخيار المناسب

نمط الجلسة الضمنية مناسب لـ:

  • سؤال وإجابة واحدة.
  • محادثة قصيرة ذهابًا وإيابًا.
  • تطبيقات CLI والسكربتات.
  • نماذج أولية.
  • تطبيقات حيث يجب أن تكون محادثة واحدة فقط نشطة في كل مرة.

إذا كان تطبيقك يحتاج إلى محادثات مستقلة متعددة — على سبيل المثال، روبوت دردشة يخدم عدة مستخدمين — يجب عليك استخدام واجهات برمجة التطبيقات الصريحة للجلسة في 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);

يطبق التجاوز فقط على تلك المكالمة. يظل الإعداد الافتراضي للواجهة البرمجية غير متغير، وتستمر الجلسة الأساسية في توفير سياق المحادثة. 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.
Multiple AsposeLLMApi instancesأعد استخدام نسخة واحدة وتحرّر منها بشكل صحيح.
Slow first responseقد يستغرق تنزيل النموذج/المحرك الأولي عدة دقائق على جهاز جديد.

المصدر يوثّق بشكل محدد خطأ الترخيص، وسلوك النسخة النشطة الواحدة، والتحميل الأول للنموذج الأبطأ. fileciteturn0file0L249-L255

المحادثة البسيطة مقابل الجلسات الصريحة

نهج الجلسة الضمنية محدود عن قصد: يحافظ على صغر حجم التنفيذ من خلال الحفاظ على محادثة حالية واحدة على مثيل AsposeLLMApi.

إذا كنت بحاجة إلى…الاستخدام
محادثة واحدةSendMessageAsync
دردشة تفاعلية قصيرةSendMessageAsync
سطر أوامر أو نموذج أوليSendMessageAsync
محادثات مستقلة متعددةجلسات صريحة
مستخدمون متعددون أو محادثات متزامنةجلسات صريحة
حالة محادثة مستمرةاستمرارية الجلسة

استخدم الرسائل الضمنية عندما تكون محادثة واحدة كافية. انتقل إلى واجهات برمجة التطبيقات للجلسات الصريحة عندما تحتاج إلى محادثات مستقلة، مستخدمين متزامنين، حالة مستمرة، أو مزيد من التحكم في هوية الجلسة. المصدر الحالي يوصي باستخدام الجلسات الصريحة للمحادثات المتزامنة والحالة المستمرة. fileciteturn0file0L266-L274

لنهج الجلسة الصريحة، راجع وثائق Aspose.LLM وواجهات برمجة التطبيقات متعددة الأدوار/الجلسات.

احصل على ترخيص مجاني

تقدم Aspose تراخيص مؤقتة للتقييم. احصل على واحدة من صفحة الترخيص المؤقت لـ Aspose وضع ملف Aspose.LLM.lic في المكان الذي يمكن لتطبيقك تحميله منه.

موارد إضافية مجانية

الخلاصة

إنشاء دردشة AI بسيطة باستخدام Aspose.LLM لا يتطلب إدارة جلسة صريحة. من خلال إنشاء نسخة واحدة من AsposeLLMApi واستدعاء SendMessageAsync، يمكنك بناء تجربة محادثة حيث يقوم الـ API بالحفاظ على الجلسة الحالية تلقائيًا.

للتطبيقات البسيطة والنماذج الأولية والسكربتات وتجارب الدردشة لمستخدم واحد، هذا يحافظ على الحد الأدنى من التنفيذ. عندما ينمو تطبيقك لدعم محادثات متعددة أو يتطلب تحكمًا صريحًا في الجلسة، يمكنك الانتقال إلى واجهات برمجة التطبيقات المعتمدة على الجلسة.

FAQs

  1. هل أحتاج إلى إدارة جلسات الدردشة يدويًا مع Aspose.LLM؟ لا. طريقة SendMessageAsync ذات الجلسة الضمنية تتعقب حالة المحادثة تلقائيًا طوال عمر كائن AsposeLLMApi.

  2. هل يمكنني تغيير سلوك النموذج لسؤال واحد فقط؟ نعم. قدم إعدادًا مسبقًا مختلفًا (على سبيل المثال، بدرجة حرارة أقل) كمعامل preset إلى SendMessageAsync. فقط ذلك الاستدعاء يستخدم الإعدادات الجديدة.

  3. كيف يمكنني إيقاف عملية توليد طويلة الأمد؟ أنشئ CancellationTokenSource بمهلة زمنية ومرّر الرمز المميز الخاص به إلى SendMessageAsync. امسك OperationCanceledException للتعامل مع المهلة.

  4. ما هي الأخطاء الشائعة التي يجب أن أراقبها؟ غياب الترخيص، إنشاء عدة مثيلات API في وقت واحد، وتحميل النموذج الأول ببطء هي المشكلات الأكثر شيوعًا. اتبع خطوات التخفيف الموضحة أعلاه.

  5. هل الكود النموذجي جاهز للإنتاج؟ تم استنساخ المقاطع من الوثائق الرسمية لـ Aspose ولم يتم اختبارها في بيئة معزولة. اختبرها في بيئتك الخاصة وأضف معالجة أخطاء قوية قبل النشر.

قراءة المزيد