האם אתה צריך דרך מהירה להוסיף חוויית AI שיחה ליישום .NET? עם Aspose.LLM, אתה יכול לבנות צ’אט פשוט מבלי ליצור או לנהל במפורש מזהי סשן. SendMessageAsync משתמש אוטומטית במפגש הנוכחי, מאפשר להודעות עוקבות לשתף את הקשר השיחה.

תבנית זו שימושית לשיחה אחת בכל פעם, כולל כלי שורת פקודה, אבטיפוסים, סקריפטים ויישומים פשוטים אחרים.

כאשר צ’אט פשוט הוא הבחירה הנכונה

תבנית‑ה‑הפעלה‑המרומזת מתאימה ל‑:

  • שאלה ותשובה אחת.
  • שיחה קצרה של הלוך ושוב.
  • יישומי CLI וסקריפטים.
  • אבות‑טיפוס.
  • יישומים שבהם רק שיחה אחת צריכה להיות פעילה בכל זמן.

אם היישום שלך דורש מספר שיחות עצמאיות—למשל, צ’אטבוט שמשרת משתמשים מרובים—עליך להשתמש ב‑APIs של סשן מפורש של 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L151-L180

ביישום ASP.NET Core, ניתן גם להעביר את אסימון הביטול של הבקשה כך שהיצירה תיפסק כאשר הלקוח מתנתק.

בעיות נפוצות

בעיהמה לבדוק
Not licensed for this methodודא שהרישיון נטען לפני קריאה ל-SendMessageAsync.
Multiple AsposeLLMApi instancesהשתמש במופע יחיד והפטר אותו כראוי.
Slow first responseהורדת המודל/המנוע הראשונית יכולה לקחת כמה דקות במכונה חדשה.

המקור מתעד באופן ספציפי את שגיאת הרישוי, את התנהגות המופע הפעיל היחיד, ואת הטעינה האיטית של המודל הראשון. fileciteturn0file0L249-L255

צ’אט פשוט מול מושבים מפורשים

הגישה של implicit‑session מוגבלת במכוון: היא משמרת את המימוש קטן על ידי תחזוקת שיחה נוכחית אחת על מופע של AsposeLLMApi.

אם אתה צריך…השתמש
שיחה אחתSendMessageAsync
צ’אט אינטראקטיבי קצרSendMessageAsync
CLI או אבטיפוסSendMessageAsync
שיחות עצמאיות מרובותExplicit sessions
משתמשים מרובים או צ’אטים מקביליםExplicit sessions
מצב שיחה קבועSession persistence

השתמש בהודעות מרומזות כאשר שיחה אחת מספיקה. עבור ל-APIs של מושב מפורש כאשר אתה צריך שיחות עצמאיות, משתמשים מקבילים, מצב קבוע, או שליטה רבה יותר על זהות המושב. המקור הקיים ממליץ על מושבים מפורשים עבור שיחות מקבילות ומצב קבוע. fileciteturn0file0L266-L274

לגישה של מפגש מפורש, ראו את התיעוד של Aspose.LLM ואת ה‑APIs של multi-turn/session.

קבל רישיון חינמי

Aspose מציעה רישיונות זמניים להערכה. קבל אחד מדף דף הרישיון הזמני של Aspose והציב את קובץ Aspose.LLM.lic במקום שבו היישום שלך יכול לטעון אותו.

משאבים נוספים בחינם

סיכום

בניית צ’אט AI פשוט עם Aspose.LLM אינה דורשת ניהול מפורש של מושב. על‑ידי יצירת מופע אחד של AsposeLLMApi וקראת SendMessageAsync, ניתן לבנות חוויית שיחה שבה ה‑API מתחזק את המושב הנוכחי באופן אוטומטי.

ליישומים פשוטים, אבטיפוסים, סקריפטים וחוויות צ’אט למשתמש יחיד, זה משאיר את המימוש למינימום. כאשר היישום שלך מתרחב לתמוך בשיחות מרובות או דורש שליטה מפורשת במפגשים, אתה יכול לעבור ל‑APIs מבוססי‑מושב.

שאלות נפוצות

  1. האם עליי לנהל את מושבי הצ’אט באופן ידני עם Aspose.LLM? לא. שיטת SendMessageAsync של מושב‑מרומז עוקבת אוטומטית אחרי מצב השיחה במשך חיי המופע של AsposeLLMApi.

  2. האם אני יכול לשנות את התנהגות המודל רק עבור שאלה אחת? כן. ספק preset שונה (למשל, עם טמפרטורה נמוכה יותר) כפרמטר preset ל‑SendMessageAsync. רק הקריאה הזו משתמשת בהגדרות החדשות.

  3. איך אני מפסיק יצירה ארוכת‑זמן? צור CancellationTokenSource עם זמן קצוב והעבר את האסימון שלו ל SendMessageAsync. תפוס OperationCanceledException כדי לטפל בזמן הקצוב.

  4. אילו שגיאות נפוצות עלי לשים לב אליהן? חוסר רישיון, יצירת מספר מופעי API במקביל, וטעינת מודל ראשון איטית הם הבעיות השכיחות ביותר. עקבו אחר שלבי ההפחתה המתוארים למעלה.

  5. האם קוד הדוגמה מוכן לייצור? הקטעים משוכפלים מהתיעוד הרשמי של Aspose ולא נבדקו בסביבת ארגז חול. יש לבדוק אותם בסביבתכם ולהוסיף טיפול שגיאות חזק לפני הפריסה.

קרא עוד