cui-llama.rn 1.4.3 → 1.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/README.md +93 -114
  2. package/android/src/main/CMakeLists.txt +5 -0
  3. package/android/src/main/build-arm64/CMakeCache.txt +429 -0
  4. package/android/src/main/build-arm64/CMakeFiles/3.31.4/CMakeCCompiler.cmake +21 -21
  5. package/android/src/main/build-arm64/CMakeFiles/3.31.4/CMakeCXXCompiler.cmake +101 -0
  6. package/android/src/main/build-arm64/CMakeFiles/3.31.4/CMakeDetermineCompilerABI_C.bin +0 -0
  7. package/android/src/main/build-arm64/CMakeFiles/3.31.4/CMakeDetermineCompilerABI_CXX.bin +0 -0
  8. package/android/src/main/build-arm64/CMakeFiles/CMakeConfigureLog.yaml +376 -0
  9. package/android/src/main/build-arm64/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  10. package/android/src/main/build-arm64/CMakeFiles/Makefile.cmake +165 -0
  11. package/android/src/main/build-arm64/CMakeFiles/Makefile2 +297 -0
  12. package/android/src/main/build-arm64/CMakeFiles/Progress/1 +1 -0
  13. package/android/src/main/build-arm64/CMakeFiles/Progress/2 +1 -0
  14. package/android/src/main/build-arm64/CMakeFiles/Progress/3 +1 -0
  15. package/android/src/main/build-arm64/CMakeFiles/Progress/4 +1 -0
  16. package/android/src/main/build-arm64/CMakeFiles/Progress/5 +1 -0
  17. package/android/src/main/build-arm64/CMakeFiles/Progress/6 +1 -0
  18. package/android/src/main/build-arm64/CMakeFiles/Progress/count.txt +1 -0
  19. package/android/src/main/build-arm64/CMakeFiles/TargetDirectories.txt +8 -0
  20. package/android/src/main/build-arm64/CMakeFiles/cmake.check_cache +1 -0
  21. package/android/src/main/build-arm64/CMakeFiles/progress.marks +1 -0
  22. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-alloc.c.o +0 -0
  23. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-alloc.c.o.d +58 -0
  24. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-backend-reg.cpp.o +0 -0
  25. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-backend-reg.cpp.o.d +756 -0
  26. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-backend.cpp.o +0 -0
  27. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-backend.cpp.o.d +709 -0
  28. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-cpu-aarch64.cpp.o +0 -0
  29. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-cpu-aarch64.cpp.o.d +714 -0
  30. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-cpu-quants.c.o +0 -0
  31. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-cpu-quants.c.o.d +62 -0
  32. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-cpu-traits.cpp.o +0 -0
  33. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-cpu-traits.cpp.o.d +708 -0
  34. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-cpu.c.o +0 -0
  35. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-cpu.c.o.d +113 -0
  36. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-cpu.cpp.o +0 -0
  37. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-cpu.cpp.o.d +713 -0
  38. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-opt.cpp.o +0 -0
  39. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-opt.cpp.o.d +763 -0
  40. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-quants.c.o +0 -0
  41. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-quants.c.o.d +61 -0
  42. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-threading.cpp.o +0 -0
  43. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml-threading.cpp.o.d +707 -0
  44. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml.c.o +0 -0
  45. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/ggml.c.o.d +104 -0
  46. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/gguf.cpp.o +0 -0
  47. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/gguf.cpp.o.d +714 -0
  48. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/log.cpp.o +0 -0
  49. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/D_/dev/react-native/cui-llama.rn/cpp/log.cpp.o.d +723 -0
  50. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/DependInfo.cmake +62 -0
  51. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/build.make +722 -0
  52. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/cmake_clean.cmake +89 -0
  53. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/compiler_depend.make +2 -0
  54. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/compiler_depend.ts +2 -0
  55. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/depend.make +2 -0
  56. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/flags.make +17 -0
  57. package/android/src/main/build-arm64/CMakeFiles/rnllama.dir/progress.make +41 -0
  58. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8.dir/DependInfo.cmake +62 -0
  59. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8.dir/build.make +722 -0
  60. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8.dir/cmake_clean.cmake +89 -0
  61. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8.dir/compiler_depend.make +2 -0
  62. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8.dir/compiler_depend.ts +2 -0
  63. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8.dir/depend.make +2 -0
  64. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8.dir/flags.make +17 -0
  65. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8.dir/progress.make +41 -0
  66. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2.dir/DependInfo.cmake +62 -0
  67. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2.dir/build.make +722 -0
  68. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2.dir/cmake_clean.cmake +89 -0
  69. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2.dir/compiler_depend.make +2 -0
  70. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2.dir/compiler_depend.ts +2 -0
  71. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2.dir/depend.make +2 -0
  72. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2.dir/flags.make +17 -0
  73. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2.dir/progress.make +41 -0
  74. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_dotprod.dir/DependInfo.cmake +62 -0
  75. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_dotprod.dir/build.make +722 -0
  76. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_dotprod.dir/cmake_clean.cmake +89 -0
  77. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_dotprod.dir/compiler_depend.make +2 -0
  78. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_dotprod.dir/compiler_depend.ts +2 -0
  79. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_dotprod.dir/depend.make +2 -0
  80. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_dotprod.dir/flags.make +17 -0
  81. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_dotprod.dir/progress.make +41 -0
  82. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_dotprod_i8mm.dir/DependInfo.cmake +62 -0
  83. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_dotprod_i8mm.dir/build.make +722 -0
  84. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_dotprod_i8mm.dir/cmake_clean.cmake +89 -0
  85. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_dotprod_i8mm.dir/compiler_depend.make +2 -0
  86. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_dotprod_i8mm.dir/compiler_depend.ts +2 -0
  87. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_dotprod_i8mm.dir/depend.make +2 -0
  88. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_dotprod_i8mm.dir/flags.make +17 -0
  89. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_dotprod_i8mm.dir/progress.make +41 -0
  90. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_i8mm.dir/DependInfo.cmake +62 -0
  91. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_i8mm.dir/build.make +722 -0
  92. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_i8mm.dir/cmake_clean.cmake +89 -0
  93. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_i8mm.dir/compiler_depend.make +2 -0
  94. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_i8mm.dir/compiler_depend.ts +2 -0
  95. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_i8mm.dir/depend.make +2 -0
  96. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_i8mm.dir/flags.make +17 -0
  97. package/android/src/main/build-arm64/CMakeFiles/rnllama_v8_2_i8mm.dir/progress.make +41 -0
  98. package/android/src/main/build-arm64/Makefile +1862 -0
  99. package/android/src/main/build-arm64/cmake_install.cmake +66 -0
  100. package/android/src/main/java/com/rnllama/LlamaContext.java +91 -17
  101. package/android/src/main/java/com/rnllama/RNLlama.java +37 -4
  102. package/android/src/main/jni-utils.h +6 -0
  103. package/android/src/main/jni.cpp +287 -31
  104. package/android/src/main/jniLibs/arm64-v8a/librnllama.so +0 -0
  105. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8.so +0 -0
  106. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2.so +0 -0
  107. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_dotprod.so +0 -0
  108. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_dotprod_i8mm.so +0 -0
  109. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_i8mm.so +0 -0
  110. package/android/src/main/jniLibs/x86_64/librnllama.so +0 -0
  111. package/android/src/main/jniLibs/x86_64/librnllama_x86_64.so +0 -0
  112. package/android/src/newarch/java/com/rnllama/RNLlamaModule.java +7 -2
  113. package/android/src/oldarch/java/com/rnllama/RNLlamaModule.java +7 -2
  114. package/cpp/chat-template.hpp +529 -0
  115. package/cpp/chat.cpp +1085 -0
  116. package/cpp/chat.hpp +55 -0
  117. package/cpp/common.cpp +159 -36
  118. package/cpp/common.h +64 -19
  119. package/cpp/ggml-alloc.c +1 -13
  120. package/cpp/ggml-common.h +0 -2
  121. package/cpp/ggml-cpu-impl.h +6 -12
  122. package/cpp/ggml-cpu-quants.c +937 -340
  123. package/cpp/ggml-cpu.c +207 -113
  124. package/cpp/ggml-cpu.cpp +4 -6
  125. package/cpp/ggml-cpu.h +1 -1
  126. package/cpp/ggml-metal.h +66 -66
  127. package/cpp/ggml-metal.m +141 -23
  128. package/cpp/ggml.c +24 -14
  129. package/cpp/ggml.h +2 -2
  130. package/cpp/json-schema-to-grammar.cpp +46 -66
  131. package/cpp/json-schema-to-grammar.h +15 -1
  132. package/cpp/llama-arch.cpp +7 -2
  133. package/cpp/llama-arch.h +3 -1
  134. package/cpp/llama-chat.cpp +10 -1
  135. package/cpp/llama-chat.h +1 -0
  136. package/cpp/llama-grammar.cpp +86 -6
  137. package/cpp/llama-grammar.h +22 -1
  138. package/cpp/llama-impl.h +6 -6
  139. package/cpp/llama-kv-cache.h +1 -1
  140. package/cpp/llama-mmap.h +1 -0
  141. package/cpp/llama-model-loader.cpp +1 -1
  142. package/cpp/llama-model.cpp +32 -6
  143. package/cpp/llama-sampling.cpp +178 -61
  144. package/cpp/llama-vocab.cpp +8 -3
  145. package/cpp/llama.cpp +188 -128
  146. package/cpp/llama.h +27 -10
  147. package/cpp/log.cpp +32 -10
  148. package/cpp/log.h +12 -1
  149. package/cpp/minja.hpp +2883 -0
  150. package/cpp/rn-llama.cpp +82 -5
  151. package/cpp/rn-llama.h +16 -1
  152. package/cpp/sampling.cpp +68 -41
  153. package/cpp/sampling.h +3 -0
  154. package/cpp/sgemm.cpp +9 -8
  155. package/cpp/unicode.cpp +9 -2
  156. package/ios/CMakeLists.txt +6 -0
  157. package/ios/RNLlama.h +0 -8
  158. package/ios/RNLlama.mm +27 -3
  159. package/ios/RNLlamaContext.h +10 -1
  160. package/ios/RNLlamaContext.mm +269 -57
  161. package/jest/mock.js +21 -2
  162. package/lib/commonjs/NativeRNLlama.js.map +1 -1
  163. package/lib/commonjs/grammar.js +3 -0
  164. package/lib/commonjs/grammar.js.map +1 -1
  165. package/lib/commonjs/index.js +87 -13
  166. package/lib/commonjs/index.js.map +1 -1
  167. package/lib/module/NativeRNLlama.js.map +1 -1
  168. package/lib/module/grammar.js +3 -0
  169. package/lib/module/grammar.js.map +1 -1
  170. package/lib/module/index.js +86 -13
  171. package/lib/module/index.js.map +1 -1
  172. package/lib/typescript/NativeRNLlama.d.ts +107 -2
  173. package/lib/typescript/NativeRNLlama.d.ts.map +1 -1
  174. package/lib/typescript/grammar.d.ts.map +1 -1
  175. package/lib/typescript/index.d.ts +32 -7
  176. package/lib/typescript/index.d.ts.map +1 -1
  177. package/llama-rn.podspec +1 -1
  178. package/package.json +3 -2
  179. package/src/NativeRNLlama.ts +115 -3
  180. package/src/grammar.ts +3 -0
  181. package/src/index.ts +138 -21
