You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

BuilderExtensions.cs 4.4 kB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using Microsoft.KernelMemory;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using LLama;
  8. using LLama.Common;
  9. using Microsoft.KernelMemory.AI;
  10. namespace LLamaSharp.KernelMemory
  11. {
  12. /// <summary>
  13. /// Provides extension methods for the KernelMemoryBuilder class.
  14. /// </summary>
  15. public static class BuilderExtensions
  16. {
  17. /// <summary>
  18. /// Adds LLamaSharpTextEmbeddingGeneration to the KernelMemoryBuilder.
  19. /// </summary>
  20. /// <param name="builder">The KernelMemoryBuilder instance.</param>
  21. /// <param name="config">The LLamaSharpConfig instance.</param>
  22. /// <returns>The KernelMemoryBuilder instance with LLamaSharpTextEmbeddingGeneration added.</returns>
  23. public static KernelMemoryBuilder WithLLamaSharpTextEmbeddingGeneration(this KernelMemoryBuilder builder, LLamaSharpConfig config)
  24. {
  25. builder.WithCustomEmbeddingGeneration(new LLamaSharpTextEmbeddingGeneration(config));
  26. return builder;
  27. }
  28. /// <summary>
  29. /// Adds LLamaSharpTextEmbeddingGeneration to the KernelMemoryBuilder.
  30. /// </summary>
  31. /// <param name="builder">The KernelMemoryBuilder instance.</param>
  32. /// <param name="textEmbeddingGeneration">The LLamaSharpTextEmbeddingGeneration instance.</param>
  33. /// <returns>The KernelMemoryBuilder instance with LLamaSharpTextEmbeddingGeneration added.</returns>
  34. public static KernelMemoryBuilder WithLLamaSharpTextEmbeddingGeneration(this KernelMemoryBuilder builder, LLamaSharpTextEmbeddingGeneration textEmbeddingGeneration)
  35. {
  36. builder.WithCustomEmbeddingGeneration(textEmbeddingGeneration);
  37. return builder;
  38. }
  39. /// <summary>
  40. /// Adds LLamaSharpTextGeneration to the KernelMemoryBuilder.
  41. /// </summary>
  42. /// <param name="builder">The KernelMemoryBuilder instance.</param>
  43. /// <param name="config">The LLamaSharpConfig instance.</param>
  44. /// <returns>The KernelMemoryBuilder instance with LLamaSharpTextGeneration added.</returns>
  45. public static KernelMemoryBuilder WithLLamaSharpTextGeneration(this KernelMemoryBuilder builder, LLamaSharpConfig config)
  46. {
  47. builder.WithCustomTextGeneration(new LlamaSharpTextGeneration(config));
  48. return builder;
  49. }
  50. /// <summary>
  51. /// Adds LLamaSharpTextGeneration to the KernelMemoryBuilder.
  52. /// </summary>
  53. /// <param name="builder">The KernelMemoryBuilder instance.</param>
  54. /// <param name="textGeneration">The LlamaSharpTextGeneration instance.</param>
  55. /// <returns>The KernelMemoryBuilder instance with LLamaSharpTextGeneration added.</returns>
  56. public static KernelMemoryBuilder WithLLamaSharpTextGeneration(this KernelMemoryBuilder builder, LlamaSharpTextGeneration textGeneration)
  57. {
  58. builder.WithCustomTextGeneration(textGeneration);
  59. return builder;
  60. }
  61. /// <summary>
  62. /// Adds LLamaSharpTextEmbeddingGeneration and LLamaSharpTextGeneration to the KernelMemoryBuilder.
  63. /// </summary>
  64. /// <param name="builder">The KernelMemoryBuilder instance.</param>
  65. /// <param name="config">The LLamaSharpConfig instance.</param>
  66. /// <returns>The KernelMemoryBuilder instance with LLamaSharpTextEmbeddingGeneration and LLamaSharpTextGeneration added.</returns>
  67. public static KernelMemoryBuilder WithLLamaSharpDefaults(this KernelMemoryBuilder builder, LLamaSharpConfig config)
  68. {
  69. var parameters = new ModelParams(config.ModelPath)
  70. {
  71. ContextSize = config?.ContextSize ?? 2048,
  72. Seed = config?.Seed ?? 0,
  73. GpuLayerCount = config?.GpuLayerCount ?? 20
  74. };
  75. var weights = LLamaWeights.LoadFromFile(parameters);
  76. var context = weights.CreateContext(parameters);
  77. var executor = new StatelessExecutor(weights, parameters);
  78. var embedder = new LLamaEmbedder(weights, parameters);
  79. builder.WithLLamaSharpTextEmbeddingGeneration(new LLamaSharpTextEmbeddingGeneration(embedder));
  80. builder.WithLLamaSharpTextGeneration(new LlamaSharpTextGeneration(weights, context, executor, config?.DefaultInferenceParams));
  81. return builder;
  82. }
  83. }
  84. }