هل تحتاج إلى طريقة سريعة لإضافة تجربة ذكاء اصطناعي محادثة إلى تطبيق .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. 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);
يطبق التجاوز فقط على تلك المكالمة. يظل الإعداد الافتراضي للواجهة البرمجية غير متغير، وتستمر الجلسة الأساسية في توفير سياق المحادثة. 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. |
Multiple AsposeLLMApi instances | أعد استخدام نسخة واحدة وتحرّر منها بشكل صحيح. |
Slow first response | قد يستغرق تنزيل النموذج/المحرك الأولي عدة دقائق على جهاز جديد. |
المصدر يوثّق بشكل محدد خطأ الترخيص، وسلوك النسخة النشطة الواحدة، والتحميل الأول للنموذج الأبطأ. fileciteturn0file0L249-L255
المحادثة البسيطة مقابل الجلسات الصريحة
نهج الجلسة الضمنية محدود عن قصد: يحافظ على صغر حجم التنفيذ من خلال الحفاظ على محادثة حالية واحدة على مثيل AsposeLLMApi.
| إذا كنت بحاجة إلى… | الاستخدام |
|---|---|
| محادثة واحدة | SendMessageAsync |
| دردشة تفاعلية قصيرة | SendMessageAsync |
| سطر أوامر أو نموذج أولي | SendMessageAsync |
| محادثات مستقلة متعددة | جلسات صريحة |
| مستخدمون متعددون أو محادثات متزامنة | جلسات صريحة |
| حالة محادثة مستمرة | استمرارية الجلسة |
استخدم الرسائل الضمنية عندما تكون محادثة واحدة كافية. انتقل إلى واجهات برمجة التطبيقات للجلسات الصريحة عندما تحتاج إلى محادثات مستقلة، مستخدمين متزامنين، حالة مستمرة، أو مزيد من التحكم في هوية الجلسة. المصدر الحالي يوصي باستخدام الجلسات الصريحة للمحادثات المتزامنة والحالة المستمرة. fileciteturn0file0L266-L274
لنهج الجلسة الصريحة، راجع وثائق Aspose.LLM وواجهات برمجة التطبيقات متعددة الأدوار/الجلسات.
احصل على ترخيص مجاني
تقدم Aspose تراخيص مؤقتة للتقييم. احصل على واحدة من صفحة الترخيص المؤقت لـ Aspose وضع ملف Aspose.LLM.lic في المكان الذي يمكن لتطبيقك تحميله منه.
موارد إضافية مجانية
الخلاصة
إنشاء دردشة AI بسيطة باستخدام Aspose.LLM لا يتطلب إدارة جلسة صريحة. من خلال إنشاء نسخة واحدة من AsposeLLMApi واستدعاء SendMessageAsync، يمكنك بناء تجربة محادثة حيث يقوم الـ API بالحفاظ على الجلسة الحالية تلقائيًا.
للتطبيقات البسيطة والنماذج الأولية والسكربتات وتجارب الدردشة لمستخدم واحد، هذا يحافظ على الحد الأدنى من التنفيذ. عندما ينمو تطبيقك لدعم محادثات متعددة أو يتطلب تحكمًا صريحًا في الجلسة، يمكنك الانتقال إلى واجهات برمجة التطبيقات المعتمدة على الجلسة.
FAQs
هل أحتاج إلى إدارة جلسات الدردشة يدويًا مع Aspose.LLM؟ لا. طريقة
SendMessageAsyncذات الجلسة الضمنية تتعقب حالة المحادثة تلقائيًا طوال عمر كائنAsposeLLMApi.هل يمكنني تغيير سلوك النموذج لسؤال واحد فقط؟ نعم. قدم إعدادًا مسبقًا مختلفًا (على سبيل المثال، بدرجة حرارة أقل) كمعامل
presetإلىSendMessageAsync. فقط ذلك الاستدعاء يستخدم الإعدادات الجديدة.كيف يمكنني إيقاف عملية توليد طويلة الأمد؟ أنشئ
CancellationTokenSourceبمهلة زمنية ومرّر الرمز المميز الخاص به إلىSendMessageAsync. امسكOperationCanceledExceptionللتعامل مع المهلة.ما هي الأخطاء الشائعة التي يجب أن أراقبها؟ غياب الترخيص، إنشاء عدة مثيلات API في وقت واحد، وتحميل النموذج الأول ببطء هي المشكلات الأكثر شيوعًا. اتبع خطوات التخفيف الموضحة أعلاه.
هل الكود النموذجي جاهز للإنتاج؟ تم استنساخ المقاطع من الوثائق الرسمية لـ Aspose ولم يتم اختبارها في بيئة معزولة. اختبرها في بيئتك الخاصة وأضف معالجة أخطاء قوية قبل النشر.
