ต้องการวิธีที่รวดเร็วในการเพิ่มประสบการณ์ AI แบบสนทนาให้กับแอปพลิเคชัน .NET หรือไม่? ด้วย Aspose.LLM คุณสามารถสร้างแชทง่าย ๆ โดยไม่ต้องสร้างหรือจัดการ ID ของเซสชันอย่างชัดเจน SendMessageAsync จะใช้เซสชันปัจจุบันโดยอัตโนมัติ ทำให้ข้อความต่อเนื่องสามารถแชร์บริบทของการสนทนาได้

รูปแบบนี้มีประโยชน์สำหรับการสนทนาแบบหนึ่งต่อหนึ่ง รวมถึงเครื่องมือ CLI, ตัวอย่างต้นแบบ, สคริปต์ และแอปพลิเคชันง่าย ๆ อื่น ๆ

เมื่อ Simple Chat เป็นตัวเลือกที่เหมาะสม

รูปแบบ implicit-session เหมาะสำหรับ:

  • คำถามและคำตอบเดียว.
  • การสนทนาสั้นแบบโต้ตอบ.
  • แอปพลิเคชันและสคริปต์ CLI.
  • ต้นแบบ.
  • แอปพลิเคชันที่ต้องการให้มีการสนทนาเพียงหนึ่งเดียวทำงานพร้อมกัน.

หากแอปพลิเคชันของคุณต้องการการสนทนาที่เป็นอิสระหลายรายการ—เช่น แชทบอทที่ให้บริการหลายผู้ใช้—คุณควรใช้ Aspose.LLM’s explicit session APIs แทน

ส่งข้อความโดยไม่ต้องจัดการเซสชัน

รูปแบบการส่งข้อความหลักถูกออกแบบให้มีขนาดเล็กโดยเจตนา:

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);

คุณไม่ต้องสร้าง session ID, ส่งต่อระหว่างการเรียก, หรือเพิ่มประวัติการสนทนาอย่างชัดเจน. อินสแตนซ์ AsposeLLMApi เดียวกันจะดูแลการสนทนาปัจจุบันให้คุณ. แหล่งที่มาที่มีอยู่บันทึกพฤติกรรมนี้เป็น session แบบไม่ชัดเจนที่ถูกเก็บไว้ตลอดอายุการใช้งานของอินสแตนซ์ 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 ที่สรุปการโหลดโมเดล, การทำ tokenisation, และการทำ inference. เพื่อเริ่มต้น, ให้ติดตั้งแพ็กเกจ NuGet:

Install-Package Aspose.LLM

ปรับแต่งข้อความเดียวด้วยพรีเซ็ตที่แตกต่าง

ถ้าการสนทสส่วนใหญ่ของคุณควรใช้พฤติกรรมเริ่มต้น แต่คำถามหนึ่งเฉพาะต้องการการตอบที่กำหนดได้มากขึ้นล่ะ?

คุณสามารถส่ง preset ที่แตกต่างไปยัง 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

ตัวอย่างเช่น ตั้งค่า timeout เป็น 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 พร้อมระยะเวลา timeout, ส่ง token ของมันไปยัง SendMessageAsync, และดักจับ OperationCanceledException เมื่อคำขอถูกยกเลิก. fileciteturn0file0L151-L180

ในแอปพลิเคชัน ASP.NET Core คุณสามารถส่ง cancellation token ของคำขอได้เช่นกัน เพื่อให้การสร้างหยุดเมื่อไคลเอนต์ตัดการเชื่อมต่อ

ปัญหาทั่วไป

ProblemWhat to check
Not licensed for this methodตรวจสอบให้แน่ใจว่าได้โหลดใบอนุญาตก่อนเรียก SendMessageAsync.
Multiple AsposeLLMApi instancesใช้อินสแตนซ์เดียวซ้ำและทำการกำจัดอย่างถูกต้อง.
Slow first responseการดาวน์โหลดโมเดล/เอนจินครั้งแรกอาจใช้เวลาหลายนาทีบนเครื่องใหม่.

แหล่งที่มาระบุอย่างชัดเจนถึงข้อผิดพลาดด้านการอนุญาต, พฤติกรรมการทำงานแบบอินสแตนซ์เดียวที่ใช้งาน, และการโหลดโมเดลครั้งแรกที่ช้ากว่า fileciteturn0file0L249-L255

แชทแบบง่าย vs. เซสชันแบบชัดเจน

แนวทาง implicit-session ถูกจำกัดโดยเจตนา: มันทำให้การนำไปใช้มีขนาดเล็กโดยการรักษาการสนทนาปัจจุบันเพียงหนึ่งรายการบนอินสแตนซ์ของ AsposeLLMApi

