需要快速在 .NET 應用程式中加入會話式 AI 體驗嗎?使用 Aspose.LLM,您可以建立簡單的聊天,而無需明確建立或管理會話 ID。SendMessageAsync 會自動使用當前會話,允許連續的訊息共享對話上下文。

此模式適用於一次一次的對話,包括 CLI 工具、原型、腳本以及其他簡單的應用程式。

當 Simple Chat 是正確的選擇

隱式會話模式非常適合於:

  • 單一問答。
  • 簡短的來回對話。
  • CLI 應用程式與腳本。
  • 原型。
  • 每次只能啟動一個對話的應用程式。

如果您的應用程式需要多個獨立的對話——例如,為多位使用者提供服務的聊天機器人——則應改用 Aspose.LLM 的顯式會話 API。

在不管理會話的情況下發送訊息

核心訊息模式刻意保持簡潔:

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

您不需要建立會話 ID、在呼叫之間傳遞它,或明確附加對話歷史。相同的 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,將其 token 傳遞給 SendMessageAsync,並在請求被取消時捕獲 OperationCanceledException。 fileciteturn0file0L151-L180

在 ASP.NET Core 應用程式中,您也可以傳遞請求的取消令牌,以便在客戶端斷開連線時停止生成。

Common Issues

問題檢查項目
Not licensed for this method確保在呼叫 SendMessageAsync 之前已載入授權。
Multiple AsposeLLMApi instances重複使用單一實例並正確釋放它。
Slow first response在全新機器上,首次模型/引擎下載可能需要數分鐘。

來源明確記錄了授權錯誤、單一活動實例行為,以及較慢的首次模型載入。 fileciteturn0file0L249-L255

簡易聊天 vs. 明確會話

隱式會話方法被刻意限制:它透過在 AsposeLLMApi 實例上維持單一當前對話,保持實作規模小。

如果您需要…使用
單一對話SendMessageAsync
短暫互動聊天SendMessageAsync
CLI 或原型SendMessageAsync
多個獨立對話顯式會話
多使用者或同時聊天顯式會話
持久對話狀態會話持久性

當一次對話足夠時,使用隱式訊息傳遞。當您需要獨立的對話、同時使用者、持久狀態或對會話身份有更多控制時,請改用顯式會話 API。現有來源建議在同時對話和持久狀態的情況下使用顯式會話。 fileciteturn0file0L266-L274

對於明確會話方法,請參閱 Aspose.LLM 文檔和多回合/會話 API。

取得免費授權

Aspose 提供臨時授權以供評估。從 Aspose 臨時授權頁面 取得一個,並將 Aspose.LLM.lic 檔案放置在應用程式可以載入的地方。

免費的其他資源

結論

使用 Aspose.LLM 構建簡單的 AI 聊天不需要明確的會話管理。只需建立一個 AsposeLLMApi 實例並呼叫 SendMessageAsync,即可構建對話體驗,讓 API 自動維持當前會話。

對於簡單的應用程式、原型、腳本以及單一使用者聊天體驗,這樣可以保持實作最小化。當您的應用程式成長到支援多個對話或需要明確的會話控制時,您可以轉向基於會話的 API。

常見問題

  1. 我需要手動管理與 Aspose.LLM 的聊天會話嗎? 不需要。隱式會話 SendMessageAsync 方法會在 AsposeLLMApi 實例的生命週期內自動追蹤對話狀態。

  2. 我可以只對單一問題更改模型行為嗎? 是的。提供不同的預設(例如,較低的 temperature)作為 preset 參數傳遞給 SendMessageAsync。只有該呼叫會使用新的設定。

  3. 如何停止長時間運行的生成?
    建立具有逾時時間的 CancellationTokenSource,並將其 token 傳遞給 SendMessageAsync。捕獲 OperationCanceledException 以處理逾時。

  4. 我應該注意哪些常見錯誤? 缺少授權、同時建立多個 API 實例以及首次模型載入緩慢是最常見的問題。請遵循上面描述的緩解步驟。

  5. 範例程式碼是否已準備好投入生產? 這些程式碼片段取自 Aspose 官方文件,尚未在沙盒中測試。請在自己的環境中測試,並在部署前加入完善的錯誤處理。

閱讀更多