@@ -3,6 +3,33 @@
3
3
 
4
4
  @implementation RNLlamaContext
5
5
 
6
+ + (void)toggleNativeLog:(BOOL)enabled onEmitLog:(void (^)(NSString *level, NSString *text))onEmitLog {
7
+ if (enabled) {
8
+ void (^copiedBlock)(NSString *, NSString *) = [onEmitLog copy];
9
+ llama_log_set([](lm_ggml_log_level level, const char * text, void * data) {
10
+ llama_log_callback_default(level, text, data);
11
+ NSString *levelStr = @"";
12
+ if (level == LM_GGML_LOG_LEVEL_ERROR) {
13
+ levelStr = @"error";
14
+ } else if (level == LM_GGML_LOG_LEVEL_INFO) {
15
+ levelStr = @"info";
16
+ } else if (level == LM_GGML_LOG_LEVEL_WARN) {
17
+ levelStr = @"warn";
18
+ }
19
+
20
+ NSString *textStr = [NSString stringWithUTF8String:text];
21
+ // NOTE: Convert to UTF-8 string may fail
22
+ if (!textStr) {
23
+ return;
24
+ }
25
+ void (^block)(NSString *, NSString *) = (__bridge void (^)(NSString *, NSString *))(data);
26
+ block(levelStr, textStr);
27
+ }, copiedBlock);
28
+ } else {
29
+ llama_log_set(llama_log_callback_default, nullptr);
30
+ }
31
+ }
32
+
6
33
  + (NSDictionary *)modelInfo:(NSString *)path skip:(NSArray *)skip {
7
34
  struct lm_gguf_init_params params = {
8
35
  /*.no_alloc = */ false,
@@ -57,42 +84,83 @@
57
84
  if (isAsset) path = [[NSBundle mainBundle] pathForResource:modelPath ofType:nil];
58
85
  defaultParams.model = [path UTF8String];
59
86
 
87
+ NSString *chatTemplate = params[@"chat_template"];
88
+ if (chatTemplate) {
89
+ defaultParams.chat_template = [chatTemplate UTF8String];
90
+ NSLog(@"chatTemplate: %@", chatTemplate);
91
+ }
92
+
93
+ NSString *reasoningFormat = params[@"reasoning_format"];
94
+ if (reasoningFormat && [reasoningFormat isEqualToString:@"deepseek"]) {
95
+ defaultParams.reasoning_format = COMMON_REASONING_FORMAT_DEEPSEEK;
96
+ } else {
97
+ defaultParams.reasoning_format = COMMON_REASONING_FORMAT_NONE;
98
+ }
99
+
60
100
  if (params[@"n_ctx"]) defaultParams.n_ctx = [params[@"n_ctx"] intValue];
61
101
  if (params[@"use_mlock"]) defaultParams.use_mlock = [params[@"use_mlock"]boolValue];
62
102
 
103
+ BOOL skipGpuDevices = params[@"no_gpu_devices"] && [params[@"no_gpu_devices"] boolValue];
104
+
63
105
  BOOL isMetalEnabled = false;
64
106
  NSString *reasonNoMetal = @"";
65
107
  defaultParams.n_gpu_layers = 0;
66
- if (params[@"n_gpu_layers"] && [params[@"n_gpu_layers"] intValue] > 0) {
67
108
  #ifdef LM_GGML_USE_METAL
68
- // Check ggml-metal availability
69
- NSError * error = nil;
70
- id<MTLDevice> device = MTLCreateSystemDefaultDevice();
71
- id<MTLLibrary> library = [device
72
- newLibraryWithSource:@"#include <metal_stdlib>\n"
73
- "using namespace metal;"
74
- "kernel void test() { simd_sum(0); }"
75
- options:nil
76
- error:&error
77
- ];
78
- if (error) {
109
+ // Check ggml-metal availability
110
+ NSError * error = nil;
111
+ id<MTLDevice> device = MTLCreateSystemDefaultDevice();
112
+ id<MTLLibrary> library = [device
113
+ newLibraryWithSource:@"#include <metal_stdlib>\n"
114
+ "using namespace metal;"
115
+ "typedef matrix<bfloat, 4, 4> bfloat4x4;"
116
+ "kernel void test() { simd_sum(0); }"
117
+ options:nil
118
+ error:&error
119
+ ];
120
+ if (error) {
121
+ reasonNoMetal = [error localizedDescription];
122
+ skipGpuDevices = true;
123
+ } else {
124
+ id<MTLFunction> kernel = [library newFunctionWithName:@"test"];
125
+ id<MTLComputePipelineState> pipeline = [device newComputePipelineStateWithFunction:kernel error:&error];
126
+ if (pipeline == nil) {
79
127
  reasonNoMetal = [error localizedDescription];
128
+ skipGpuDevices = true;
80
129
  } else {
81
- id<MTLFunction> kernel = [library newFunctionWithName:@"test"];
82
- id<MTLComputePipelineState> pipeline = [device newComputePipelineStateWithFunction:kernel error:&error];
83
- if (pipeline == nil) {
84
- reasonNoMetal = [error localizedDescription];
85
- } else {
86
- defaultParams.n_gpu_layers = [params[@"n_gpu_layers"] intValue];
87
- isMetalEnabled = true;
88
- }
130
+ #if TARGET_OS_SIMULATOR
131
+ // Use the backend, but no layers because not supported fully on simulator
132
+ defaultParams.n_gpu_layers = 0;
133
+ isMetalEnabled = true;
134
+ #else
135
+ defaultParams.n_gpu_layers = [params[@"n_gpu_layers"] intValue];
136
+ isMetalEnabled = true;
137
+ #endif
89
138
  }
90
- device = nil;
139
+ }
140
+ device = nil;
91
141
  #else
92
- reasonNoMetal = @"Metal is not enabled in this build";
93
- isMetalEnabled = false;
142
+ reasonNoMetal = @"Metal is not enabled in this build";
143
+ isMetalEnabled = false;
94
144
  #endif
145
+
146
+ if (skipGpuDevices) {
147
+ std::vector<lm_ggml_backend_dev_t> cpu_devs;
148
+ for (size_t i = 0; i < lm_ggml_backend_dev_count(); ++i) {
149
+ lm_ggml_backend_dev_t dev = lm_ggml_backend_dev_get(i);
150
+ switch (lm_ggml_backend_dev_type(dev)) {
151
+ case LM_GGML_BACKEND_DEVICE_TYPE_CPU:
152
+ case LM_GGML_BACKEND_DEVICE_TYPE_ACCEL:
153
+ cpu_devs.push_back(dev);
154
+ break;
155
+ case LM_GGML_BACKEND_DEVICE_TYPE_GPU:
156
+ break;
157
+ }
158
+ }
159
+ if (cpu_devs.size() > 0) {
160
+ defaultParams.devices = cpu_devs;
161
+ }
95
162
  }
163
+
96
164
  if (params[@"n_batch"]) defaultParams.n_batch = [params[@"n_batch"] intValue];
97
165
  if (params[@"n_ubatch"]) defaultParams.n_ubatch = [params[@"n_ubatch"] intValue];
98
166
  if (params[@"use_mmap"]) defaultParams.use_mmap = [params[@"use_mmap"] boolValue];
@@ -125,7 +193,6 @@
125
193
  const int defaultNThreads = nThreads == 4 ? 2 : MIN(4, maxThreads);
126
194
  defaultParams.cpuparams.n_threads = nThreads > 0 ? nThreads : defaultNThreads;
127
195
 
128
-
129
196
  RNLlamaContext *context = [[RNLlamaContext alloc] init];
130
197
  context->llama = new rnllama::llama_rn_context();
131
198
  context->llama->is_load_interrupted = false;
@@ -218,13 +285,48 @@
218
285
  [meta setValue:valStr forKey:keyStr];
219
286
  }
220
287
 
288
+ auto template_tool_use = llama->templates.template_tool_use.get();
289
+ NSDictionary *tool_use_caps_dir = nil;
290
+ if (template_tool_use) {
291
+ auto tool_use_caps = template_tool_use->original_caps();
292
+ tool_use_caps_dir = @{
293
+ @"tools": @(tool_use_caps.supports_tools),
294
+ @"toolCalls": @(tool_use_caps.supports_tool_calls),
295
+ @"toolResponses": @(tool_use_caps.supports_tool_responses),
296
+ @"systemRole": @(tool_use_caps.supports_system_role),
297
+ @"parallelToolCalls": @(tool_use_caps.supports_parallel_tool_calls),
298
+ @"toolCallId": @(tool_use_caps.supports_tool_call_id)
299
+ };
300
+ }
301
+
302
+ auto default_tmpl = llama->templates.template_default.get();
303
+ auto default_tmpl_caps = default_tmpl->original_caps();
304
+
221
305
  return @{
222
306
  @"desc": [NSString stringWithUTF8String:desc],
223
307
  @"size": @(llama_model_size(llama->model)),
224
308
  @"nEmbd": @(llama_model_n_embd(llama->model)),
225
309
  @"nParams": @(llama_model_n_params(llama->model)),
226
- @"isChatTemplateSupported": @(llama->validateModelChatTemplate()),
227
- @"metadata": meta
310
+ @"chatTemplates": @{
311
+ @"llamaChat": @(llama->validateModelChatTemplate(false, nullptr)),
312
+ @"minja": @{
313
+ @"default": @(llama->validateModelChatTemplate(true, nullptr)),
314
+ @"defaultCaps": @{
315
+ @"tools": @(default_tmpl_caps.supports_tools),
316
+ @"toolCalls": @(default_tmpl_caps.supports_tool_calls),
317
+ @"toolResponses": @(default_tmpl_caps.supports_tool_responses),
318
+ @"systemRole": @(default_tmpl_caps.supports_system_role),
319
+ @"parallelToolCalls": @(default_tmpl_caps.supports_parallel_tool_calls),
320
+ @"toolCallId": @(default_tmpl_caps.supports_tool_call_id)
321
+ },
322
+ @"toolUse": @(llama->validateModelChatTemplate(true, "tool_use")),
323
+ @"toolUseCaps": tool_use_caps_dir ?: @{}
324
+ }
325
+ },
326
+ @"metadata": meta,
327
+
328
+ // deprecated
329
+ @"isChatTemplateSupported": @(llama->validateModelChatTemplate(false, nullptr))
228
330
  };
229
331
  }
230
332
 
@@ -236,18 +338,56 @@
236
338
  return llama->is_predicting;
237
339
  }
238
340
 
239
- - (NSString *)getFormattedChat:(NSArray *)messages withTemplate:(NSString *)chatTemplate {
240
- std::vector<common_chat_msg> chat;
341
+ - (NSDictionary *)getFormattedChatWithJinja:(NSString *)messages
342
+ withChatTemplate:(NSString *)chatTemplate
343
+ withJsonSchema:(NSString *)jsonSchema
344
+ withTools:(NSString *)tools
345
+ withParallelToolCalls:(BOOL)parallelToolCalls
346
+ withToolChoice:(NSString *)toolChoice
347
+ {
348
+ auto tmpl_str = chatTemplate == nil ? "" : [chatTemplate UTF8String];
349
+
350
+ NSMutableDictionary *result = [[NSMutableDictionary alloc] init];
351
+ auto chatParams = llama->getFormattedChatWithJinja(
352
+ [messages UTF8String],
353
+ tmpl_str,
354
+ jsonSchema == nil ? "" : [jsonSchema UTF8String],
355
+ tools == nil ? "" : [tools UTF8String],
356
+ parallelToolCalls,
357
+ toolChoice == nil ? "" : [toolChoice UTF8String]
358
+ );
359
+ result[@"prompt"] = [NSString stringWithUTF8String:chatParams.prompt.get<std::string>().c_str()];
360
+ result[@"chat_format"] = @(static_cast<int>(chatParams.format));
361
+ result[@"grammar"] = [NSString stringWithUTF8String:chatParams.grammar.c_str()];
362
+ result[@"grammar_lazy"] = @(chatParams.grammar_lazy);
363
+ NSMutableArray *grammar_triggers = [[NSMutableArray alloc] init];
364
+ for (const auto & trigger : chatParams.grammar_triggers) {
365
+ [grammar_triggers addObject:@{
366
+ @"word": [NSString stringWithUTF8String:trigger.word.c_str()],
367
+ @"at_start": @(trigger.at_start),
368
+ }];
369
+ }
370
+ result[@"grammar_triggers"] = grammar_triggers;
371
+ NSMutableArray *preserved_tokens = [[NSMutableArray alloc] init];
372
+ for (const auto & token : chatParams.preserved_tokens) {
373
+ [preserved_tokens addObject:[NSString stringWithUTF8String:token.c_str()]];
374
+ }
375
+ result[@"preserved_tokens"] = preserved_tokens;
376
+ NSMutableArray *additional_stops = [[NSMutableArray alloc] init];
377
+ for (const auto & stop : chatParams.additional_stops) {
378
+ [additional_stops addObject:[NSString stringWithUTF8String:stop.c_str()]];
379
+ }
380
+ result[@"additional_stops"] = additional_stops;
241
381
 
242
- for (NSDictionary *msg in messages) {
243
- std::string role = [[msg objectForKey:@"role"] UTF8String];
244
- std::string content = [[msg objectForKey:@"content"] UTF8String];
245
- chat.push_back({ role, content });
246
- }
382
+ return result;
383
+ }
247
384
 
248
- auto tmpl = chatTemplate == nil ? "" : [chatTemplate UTF8String];
249
- auto formatted_chat = common_chat_apply_template(llama->model, tmpl, chat, true);
250
- return [NSString stringWithUTF8String:formatted_chat.c_str()];
385
+ - (NSString *)getFormattedChat:(NSString *)messages withChatTemplate:(NSString *)chatTemplate {
386
+ auto tmpl_str = chatTemplate == nil ? "" : [chatTemplate UTF8String];
387
+ return [NSString stringWithUTF8String:llama->getFormattedChat(
388
+ [messages UTF8String],
389
+ tmpl_str
390
+ ).c_str()];;
251
391
  }
252
392
 
253
393
  - (NSArray *)tokenProbsToDict:(std::vector<rnllama::completion_token_output>)probs {
@@ -321,6 +461,8 @@
321
461
  if (params[@"dry_allowed_length"]) sparams.dry_allowed_length = [params[@"dry_allowed_length"] intValue];
322
462
  if (params[@"dry_penalty_last_n"]) sparams.dry_penalty_last_n = [params[@"dry_penalty_last_n"] intValue];
323
463
 
464
+ if (params[@"top_n_sigma"]) sparams.top_n_sigma = [params[@"top_n_sigma"] doubleValue];
465
+
324
466
  // dry break seq
325
467
  if (params[@"dry_sequence_breakers"] && [params[@"dry_sequence_breakers"] isKindOfClass:[NSArray class]]) {
326
468
  NSArray *dry_sequence_breakers = params[@"dry_sequence_breakers"];
@@ -333,6 +475,45 @@
333
475
  sparams.grammar = [params[@"grammar"] UTF8String];
334
476
  }
335
477
 
478
+ if (params[@"json_schema"] && !params[@"grammar"]) {
479
+ sparams.grammar = json_schema_to_grammar(json::parse([params[@"json_schema"] UTF8String]));
480
+ }
481
+
482
+ if (params[@"grammar_lazy"]) {
483
+ sparams.grammar_lazy = [params[@"grammar_lazy"] boolValue];
484
+ }
485
+
486
+ if (params[@"grammar_triggers"] && [params[@"grammar_triggers"] isKindOfClass:[NSArray class]]) {
487
+ NSArray *grammar_triggers = params[@"grammar_triggers"];
488
+ for (NSDictionary *grammar_trigger in grammar_triggers) {
489
+ common_grammar_trigger trigger;
490
+ trigger.word = [grammar_trigger[@"word"] UTF8String];
491
+ trigger.at_start = [grammar_trigger[@"at_start"] boolValue];
492
+
493
+ auto ids = common_tokenize(llama->ctx, trigger.word, /* add_special= */ false, /* parse_special= */ true);
494
+ if (ids.size() == 1) {
495
+ // LOG_DBG("Grammar trigger token: %d (`%s`)\n", ids[0], trigger.word.c_str());
496
+ sparams.grammar_trigger_tokens.push_back(ids[0]);
497
+ sparams.preserved_tokens.insert(ids[0]);
498
+ continue;
499
+ }
500
+ // LOG_DBG("Grammar trigger word: `%s`\n", trigger.word.c_str());
501
+ sparams.grammar_trigger_words.push_back(trigger);
502
+ }
503
+ }
504
+
505
+ if (params[@"preserved_tokens"] && [params[@"preserved_tokens"] isKindOfClass:[NSArray class]]) {
506
+ NSArray *preserved_tokens = params[@"preserved_tokens"];
507
+ for (NSString *token in preserved_tokens) {
508
+ auto ids = common_tokenize(llama->ctx, [token UTF8String], /* add_special= */ false, /* parse_special= */ true);
509
+ if (ids.size() == 1) {
510
+ sparams.preserved_tokens.insert(ids[0]);
511
+ } else {
512
+ // LOG_WRN("Not preserved because more than 1 token (wrong chat template override?): %s\n", [token UTF8String]);
513
+ }
514
+ }
515
+ }
516
+
336
517
  llama->params.antiprompt.clear();
337
518
  if (params[@"stop"]) {
338
519
  NSArray *stop = params[@"stop"];
@@ -434,29 +615,60 @@
434
615
  llama->is_predicting = false;
435
616
 
436
617
  const auto timings = llama_perf_context(llama->ctx);
437
- return @{
438
- @"text": [NSString stringWithUTF8String:llama->generated_text.c_str()],
439
- @"completion_probabilities": [self tokenProbsToDict:llama->generated_token_probs],
440
- @"tokens_predicted": @(llama->num_tokens_predicted),
441
- @"tokens_evaluated": @(llama->num_prompt_tokens),
442
- @"truncated": @(llama->truncated),
443
- @"stopped_eos": @(llama->stopped_eos),
444
- @"stopped_word": @(llama->stopped_word),
445
- @"stopped_limit": @(llama->stopped_limit),
446
- @"stopping_word": [NSString stringWithUTF8String:llama->stopping_word.c_str()],
447
- @"tokens_cached": @(llama->n_past),
448
- @"timings": @{
449
- @"prompt_n": @(timings.n_p_eval),
450
- @"prompt_ms": @(timings.t_p_eval_ms),
451
- @"prompt_per_token_ms": @(timings.t_p_eval_ms / timings.n_p_eval),
452
- @"prompt_per_second": @(1e3 / timings.t_p_eval_ms * timings.n_p_eval),
453
-
454
- @"predicted_n": @(timings.n_eval),
455
- @"predicted_ms": @(timings.t_eval_ms),
456
- @"predicted_per_token_ms": @(timings.t_eval_ms / timings.n_eval),
457
- @"predicted_per_second": @(1e3 / timings.t_eval_ms * timings.n_eval),
618
+
619
+ NSMutableArray *toolCalls = nil;
620
+ NSString *reasoningContent = nil;
621
+ NSString *content = nil;
622
+ if (!llama->is_interrupted) {
623
+ try {
624
+ auto chat_format = params[@"chat_format"] ? [params[@"chat_format"] intValue] : COMMON_CHAT_FORMAT_CONTENT_ONLY;
625
+ common_chat_msg message = common_chat_parse(llama->generated_text, static_cast<common_chat_format>(chat_format));
626
+ if (!message.reasoning_content.empty()) {
627
+ reasoningContent = [NSString stringWithUTF8String:message.reasoning_content.c_str()];
628
+ }
629
+ content = [NSString stringWithUTF8String:message.content.c_str()];
630
+ toolCalls = [[NSMutableArray alloc] init];
631
+ for (const auto &tc : message.tool_calls) {
632
+ [toolCalls addObject:@{
633
+ @"type": @"function",
634
+ @"function": @{
635
+ @"name": [NSString stringWithUTF8String:tc.name.c_str()],
636
+ @"arguments": [NSString stringWithUTF8String:tc.arguments.c_str()],
637
+ },
638
+ @"id": tc.id.empty() ? [NSNull null] : [NSString stringWithUTF8String:tc.id.c_str()],
639
+ }];
640
+ }
641
+ } catch (const std::exception &e) {
642
+ // NSLog(@"Error parsing tool calls: %s", e.what());
458
643
  }
644
+ }
645
+
646
+ NSMutableDictionary *result = [[NSMutableDictionary alloc] init];
647
+ result[@"text"] = [NSString stringWithUTF8String:llama->generated_text.c_str()]; // Original text
648
+ if (content) result[@"content"] = content;
649
+ if (reasoningContent) result[@"reasoning_content"] = reasoningContent;
650
+ if (toolCalls && toolCalls.count > 0) result[@"tool_calls"] = toolCalls;
651
+ result[@"completion_probabilities"] = [self tokenProbsToDict:llama->generated_token_probs];
652
+ result[@"tokens_predicted"] = @(llama->num_tokens_predicted);
653
+ result[@"tokens_evaluated"] = @(llama->num_prompt_tokens);
654
+ result[@"truncated"] = @(llama->truncated);
655
+ result[@"stopped_eos"] = @(llama->stopped_eos);
656
+ result[@"stopped_word"] = @(llama->stopped_word);
657
+ result[@"stopped_limit"] = @(llama->stopped_limit);
658
+ result[@"stopping_word"] = [NSString stringWithUTF8String:llama->stopping_word.c_str()];
659
+ result[@"tokens_cached"] = @(llama->n_past);
660
+ result[@"timings"] = @{
661
+ @"prompt_n": @(timings.n_p_eval),
662
+ @"prompt_ms": @(timings.t_p_eval_ms),
663
+ @"prompt_per_token_ms": @(timings.t_p_eval_ms / timings.n_p_eval),
664
+ @"prompt_per_second": @(1e3 / timings.t_p_eval_ms * timings.n_p_eval),
665
+ @"predicted_n": @(timings.n_eval),
666
+ @"predicted_n": @(timings.n_eval),
667
+ @"predicted_ms": @(timings.t_eval_ms),
668
+ @"predicted_per_token_ms": @(timings.t_eval_ms / timings.n_eval),
669
+ @"predicted_per_second": @(1e3 / timings.t_eval_ms * timings.n_eval),
459
670
  };
671
+ return result;
460
672
  }
461
673
 
462
674
  - (void)stopCompletion {
package/jest/mock.js CHANGED
@@ -18,12 +18,31 @@ if (!NativeModules.RNLlama) {
18
18
  'general.architecture': 'llama',
19
19
  'llama.embedding_length': 768,
20
20
  },
21
+ chatTemplates: {
22
+ llamaChat: true,
23
+ minja: {
24
+ default: true,
25
+ defaultCaps: {
26
+ parallelToolCalls: false,
27
+ systemRole: true,
28
+ toolCallId: false,
29
+ toolCalls: false,
30
+ toolResponses: false,
31
+ tools: false,
32
+ },
33
+ toolUse: false,
34
+ },
35
+ },
21
36
  },
22
37
  }),
23
38
  ),
24
39
 
25
- // TODO: Use jinja parser
26
- getFormattedChat: jest.fn(() => ''),
40
+ getFormattedChat: jest.fn(async (messages, chatTemplate, options) => {
41
+ if (options.jinja) {
42
+ return { prompt: '', chat_format: 0 }
43
+ }
44
+ return ''
45
+ }),
27
46
 
28
47
  completion: jest.fn(async (contextId, jobId) => {
29
48
  const testResult = {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_default","TurboModuleRegistry","get","exports","default"],"sourceRoot":"..\\..\\src","sources":["NativeRNLlama.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAkD,IAAAC,QAAA,GAsTnCC,gCAAmB,CAACC,GAAG,CAAO,SAAS,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAJ,QAAA"}
1
+ {"version":3,"names":["_reactNative","require","_default","TurboModuleRegistry","get","exports","default"],"sourceRoot":"..\\..\\src","sources":["NativeRNLlama.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAkD,IAAAC,QAAA,GAsanCC,gCAAmB,CAACC,GAAG,CAAO,SAAS,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAJ,QAAA"}
@@ -6,6 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.convertJsonSchemaToGrammar = exports.SchemaGrammarConverterBuiltinRule = exports.SchemaGrammarConverter = void 0;
7
7
  /* eslint-disable no-restricted-syntax */
8
8
  /* eslint-disable no-underscore-dangle */
9
+
10
+ // NOTE: Deprecated, please use tools or response_format with json_schema instead
11
+
9
12
  const SPACE_RULE = '" "?';
10
13
  function buildRepetition(itemRule, minItems, maxItems) {
11
14
  let opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
@@ -1 +1 @@
1
- {"version":3,"names":["SPACE_RULE","buildRepetition","itemRule","minItems","maxItems","opts","arguments","length","undefined","separatorRule","itemRuleIsLiteral","result","slice","repeat","Array","from","join","optRepetitions","upToN","prefixWithSep","content","trim","itemOperator","SchemaGrammarConverterBuiltinRule","constructor","deps","exports","BuiltinRule","UP_TO_15_DIGITS","PRIMITIVE_RULES","boolean","number","integer","value","object","array","uuid","map","n","_","char","string","null","STRING_FORMAT_RULES","date","time","RESERVED_NAMES","root","INVALID_RULE_CHARS_RE","GRAMMAR_LITERAL_ESCAPE_RE","GRAMMAR_LITERAL_ESCAPES","NON_LITERAL_SET","Set","ESCAPED_IN_REGEXPS_BUT_NOT_IN_LITERALS","formatLiteral","literal","escaped","replace","m","generateConstantRule","JSON","stringify","groupBy","iterable","keyFn","lastKey","group","element","key","push","SchemaGrammarConverter","options","_propOrder","prop_order","_allowFetch","allow_fetch","_dotall","dotall","_rules","space","_refs","_refsBeingResolved","_addRule","name","rule","escName","i","resolveRefs","schema","url","visit","isArray","Promise","all","ref","$ref","target","startsWith","Error","fragSplit","split","baseUrl","fetch","then","res","json","selectors","sel","Object","values","_generateUnionRule","altSchemas","altSchema","_visitPattern","pattern","endsWith","subRuleIds","getDot","toRule","_ref","s","isLiteral","transform","start","seq","joinSeq","ret","g","x","c","squareBrackets","curlyBrackets","nums","minTimes","maxTimes","parseInt","Infinity","sub","subIsLiteral","id","keys","next","has","_resolveRef","refName","pop","add","resolved","delete","schemaType","type","schemaFormat","format","isRoot","ruleName","oneOf","anyOf","t","const","enum","v","additionalProperties","required","properties","entries","_buildObjectRule","addComponent","compSchema","isRequired","propName","propSchema","allOf","tt","items","prefixItems","rules","item","itemRuleName","test","_addPrimitive","primName","charRuleName","minLen","minLength","maxLen","maxLength","dep","depRule","propOrder","sortedProps","_ref2","k","sort","a","b","orderA","orderB","findIndex","_ref3","_ref4","propKvRuleNames","propRuleName","requiredProps","filter","optionalProps","subName","valueRule","getRecursiveRefs","ks","firstIsOptional","rest","kvRuleName","formatGrammar","grammar","_ref5","_ref6","localeCompare","convertJsonSchemaToGrammar","_ref7","allowFetch","converter"],"sourceRoot":"..\\..\\src","sources":["grammar.ts"],"mappings":"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"}
1
+ {"version":3,"names":["SPACE_RULE","buildRepetition","itemRule","minItems","maxItems","opts","arguments","length","undefined","separatorRule","itemRuleIsLiteral","result","slice","repeat","Array","from","join","optRepetitions","upToN","prefixWithSep","content","trim","itemOperator","SchemaGrammarConverterBuiltinRule","constructor","deps","exports","BuiltinRule","UP_TO_15_DIGITS","PRIMITIVE_RULES","boolean","number","integer","value","object","array","uuid","map","n","_","char","string","null","STRING_FORMAT_RULES","date","time","RESERVED_NAMES","root","INVALID_RULE_CHARS_RE","GRAMMAR_LITERAL_ESCAPE_RE","GRAMMAR_LITERAL_ESCAPES","NON_LITERAL_SET","Set","ESCAPED_IN_REGEXPS_BUT_NOT_IN_LITERALS","formatLiteral","literal","escaped","replace","m","generateConstantRule","JSON","stringify","groupBy","iterable","keyFn","lastKey","group","element","key","push","SchemaGrammarConverter","options","_propOrder","prop_order","_allowFetch","allow_fetch","_dotall","dotall","_rules","space","_refs","_refsBeingResolved","_addRule","name","rule","escName","i","resolveRefs","schema","url","visit","isArray","Promise","all","ref","$ref","target","startsWith","Error","fragSplit","split","baseUrl","fetch","then","res","json","selectors","sel","Object","values","_generateUnionRule","altSchemas","altSchema","_visitPattern","pattern","endsWith","subRuleIds","getDot","toRule","_ref","s","isLiteral","transform","start","seq","joinSeq","ret","g","x","c","squareBrackets","curlyBrackets","nums","minTimes","maxTimes","parseInt","Infinity","sub","subIsLiteral","id","keys","next","has","_resolveRef","refName","pop","add","resolved","delete","schemaType","type","schemaFormat","format","isRoot","ruleName","oneOf","anyOf","t","const","enum","v","additionalProperties","required","properties","entries","_buildObjectRule","addComponent","compSchema","isRequired","propName","propSchema","allOf","tt","items","prefixItems","rules","item","itemRuleName","test","_addPrimitive","primName","charRuleName","minLen","minLength","maxLen","maxLength","dep","depRule","propOrder","sortedProps","_ref2","k","sort","a","b","orderA","orderB","findIndex","_ref3","_ref4","propKvRuleNames","propRuleName","requiredProps","filter","optionalProps","subName","valueRule","getRecursiveRefs","ks","firstIsOptional","rest","kvRuleName","formatGrammar","grammar","_ref5","_ref6","localeCompare","convertJsonSchemaToGrammar","_ref7","allowFetch","converter"],"sourceRoot":"..\\..\\src","sources":["grammar.ts"],"mappings":"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"}