diff --git a/LLama.KernelMemory/BuilderExtensions.cs b/LLama.KernelMemory/BuilderExtensions.cs index 84e29862..3f50f22a 100644 --- a/LLama.KernelMemory/BuilderExtensions.cs +++ b/LLama.KernelMemory/BuilderExtensions.cs @@ -94,5 +94,31 @@ namespace LLamaSharp.KernelMemory builder.WithLLamaSharpTextGeneration(new LlamaSharpTextGenerator(weights, context, executor, config?.DefaultInferenceParams)); return builder; } + + /// + /// Adds LLamaSharpTextEmbeddingGeneration and LLamaSharpTextGeneration to the KernelMemoryBuilder. Using an already loaded model. + /// + /// The KernelMemoryBuilder instance. + /// + /// + /// The LLamaSharpConfig instance. + /// The KernelMemoryBuilder instance with LLamaSharpTextEmbeddingGeneration and LLamaSharpTextGeneration added. + public static IKernelMemoryBuilder WithLLamaSharpDefaults(this IKernelMemoryBuilder builder, LLamaWeights weights, LLamaContext context, LLamaSharpConfig config) + { + var parameters = new ModelParams(config.ModelPath) + { + ContextSize = config?.ContextSize ?? 2048, + Seed = config?.Seed ?? 0, + GpuLayerCount = config?.GpuLayerCount ?? 20, + EmbeddingMode = true, + MainGpu = config?.MainGpu ?? 0, + SplitMode = config?.SplitMode ?? GPUSplitMode.None, + }; + var executor = new StatelessExecutor(weights, parameters); + var embedder = new LLamaEmbedder(weights, parameters); + builder.WithLLamaSharpTextEmbeddingGeneration(new LLamaSharpTextEmbeddingGenerator(embedder)); + builder.WithLLamaSharpTextGeneration(new LlamaSharpTextGenerator(weights, context, executor, config?.DefaultInferenceParams)); + return builder; + } } }