Potřebujete rychlý způsob, jak přidat konverzační AI do aplikace .NET? S Aspose.LLM můžete vytvořit jednoduchý chat, aniž byste explicitně vytvářeli nebo spravovali ID relací. SendMessageAsync automaticky používá aktuální relaci, což umožňuje následným zprávám sdílet kontext konverzace.
Tento vzor je užitečný pro jednu konverzaci najednou, včetně nástrojů CLI, prototypů, skriptů a dalších jednoduchých aplikací.
Když je Simple Chat tou správnou volbou
Implicitní vzor relace je vhodný pro:
- Jedna otázka a odpověď.
- Krátká výměna otázek a odpovědí.
- CLI aplikace a skripty.
- Prototypy.
- Aplikace, kde může být aktivní pouze jedna konverzace najednou.
Pokud vaše aplikace potřebuje více nezávislých konverzací — například chatbot obsluhující více uživatelů — měli byste místo toho použít explicitní session API služby Aspose.LLM.
Odeslat zprávu bez správy relace
Jádrový vzor zpráv je úmyslně malý:
string reply = await api.SendMessageAsync("What is 2 + 2?");
Console.WriteLine(reply);
Když provedete následná volání na stejném AsposeLLMApi instanci, patří do stejné aktuální konverzace:
await api.SendMessageAsync("My name is Alice.");
string reply = await api.SendMessageAsync("What is my name?");
Console.WriteLine(reply);
Nevytváříte ID relace, nepředáváte jej mezi voláními ani výslovně nepřidáváte historii konverzace. Stejná instance AsposeLLMApi pro vás udržuje aktuální konverzaci. Existující zdroj dokumentuje toto chování jako implicitní relaci udržovanou po celou dobu životnosti instance API. fileciteturn0file0L29-L34
Kompletní nastavení stále vyžaduje licencovanou instanci API a předvolbu. Vzorový příklad používá Aspose.LLM.License, Qwen25Preset a AsposeLLMApi.Create(preset). fileciteturn0file0L87-L122
Vytvořte interaktivní konzolový chat
Po pochopení základního vzoru zpráv jej přetvoříme na malou interaktivní konzolovou aplikaci.
Důležitá část je vytvořit API jednou a poté jej znovu použít pro každou zprávu:
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}");
}
}
}
}
Tento příklad udržuje chat jednoduchý:
- Instance API je vytvořena jednou.
- Každé volání
SendMessageAsyncpoužívá stejnou implicitní relaci. - Předchozí zprávy zůstávají pro model dostupné.
- Smyčka poskytuje přirozený dialog zpět a vpřed.
- Výjimky jsou zpracovány pro každou zprávu, takže jeden neúspěšný požadavek neukončí aplikaci.
Zdrojový příklad používá stejnou strukturu a poznamenává, že jediná instance API zachovává kontext napříč iteracemi. fileciteturn0file0L192-L245
Pro spuštění vytvořte .NET konzolový projekt, nahraďte vygenerovaný Program.cs a spusťte:
dotnet new console
dotnet run
Aspose.LLM poskytuje vysoceúrovňovou třídu AsposeLLMApi, která abstrahuje načítání modelu, tokenizaci a inferenci. Pro začátek nainstalujte balíček NuGet:
Install-Package Aspose.LLM
Přizpůsobte jednu zprávu s jiným přednastavením
Co když většina vaší konverzace by měla používat výchozí chování, ale jedna konkrétní otázka potřebuje determinističtější odpověď?
Můžete předat jiné přednastavení do SendMessageAsync pro toto volání:
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);
Přepsání se vztahuje pouze na toto volání. Výchozí předvolba API zůstává nezměněna a podkladová relace nadále poskytuje kontext konverzace. fileciteturn0file0L126‑L159
Nízká teplota, například 0.1f, způsobuje, že vzorkování je determinističtější, což může být užitečné pro otázky, kde chcete menší variaci v generované odpovědi. fileciteturn0file0L155-L159
Chraňte dlouho běžící požadavky chatu pomocí zrušení
Lokální inferenční model může trvat déle u velkých promptů nebo delších odpovědí. Můžete zabránit tomu, aby jednotlivý požadavek běžel nekonečně, tím že předáte CancellationToken.
Například nastavte časový limit 30 sekund:
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.");
}
Zdroj dokumentuje stejný vzor: vytvořte CancellationTokenSource s časovým limitem, předávejte jeho token metodě SendMessageAsync a zachyťte OperationCanceledException, když je požadavek zrušen. fileciteturn0file0L151-L180
V aplikaci ASP.NET Core můžete také předat token pro zrušení požadavku, aby se generování mohlo zastavit, když se klient odpojí.
Časté problémy
| Problém | Co zkontrolovat |
|---|---|
Not licensed for this method | Ujistěte se, že licence je načtena před voláním SendMessageAsync. |
Multiple AsposeLLMApi instances | Znovu použijte jedinou instanci a správně ji uvolněte. |
| Slow first response | Počáteční stažení modelu/enginu může na novém počítači trvat několik minut. |
Zdroj konkrétně dokumentuje chybu licencování, chování s jednou aktivní instancí a pomalejší načtení prvního modelu. fileciteturn0file0L249-L255
Jednoduchý chat vs. explicitní relace
Implicitní přístup sezení je úmyslně omezený: udržuje implementaci malou tím, že na instanci AsposeLLMApi udržuje jednu aktuální konverzaci.
| Pokud potřebujete… | Použít |
|---|---|
| Jedna konverzace | SendMessageAsync |
| Krátký interaktivní chat | SendMessageAsync |
| CLI nebo prototyp | SendMessageAsync |
| Více nezávislých konverzací | Explicit sessions |
| Více uživatelů nebo souběžných chatů | Explicit sessions |
| Trvalý stav konverzace | Session persistence |
Použijte implicitní zprávy, když stačí jedna konverzace. Přepněte na explicitní API relací, pokud potřebujete nezávislé konverzace, souběžné uživatele, trvalý stav nebo větší kontrolu nad identitou relace. Stávající zdroj doporučuje explicitní relace pro souběžné konverzace a trvalý stav. fileciteturn0file0L266-L274
Pro přístup s explicitní relací viz dokumentace Aspose.LLM a multi-turn/session API.
Získat bezplatnou licenci
Aspose nabízí dočasné licence pro hodnocení. Získejte jednu na stránce dočasných licencí Aspose a umístěte soubor Aspose.LLM.lic tam, kde jej může vaše aplikace načíst.
Bezplatné další zdroje
Závěr
Vytvoření jednoduchého AI chatu s Aspose.LLM nevyžaduje explicitní správu relace. Vytvořením jedné instance AsposeLLMApi a voláním SendMessageAsync můžete vytvořit konverzační zážitek, kde API automaticky udržuje aktuální relaci.
Pro jednoduché aplikace, prototypy, skripty a chatové zážitky pro jednoho uživatele to udržuje implementaci na minimu. Když vaše aplikace poroste a bude podporovat více konverzací nebo bude vyžadovat explicitní řízení relace, můžete přejít na API založená na relacích.
Často kladené otázky
Musím spravovat chatové relace ručně s Aspose.LLM?
Ne. Implicit‑sessionSendMessageAsyncmetoda automaticky sleduje stav konverzace po dobu životnosti instanceAsposeLLMApi.Mohu změnit chování modelu jen pro jednu otázku? Ano. Poskytněte jiný přednastavený profil (např. s nižší teplotou) jako argument
presetproSendMessageAsync. Pouze toto volání použije nová nastavení.Jak zastavit dlouho běžící generování? Vytvořte
CancellationTokenSources časovým limitem a předávejte jeho token metoděSendMessageAsync. ZachyťteOperationCanceledExceptionpro zpracování časového limitu.Jaké běžné chyby bych měl sledovat? Chybějící licence, vytváření více instancí API současně a pomalé načtení prvního modelu jsou nejčastější problémy. Postupujte podle výše popsaných kroků zmírnění.
Je ukázkový kód připraven pro produkci? Úryvky jsou převzaty z oficiální dokumentace Aspose a nebyly testovány v sandboxu. Otestujte je ve svém prostředí a přidejte robustní zpracování chyb před nasazením.
