diff --git a/gpt4all-bindings/csharp/.editorconfig b/gpt4all-bindings/csharp/.editorconfig index e94ba6f9..919f066e 100644 --- a/gpt4all-bindings/csharp/.editorconfig +++ b/gpt4all-bindings/csharp/.editorconfig @@ -41,6 +41,8 @@ insert_final_newline = true # IDE0055: Fix formatting dotnet_diagnostic.IDE0055.severity = error +dotnet_diagnostic.CS1573.severity = suggestion +dotnet_diagnostic.CS1591.severity = suggestion # Sort using and Import directives with System.* appearing first dotnet_sort_system_directives_first = true @@ -343,4 +345,4 @@ dotnet_diagnostic.IDE2004.severity = warning [src/{VisualStudio}/**/*.{cs,vb}] # CA1822: Make member static # There is a risk of accidentally breaking an internal API that partners rely on though IVT. -dotnet_code_quality.CA1822.api_surface = private \ No newline at end of file +dotnet_code_quality.CA1822.api_surface = private diff --git a/gpt4all-bindings/csharp/Gpt4All.Samples/Gpt4All.Samples.csproj b/gpt4all-bindings/csharp/Gpt4All.Samples/Gpt4All.Samples.csproj index 543acdc3..39cc0da1 100644 --- a/gpt4all-bindings/csharp/Gpt4All.Samples/Gpt4All.Samples.csproj +++ b/gpt4all-bindings/csharp/Gpt4All.Samples/Gpt4All.Samples.csproj @@ -5,6 +5,7 @@ net7.0 enable enable + true diff --git a/gpt4all-bindings/csharp/Gpt4All.Tests/Gpt4All.Tests.csproj b/gpt4all-bindings/csharp/Gpt4All.Tests/Gpt4All.Tests.csproj index c76eb1b5..05995c90 100644 --- a/gpt4all-bindings/csharp/Gpt4All.Tests/Gpt4All.Tests.csproj +++ b/gpt4all-bindings/csharp/Gpt4All.Tests/Gpt4All.Tests.csproj @@ -5,6 +5,7 @@ enable false + true diff --git a/gpt4all-bindings/csharp/Gpt4All/Bindings/ILLModel.cs b/gpt4all-bindings/csharp/Gpt4All/Bindings/ILLModel.cs index b21b30e4..dc293cae 100644 --- a/gpt4all-bindings/csharp/Gpt4All/Bindings/ILLModel.cs +++ b/gpt4all-bindings/csharp/Gpt4All/Bindings/ILLModel.cs @@ -5,8 +5,6 @@ /// public interface ILLModel : IDisposable { - ModelType ModelType { get; } - ulong GetStateSizeBytes(); int GetThreadCount(); diff --git a/gpt4all-bindings/csharp/Gpt4All/Bindings/LLModel.cs b/gpt4all-bindings/csharp/Gpt4All/Bindings/LLModel.cs index 583380cb..04fbbc5b 100644 --- a/gpt4all-bindings/csharp/Gpt4All/Bindings/LLModel.cs +++ b/gpt4all-bindings/csharp/Gpt4All/Bindings/LLModel.cs @@ -42,16 +42,12 @@ public record ModelRecalculatingEventArgs(bool IsRecalculating); public class LLModel : ILLModel { protected readonly IntPtr _handle; - private readonly ModelType _modelType; private readonly ILogger _logger; private bool _disposed; - public ModelType ModelType => _modelType; - - internal LLModel(IntPtr handle, ModelType modelType, ILogger? logger = null) + internal LLModel(IntPtr handle, ILogger? logger = null) { _handle = handle; - _modelType = modelType; _logger = logger ?? NullLogger.Instance; } @@ -59,10 +55,9 @@ public class LLModel : ILLModel /// Create a new model from a pointer /// /// Pointer to underlying model - /// The model type - public static LLModel Create(IntPtr handle, ModelType modelType, ILogger? logger = null) + public static LLModel Create(IntPtr handle, ILogger? logger = null) { - return new LLModel(handle, modelType, logger: logger); + return new LLModel(handle, logger: logger); } /// @@ -204,12 +199,7 @@ public class LLModel : ILLModel // dispose managed state } - switch (_modelType) - { - default: - Destroy(); - break; - } + Destroy(); _disposed = true; } diff --git a/gpt4all-bindings/csharp/Gpt4All/Gpt4All.csproj b/gpt4all-bindings/csharp/Gpt4All/Gpt4All.csproj index 416ad4a8..d67b9b24 100644 --- a/gpt4all-bindings/csharp/Gpt4All/Gpt4All.csproj +++ b/gpt4all-bindings/csharp/Gpt4All/Gpt4All.csproj @@ -4,6 +4,7 @@ enable enable true + true diff --git a/gpt4all-bindings/csharp/Gpt4All/Model/Gpt4AllModelFactory.cs b/gpt4all-bindings/csharp/Gpt4All/Model/Gpt4AllModelFactory.cs index 9e81e5af..5e668dc2 100644 --- a/gpt4all-bindings/csharp/Gpt4All/Model/Gpt4AllModelFactory.cs +++ b/gpt4all-bindings/csharp/Gpt4All/Model/Gpt4AllModelFactory.cs @@ -3,6 +3,7 @@ using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Logging; using Gpt4All.Bindings; using Gpt4All.LibraryLoader; +using System.Runtime.InteropServices; namespace Gpt4All; @@ -33,10 +34,13 @@ public class Gpt4AllModelFactory : IGpt4AllModelFactory private IGpt4AllModel CreateModel(string modelPath) { - var modelType_ = ModelFileUtils.GetModelTypeFromModelFileHeader(modelPath); - _logger.LogInformation("Creating model path={ModelPath} type={ModelType}", modelPath, modelType_); + _logger.LogInformation("Creating model path={ModelPath}", modelPath); IntPtr error; var handle = NativeMethods.llmodel_model_create2(modelPath, "auto", out error); + if (error != IntPtr.Zero) + { + throw new Exception(Marshal.PtrToStringAnsi(error)); + } _logger.LogDebug("Model created handle=0x{ModelHandle:X8}", handle); _logger.LogInformation("Model loading started"); var loadedSuccessfully = NativeMethods.llmodel_loadModel(handle, modelPath, 2048); @@ -47,7 +51,7 @@ public class Gpt4AllModelFactory : IGpt4AllModelFactory } var logger = _loggerFactory.CreateLogger(); - var underlyingModel = LLModel.Create(handle, modelType_, logger: logger); + var underlyingModel = LLModel.Create(handle, logger: logger); Debug.Assert(underlyingModel.IsLoaded()); diff --git a/gpt4all-bindings/csharp/Gpt4All/Model/ModelFileUtils.cs b/gpt4all-bindings/csharp/Gpt4All/Model/ModelFileUtils.cs deleted file mode 100644 index c508c78c..00000000 --- a/gpt4all-bindings/csharp/Gpt4All/Model/ModelFileUtils.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace Gpt4All; - -public static class ModelFileUtils -{ - private const uint GPTJ_MAGIC = 0x67676d6c; - private const uint LLAMA_MAGIC = 0x67676a74; - private const uint MPT_MAGIC = 0x67676d6d; - - public static ModelType GetModelTypeFromModelFileHeader(string modelPath) - { - using var fileStream = new FileStream(modelPath, FileMode.Open); - using var binReader = new BinaryReader(fileStream); - - var magic = binReader.ReadUInt32(); - - return magic switch - { - GPTJ_MAGIC => ModelType.GPTJ, - LLAMA_MAGIC => ModelType.LLAMA, - MPT_MAGIC => ModelType.MPT, - _ => throw new ArgumentOutOfRangeException($"Invalid model file. magic=0x{magic:X8}"), - }; - } -} diff --git a/gpt4all-bindings/csharp/Gpt4All/Model/ModelOptions.cs b/gpt4all-bindings/csharp/Gpt4All/Model/ModelOptions.cs index 3cca142a..1b7e50b4 100644 --- a/gpt4all-bindings/csharp/Gpt4All/Model/ModelOptions.cs +++ b/gpt4all-bindings/csharp/Gpt4All/Model/ModelOptions.cs @@ -3,6 +3,4 @@ public record ModelOptions { public int Threads { get; init; } = 4; - - public ModelType ModelType { get; init; } = ModelType.GPTJ; } diff --git a/gpt4all-bindings/csharp/Gpt4All/Model/ModelType.cs b/gpt4all-bindings/csharp/Gpt4All/Model/ModelType.cs deleted file mode 100644 index c490d8b1..00000000 --- a/gpt4all-bindings/csharp/Gpt4All/Model/ModelType.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Gpt4All; - -/// -/// The supported model types -/// -public enum ModelType -{ - LLAMA = 0, - GPTJ, - MPT -}