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
-}