# NativeLibraryConfig Namespace: LLama.Native Allows configuration of the native llama.cpp libraries to load and use. All configuration must be done before using **any** other LLamaSharp methods! ```csharp public sealed class NativeLibraryConfig ``` Inheritance [Object](https://docs.microsoft.com/en-us/dotnet/api/system.object) → [NativeLibraryConfig](./llama.native.nativelibraryconfig.md) ## Properties ### **Instance** Get the config instance ```csharp public static NativeLibraryConfig Instance { get; } ``` #### Property Value [NativeLibraryConfig](./llama.native.nativelibraryconfig.md)
### **LibraryHasLoaded** Check if the native library has already been loaded. Configuration cannot be modified if this is true. ```csharp public static bool LibraryHasLoaded { get; internal set; } ``` #### Property Value [Boolean](https://docs.microsoft.com/en-us/dotnet/api/system.boolean)
## Methods ### **WithLibrary(String, String)** Load a specified native library as backend for LLamaSharp. When this method is called, all the other configurations will be ignored. ```csharp public NativeLibraryConfig WithLibrary(string llamaPath, string llavaPath) ``` #### Parameters `llamaPath` [String](https://docs.microsoft.com/en-us/dotnet/api/system.string)
The full path to the llama library to load. `llavaPath` [String](https://docs.microsoft.com/en-us/dotnet/api/system.string)
The full path to the llava library to load. #### Returns [NativeLibraryConfig](./llama.native.nativelibraryconfig.md)
#### Exceptions [InvalidOperationException](https://docs.microsoft.com/en-us/dotnet/api/system.invalidoperationexception)
Thrown if `LibraryHasLoaded` is true. ### **WithCuda(Boolean)** Configure whether to use cuda backend if possible. ```csharp public NativeLibraryConfig WithCuda(bool enable) ``` #### Parameters `enable` [Boolean](https://docs.microsoft.com/en-us/dotnet/api/system.boolean)
#### Returns [NativeLibraryConfig](./llama.native.nativelibraryconfig.md)
#### Exceptions [InvalidOperationException](https://docs.microsoft.com/en-us/dotnet/api/system.invalidoperationexception)
Thrown if `LibraryHasLoaded` is true. ### **WithAvx(AvxLevel)** Configure the prefferred avx support level of the backend. ```csharp public NativeLibraryConfig WithAvx(AvxLevel level) ``` #### Parameters `level` [AvxLevel](./llama.native.nativelibraryconfig.avxlevel.md)
#### Returns [NativeLibraryConfig](./llama.native.nativelibraryconfig.md)
#### Exceptions [InvalidOperationException](https://docs.microsoft.com/en-us/dotnet/api/system.invalidoperationexception)
Thrown if `LibraryHasLoaded` is true. ### **WithAutoFallback(Boolean)** Configure whether to allow fallback when there's no match for preferred settings. ```csharp public NativeLibraryConfig WithAutoFallback(bool enable) ``` #### Parameters `enable` [Boolean](https://docs.microsoft.com/en-us/dotnet/api/system.boolean)
#### Returns [NativeLibraryConfig](./llama.native.nativelibraryconfig.md)
#### Exceptions [InvalidOperationException](https://docs.microsoft.com/en-us/dotnet/api/system.invalidoperationexception)
Thrown if `LibraryHasLoaded` is true. ### **SkipCheck(Boolean)** Whether to skip the check when you don't allow fallback. This option may be useful under some complex conditions. For example, you're sure you have your cublas configured but LLamaSharp take it as invalid by mistake. ```csharp public NativeLibraryConfig SkipCheck(bool enable) ``` #### Parameters `enable` [Boolean](https://docs.microsoft.com/en-us/dotnet/api/system.boolean)
#### Returns [NativeLibraryConfig](./llama.native.nativelibraryconfig.md)
#### Exceptions [InvalidOperationException](https://docs.microsoft.com/en-us/dotnet/api/system.invalidoperationexception)
Thrown if `LibraryHasLoaded` is true. ### **WithLogs(Boolean)** Whether to output the logs to console when loading the native library with your configuration. ```csharp public NativeLibraryConfig WithLogs(bool enable) ``` #### Parameters `enable` [Boolean](https://docs.microsoft.com/en-us/dotnet/api/system.boolean)
#### Returns [NativeLibraryConfig](./llama.native.nativelibraryconfig.md)
#### Exceptions [InvalidOperationException](https://docs.microsoft.com/en-us/dotnet/api/system.invalidoperationexception)
Thrown if `LibraryHasLoaded` is true. ### **WithLogs(LLamaLogLevel)** Enable console logging with the specified log logLevel. ```csharp public NativeLibraryConfig WithLogs(LLamaLogLevel logLevel) ``` #### Parameters `logLevel` [LLamaLogLevel](./llama.native.llamaloglevel.md)
#### Returns [NativeLibraryConfig](./llama.native.nativelibraryconfig.md)
#### Exceptions [InvalidOperationException](https://docs.microsoft.com/en-us/dotnet/api/system.invalidoperationexception)
Thrown if `LibraryHasLoaded` is true. ### **WithSearchDirectories(IEnumerable<String>)** Add self-defined search directories. Note that the file stucture of the added directories must be the same as the default directory. Besides, the directory won't be used recursively. ```csharp public NativeLibraryConfig WithSearchDirectories(IEnumerable directories) ``` #### Parameters `directories` [IEnumerable<String>](https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1)
#### Returns [NativeLibraryConfig](./llama.native.nativelibraryconfig.md)
### **WithSearchDirectory(String)** Add self-defined search directories. Note that the file stucture of the added directories must be the same as the default directory. Besides, the directory won't be used recursively. ```csharp public NativeLibraryConfig WithSearchDirectory(string directory) ``` #### Parameters `directory` [String](https://docs.microsoft.com/en-us/dotnet/api/system.string)
#### Returns [NativeLibraryConfig](./llama.native.nativelibraryconfig.md)
### **CheckAndGatherDescription(LibraryName)** ```csharp internal static Description CheckAndGatherDescription(LibraryName library) ``` #### Parameters `library` [LibraryName](./llama.native.libraryname.md)
#### Returns [Description](./llama.native.nativelibraryconfig.description.md)
### **AvxLevelToString(AvxLevel)** ```csharp internal static string AvxLevelToString(AvxLevel level) ``` #### Parameters `level` [AvxLevel](./llama.native.nativelibraryconfig.avxlevel.md)
#### Returns [String](https://docs.microsoft.com/en-us/dotnet/api/system.string)