ต้องการวิธีที่รวดเร็วในการเพิ่มประสบการณ์ 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. 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 ที่สรุปการโหลดโมเดล, การทำ 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 ยังคงไม่เปลี่ยนแปลง และเซสชันพื้นฐานจะดำเนินการให้บริบทการสนทนายังคงอยู่ fileciteturn0file0L126-L159
อุณหภูมิต่ำเช่น 0.1f ทำให้การสุ่มมีความแน่นอนมากขึ้น ซึ่งอาจเป็นประโยชน์สำหรับคำถามที่คุณต้องการความแปรผันน้อยลงในคำตอบที่สร้างขึ้น. fileciteturn0file0L155-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 เมื่อคำขอถูกยกเลิก. fileciteturn0file0L151-L180
ในแอปพลิเคชัน ASP.NET Core คุณสามารถส่ง cancellation token ของคำขอได้เช่นกัน เพื่อให้การสร้างหยุดเมื่อไคลเอนต์ตัดการเชื่อมต่อ
ปัญหาทั่วไป
| Problem | What to check |
|---|---|
Not licensed for this method | ตรวจสอบให้แน่ใจว่าได้โหลดใบอนุญาตก่อนเรียก SendMessageAsync. |
Multiple AsposeLLMApi instances | ใช้อินสแตนซ์เดียวซ้ำและทำการกำจัดอย่างถูกต้อง. |
| Slow first response | การดาวน์โหลดโมเดล/เอนจินครั้งแรกอาจใช้เวลาหลายนาทีบนเครื่องใหม่. |
แหล่งที่มาระบุอย่างชัดเจนถึงข้อผิดพลาดด้านการอนุญาต, พฤติกรรมการทำงานแบบอินสแตนซ์เดียวที่ใช้งาน, และการโหลดโมเดลครั้งแรกที่ช้ากว่า fileciteturn0file0L249-L255
แชทแบบง่าย vs. เซสชันแบบชัดเจน
แนวทาง implicit-session ถูกจำกัดโดยเจตนา: มันทำให้การนำไปใช้มีขนาดเล็กโดยการรักษาการสนทนาปัจจุบันเพียงหนึ่งรายการบนอินสแตนซ์ของ AsposeLLMApi
| หากคุณต้องการ… | ใช้ |
|---|---|
| การสนทนาเดียว | SendMessageAsync |
| การแชทแบบโต้ตอบสั้น | SendMessageAsync |
| CLI หรือต้นแบบ | SendMessageAsync |
| หลายการสนทนาที่แยกจากกัน | เซสชันแบบชัดเจน |
| หลายผู้ใช้หรือการแชทพร้อมกัน | เซสชันแบบชัดเจน |
| สถานะการสนทนาที่คงอยู่ | การคงสภาพเซสชัน |
ใช้การส่งข้อความแบบโดยนัยเมื่อการสนทนาเดียวพอเพียง ย้ายไปใช้ API เซสชันแบบชัดเจนเมื่อคุณต้องการการสนทนาที่เป็นอิสระ ผู้ใช้หลายคนพร้อมกัน สถานะที่คงอยู่ หรือการควบคุมอัตลักษณ์ของเซสชันมากขึ้น แหล่งข้อมูลที่มีอยู่แนะนำให้ใช้เซสชันแบบชัดเจนสำหรับการสนทนาพร้อมกันและสถานะที่คงอยู่. fileciteturn0file0L266-L274
สำหรับแนวทางการใช้เซสชันแบบชัดเจน โปรดดูเอกสาร Aspose.LLM และ API แบบหลายรอบ/เซสชัน.
รับใบอนุญาตฟรี
Aspose มีใบอนุญาตชั่วคราวสำหรับการประเมินผล คุณสามารถรับได้จาก หน้าใบอนุญาตชั่วคราวของ Aspose และวางไฟล์ Aspose.LLM.lic ไว้ในตำแหน่งที่แอปพลิเคชันของคุณสามารถโหลดได้.
แหล่งข้อมูลเพิ่มเติมฟรี
สรุป
การสร้างแชท AI อย่างง่ายด้วย Aspose.LLM ไม่จำเป็นต้องจัดการเซสชันอย่างชัดเจน โดยการสร้างอินสแตนซ์ AsposeLLMApi เพียงหนึ่งตัวและเรียก SendMessageAsync คุณสามารถสร้างประสบการณ์การสนทนาที่ API จะดูแลเซสชันปัจจุบันโดยอัตโนมัติ
สำหรับแอปพลิเคชันง่าย ๆ, โปรโตไทป์, สคริปต์, และประสบการณ์แชทแบบผู้ใช้เดียว, สิ่งนี้ทำให้การดำเนินการมีขนาดเล็กที่สุด. เมื่อแอปพลิเคชันของคุณเติบโตเพื่อรองรับการสนทนาหลายครั้งหรือจำเป็นต้องมีการควบคุมเซสชันอย่างชัดเจน, คุณสามารถย้ายไปใช้ API ที่อิงเซสชันได้.
คำถามที่พบบ่อย
ฉันต้องจัดการเซสชันแชทด้วยตนเองกับ Aspose.LLM หรือไม่? ไม่. วิธีการ
SendMessageAsyncแบบ implicit‑session จะติดตามสถานะการสนทนาโดยอัตโนมัติตลอดอายุของอินสแตนซ์AsposeLLMApi.ฉันสามารถเปลี่ยนพฤติกรรมของโมเดลสำหรับคำถามเดียวได้หรือไม่? ใช่. ส่ง preset ที่แตกต่าง (เช่น ด้วยอุณหภูมิต่ำกว่า) เป็นอาร์กิวเมนต์
presetไปยังSendMessageAsync. คำเรียกนั้นเท่านั้นที่จะใช้การตั้งค่าใหม่.ฉันจะหยุดการสร้างที่ใช้เวลานานได้อย่างไร? สร้าง
CancellationTokenSourceพร้อมกับการตั้งเวลาและส่งโทเค็นของมันไปยังSendMessageAsyncจับOperationCanceledExceptionเพื่อจัดการกับการหมดเวลา.ข้อผิดพลาดทั่วไปที่ควรระวังคืออะไร? การขาดใบอนุญาต, การสร้างหลายอินสแตนซ์ของ API พร้อมกัน, และการโหลดโมเดลครั้งแรกที่ช้าเป็นปัญหาที่พบบ่อยที่สุด. ทำตามขั้นตอนการบรรเทาที่อธิบายไว้ข้างต้น.
ตัวอย่างโค้ดพร้อมสำหรับการผลิตหรือไม่? ส่วนโค้ดเหล่านี้ถูกคัดลอกจากเอกสารอย่างเป็นทางการของ Aspose และยังไม่ได้รับการทดสอบใน sandbox. ทดสอบในสภาพแวดล้อมของคุณเองและเพิ่มการจัดการข้อผิดพลาดที่แข็งแรงก่อนนำไปใช้งาน.