หากคุณต้องการ…ใช้
การสนทนาเดียวSendMessageAsync
การแชทแบบโต้ตอบสั้นSendMessageAsync
CLI หรือต้นแบบSendMessageAsync
หลายการสนทนาที่แยกจากกันเซสชันแบบชัดเจน
หลายผู้ใช้หรือการแชทพร้อมกันเซสชันแบบชัดเจน
สถานะการสนทนาที่คงอยู่การคงสภาพเซสชัน

ใช้การส่งข้อความแบบโดยนัยเมื่อการสนทนาเดียวพอเพียง ย้ายไปใช้ API เซสชันแบบชัดเจนเมื่อคุณต้องการการสนทนาที่เป็นอิสระ ผู้ใช้หลายคนพร้อมกัน สถานะที่คงอยู่ หรือการควบคุมอัตลักษณ์ของเซสชันมากขึ้น แหล่งข้อมูลที่มีอยู่แนะนำให้ใช้เซสชันแบบชัดเจนสำหรับการสนทนาพร้อมกันและสถานะที่คงอยู่. fileciteturn0file0L266-L274

สำหรับแนวทางการใช้เซสชันแบบชัดเจน โปรดดูเอกสาร Aspose.LLM และ API แบบหลายรอบ/เซสชัน.

รับใบอนุญาตฟรี

Aspose มีใบอนุญาตชั่วคราวสำหรับการประเมินผล คุณสามารถรับได้จาก หน้าใบอนุญาตชั่วคราวของ Aspose และวางไฟล์ Aspose.LLM.lic ไว้ในตำแหน่งที่แอปพลิเคชันของคุณสามารถโหลดได้.

แหล่งข้อมูลเพิ่มเติมฟรี

สรุป

การสร้างแชท AI อย่างง่ายด้วย Aspose.LLM ไม่จำเป็นต้องจัดการเซสชันอย่างชัดเจน โดยการสร้างอินสแตนซ์ AsposeLLMApi เพียงหนึ่งตัวและเรียก SendMessageAsync คุณสามารถสร้างประสบการณ์การสนทนาที่ API จะดูแลเซสชันปัจจุบันโดยอัตโนมัติ

สำหรับแอปพลิเคชันง่าย ๆ, โปรโตไทป์, สคริปต์, และประสบการณ์แชทแบบผู้ใช้เดียว, สิ่งนี้ทำให้การดำเนินการมีขนาดเล็กที่สุด. เมื่อแอปพลิเคชันของคุณเติบโตเพื่อรองรับการสนทนาหลายครั้งหรือจำเป็นต้องมีการควบคุมเซสชันอย่างชัดเจน, คุณสามารถย้ายไปใช้ API ที่อิงเซสชันได้.

คำถามที่พบบ่อย

  1. ฉันต้องจัดการเซสชันแชทด้วยตนเองกับ Aspose.LLM หรือไม่? ไม่. วิธีการ SendMessageAsync แบบ implicit‑session จะติดตามสถานะการสนทนาโดยอัตโนมัติตลอดอายุของอินสแตนซ์ AsposeLLMApi.

  2. ฉันสามารถเปลี่ยนพฤติกรรมของโมเดลสำหรับคำถามเดียวได้หรือไม่? ใช่. ส่ง preset ที่แตกต่าง (เช่น ด้วยอุณหภูมิต่ำกว่า) เป็นอาร์กิวเมนต์ preset ไปยัง SendMessageAsync. คำเรียกนั้นเท่านั้นที่จะใช้การตั้งค่าใหม่.

  3. ฉันจะหยุดการสร้างที่ใช้เวลานานได้อย่างไร? สร้าง CancellationTokenSource พร้อมกับการตั้งเวลาและส่งโทเค็นของมันไปยัง SendMessageAsync จับ OperationCanceledException เพื่อจัดการกับการหมดเวลา.

  4. ข้อผิดพลาดทั่วไปที่ควรระวังคืออะไร? การขาดใบอนุญาต, การสร้างหลายอินสแตนซ์ของ API พร้อมกัน, และการโหลดโมเดลครั้งแรกที่ช้าเป็นปัญหาที่พบบ่อยที่สุด. ทำตามขั้นตอนการบรรเทาที่อธิบายไว้ข้างต้น.

  5. ตัวอย่างโค้ดพร้อมสำหรับการผลิตหรือไม่? ส่วนโค้ดเหล่านี้ถูกคัดลอกจากเอกสารอย่างเป็นทางการของ Aspose และยังไม่ได้รับการทดสอบใน sandbox. ทดสอบในสภาพแวดล้อมของคุณเองและเพิ่มการจัดการข้อผิดพลาดที่แข็งแรงก่อนนำไปใช้งาน.

อ่านเพิ่มเติม