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. fileciteturn0file0L29-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). fileciteturn0file0L87-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í SendMessageAsync použí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. fileciteturn0file0L192-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. fileciteturn0file0L126‑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. fileciteturn0file0L155-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. fileciteturn0file0L151-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émCo zkontrolovat
Not licensed for this methodUjistěte se, že licence je načtena před voláním SendMessageAsync.
Multiple AsposeLLMApi instancesZnovu použijte jedinou instanci a správně ji uvolněte.
Slow first responsePočá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. fileciteturn0file0L249-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 konverzaceSendMessageAsync
Krátký interaktivní chatSendMessageAsync
CLI nebo prototypSendMessageAsync
Více nezávislých konverzacíExplicit sessions
Více uživatelů nebo souběžných chatůExplicit sessions
Trvalý stav konverzaceSession 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. fileciteturn0file0L266-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

  1. Musím spravovat chatové relace ručně s Aspose.LLM?
    Ne. Implicit‑session SendMessageAsync metoda automaticky sleduje stav konverzace po dobu životnosti instance AsposeLLMApi.

  2. Mohu změnit chování modelu jen pro jednu otázku? Ano. Poskytněte jiný přednastavený profil (např. s nižší teplotou) jako argument preset pro SendMessageAsync. Pouze toto volání použije nová nastavení.

  3. Jak zastavit dlouho běžící generování? Vytvořte CancellationTokenSource s časovým limitem a předávejte jeho token metodě SendMessageAsync. Zachyťte OperationCanceledException pro zpracování časového limitu.

  4. 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í.

  5. 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.

Přečtěte si více