using LLama.Common; using System.Text; namespace LLama.Unittest { public class StatelessExecutorTest : IDisposable { private readonly LLamaWeights _weights; private readonly ModelParams _params; public StatelessExecutorTest() { _params = new ModelParams("Models/llama-2-7b-chat.ggmlv3.q3_K_S.bin") { ContextSize = 64, Seed = 1754 }; _weights = LLamaWeights.LoadFromFile(_params); } public void Dispose() { _weights.Dispose(); } [Fact] public void Stateless() { var executor = new StatelessExecutor(_weights.CreateContext(_params, Encoding.UTF8)); const string question = "Question. what is a cat?\nAnswer: "; const string expected = " a domestic or wild animal that is typically small to medium-sized, has fur, four legs, and sharp retractable claws."; var @params = new InferenceParams { MaxTokens = 32, AntiPrompts = new[] { "." } }; var result1 = string.Join("", executor.Infer(question, @params)); Assert.Equal(expected, result1); var result2 = string.Join("", executor.Infer(question, @params)); Assert.Equal(expected, result2); Assert.Equal(result1, result2); } [Fact] public void OutOfContext() { var executor = new StatelessExecutor(_weights.CreateContext(_params, Encoding.UTF8)); const string question = "Question. why is a cat the best pet?\nAnswer: "; var @params = new InferenceParams() { MaxTokens = 128, }; var result1 = string.Join("", executor.Infer(question, @params)); } } }