mirror of
https://github.com/nomic-ai/gpt4all
synced 2024-11-08 07:10:32 +00:00
109 lines
4.6 KiB
C#
109 lines
4.6 KiB
C#
using System.Runtime.InteropServices;
|
|
|
|
namespace Gpt4All.Bindings;
|
|
|
|
public unsafe partial struct llmodel_prompt_context
|
|
{
|
|
public float* logits;
|
|
|
|
[NativeTypeName("size_t")]
|
|
public nuint logits_size;
|
|
|
|
[NativeTypeName("int32_t *")]
|
|
public int* tokens;
|
|
|
|
[NativeTypeName("size_t")]
|
|
public nuint tokens_size;
|
|
|
|
[NativeTypeName("int32_t")]
|
|
public int n_past;
|
|
|
|
[NativeTypeName("int32_t")]
|
|
public int n_ctx;
|
|
|
|
[NativeTypeName("int32_t")]
|
|
public int n_predict;
|
|
|
|
[NativeTypeName("int32_t")]
|
|
public int top_k;
|
|
|
|
public float top_p;
|
|
|
|
public float temp;
|
|
|
|
[NativeTypeName("int32_t")]
|
|
public int n_batch;
|
|
|
|
public float repeat_penalty;
|
|
|
|
[NativeTypeName("int32_t")]
|
|
public int repeat_last_n;
|
|
|
|
public float context_erase;
|
|
}
|
|
#pragma warning disable CA2101
|
|
internal static unsafe partial class NativeMethods
|
|
{
|
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
|
[return: MarshalAs(UnmanagedType.I1)]
|
|
public delegate bool LlmodelResponseCallback(int token_id, [MarshalAs(UnmanagedType.LPUTF8Str)] string response);
|
|
|
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
|
[return: MarshalAs(UnmanagedType.I1)]
|
|
public delegate bool LlmodelPromptCallback(int token_id);
|
|
|
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
|
[return: MarshalAs(UnmanagedType.I1)]
|
|
public delegate bool LlmodelRecalculateCallback(bool isRecalculating);
|
|
|
|
[DllImport("libllmodel", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, BestFitMapping = false, ThrowOnUnmappableChar = true)]
|
|
[return: NativeTypeName("llmodel_model")]
|
|
public static extern IntPtr llmodel_model_create2(
|
|
[NativeTypeName("const char *")][MarshalAs(UnmanagedType.LPUTF8Str)] string model_path,
|
|
[NativeTypeName("const char *")][MarshalAs(UnmanagedType.LPUTF8Str)] string build_variant,
|
|
out IntPtr error);
|
|
|
|
[DllImport("libllmodel", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
|
public static extern void llmodel_model_destroy([NativeTypeName("llmodel_model")] IntPtr model);
|
|
|
|
[DllImport("libllmodel", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, BestFitMapping = false, ThrowOnUnmappableChar = true)]
|
|
[return: MarshalAs(UnmanagedType.I1)]
|
|
public static extern bool llmodel_loadModel(
|
|
[NativeTypeName("llmodel_model")] IntPtr model,
|
|
[NativeTypeName("const char *")][MarshalAs(UnmanagedType.LPUTF8Str)] string model_path);
|
|
|
|
[DllImport("libllmodel", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
|
|
|
[return: MarshalAs(UnmanagedType.I1)]
|
|
public static extern bool llmodel_isModelLoaded([NativeTypeName("llmodel_model")] IntPtr model);
|
|
|
|
[DllImport("libllmodel", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
|
[return: NativeTypeName("uint64_t")]
|
|
public static extern ulong llmodel_get_state_size([NativeTypeName("llmodel_model")] IntPtr model);
|
|
|
|
[DllImport("libllmodel", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
|
[return: NativeTypeName("uint64_t")]
|
|
public static extern ulong llmodel_save_state_data([NativeTypeName("llmodel_model")] IntPtr model, [NativeTypeName("uint8_t *")] byte* dest);
|
|
|
|
[DllImport("libllmodel", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
|
[return: NativeTypeName("uint64_t")]
|
|
public static extern ulong llmodel_restore_state_data([NativeTypeName("llmodel_model")] IntPtr model, [NativeTypeName("const uint8_t *")] byte* src);
|
|
|
|
[DllImport("libllmodel", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, BestFitMapping = false, ThrowOnUnmappableChar = true)]
|
|
public static extern void llmodel_prompt(
|
|
[NativeTypeName("llmodel_model")] IntPtr model,
|
|
[NativeTypeName("const char *")][MarshalAs(UnmanagedType.LPUTF8Str)] string prompt,
|
|
LlmodelPromptCallback prompt_callback,
|
|
LlmodelResponseCallback response_callback,
|
|
LlmodelRecalculateCallback recalculate_callback,
|
|
ref llmodel_prompt_context ctx);
|
|
|
|
[DllImport("libllmodel", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
|
public static extern void llmodel_setThreadCount([NativeTypeName("llmodel_model")] IntPtr model, [NativeTypeName("int32_t")] int n_threads);
|
|
|
|
[DllImport("libllmodel", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
|
[return: NativeTypeName("int32_t")]
|
|
public static extern int llmodel_threadCount([NativeTypeName("llmodel_model")] IntPtr model);
|
|
}
|
|
#pragma warning restore CA2101
|