using Spectre.Console; using LLama.Examples.Examples; public class ExampleRunner { private static readonly Dictionary> Examples = new() { { "Chat Session: History", ChatSessionWithHistory.Run }, { "Chat Session: Role names", ChatSessionWithRoleName.Run }, { "Chat Session: Role names stripped", ChatSessionStripRoleName.Run }, { "Chat Session: Pre-processing and reset", ChatSessionWithRestart.Run }, { "Chat Session: Coding Assistant", CodingAssistant.Run }, { "Chat Session: Automatic conversation", TalkToYourself.Run }, { "Chat Session: Chinese characters", ChatChineseGB2312.Run }, { "Executor: Interactive mode chat", InteractiveModeExecute.Run }, { "Executor: Llava Interactive mode chat", LlavaInteractiveModeExecute.Run }, { "Executor: Instruct mode chat", InstructModeExecute.Run }, { "Executor: Stateless mode chat", StatelessModeExecute.Run }, { "Save and Load: chat session", SaveAndLoadSession.Run }, { "Save and Load: state of model and executor", LoadAndSaveState.Run }, { "LLama Model: Get embeddings", () => Task.Run(GetEmbeddings.Run) }, { "LLama Model: Quantize", () => Task.Run(QuantizeModel.Run) }, { "Grammar: Constrain response to json format", GrammarJsonResponse.Run }, { "Kernel Memory: Document Q&A", KernelMemory.Run }, { "Kernel Memory: Save and Load", KernelMemorySaveAndLoad.Run }, { "Semantic Kernel: Prompt", SemanticKernelPrompt.Run }, { "Semantic Kernel: Chat", SemanticKernelChat.Run }, { "Semantic Kernel: Store", SemanticKernelMemory.Run }, { "Batched Executor: Fork", BatchedExecutorFork.Run }, { "Batched Executor: Rewind", BatchedExecutorRewind.Run }, { "Batched Executor: Guidance", BatchedExecutorGuidance.Run }, { "Exit", () => { Environment.Exit(0); return Task.CompletedTask; } } }; public static async Task Run() { AnsiConsole.Write(new Rule("LLamaSharp Examples")); while (true) { var choice = AnsiConsole.Prompt( new SelectionPrompt() .Title("Please choose[green] an example[/] to run: ") .AddChoices(Examples.Keys)); if (Examples.TryGetValue(choice, out var example)) { AnsiConsole.Write(new Rule(choice)); await example(); } AnsiConsole.Reset(); AnsiConsole.MarkupLine("Press ENTER to go to the main menu..."); Console.ReadLine(); AnsiConsole.Clear(); } } }