cui-llama.rn 0.2.0

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 (76) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +330 -0
  3. package/android/build.gradle +107 -0
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/AndroidManifest.xml +4 -0
  6. package/android/src/main/CMakeLists.txt +69 -0
  7. package/android/src/main/java/com/rnllama/LlamaContext.java +353 -0
  8. package/android/src/main/java/com/rnllama/RNLlama.java +446 -0
  9. package/android/src/main/java/com/rnllama/RNLlamaPackage.java +48 -0
  10. package/android/src/main/jni.cpp +635 -0
  11. package/android/src/newarch/java/com/rnllama/RNLlamaModule.java +94 -0
  12. package/android/src/oldarch/java/com/rnllama/RNLlamaModule.java +95 -0
  13. package/cpp/README.md +4 -0
  14. package/cpp/common.cpp +3237 -0
  15. package/cpp/common.h +467 -0
  16. package/cpp/ggml-aarch64.c +2193 -0
  17. package/cpp/ggml-aarch64.h +39 -0
  18. package/cpp/ggml-alloc.c +1041 -0
  19. package/cpp/ggml-alloc.h +76 -0
  20. package/cpp/ggml-backend-impl.h +153 -0
  21. package/cpp/ggml-backend.c +2225 -0
  22. package/cpp/ggml-backend.h +236 -0
  23. package/cpp/ggml-common.h +1829 -0
  24. package/cpp/ggml-impl.h +655 -0
  25. package/cpp/ggml-metal.h +65 -0
  26. package/cpp/ggml-metal.m +3273 -0
  27. package/cpp/ggml-quants.c +15022 -0
  28. package/cpp/ggml-quants.h +132 -0
  29. package/cpp/ggml.c +22034 -0
  30. package/cpp/ggml.h +2444 -0
  31. package/cpp/grammar-parser.cpp +536 -0
  32. package/cpp/grammar-parser.h +29 -0
  33. package/cpp/json-schema-to-grammar.cpp +1045 -0
  34. package/cpp/json-schema-to-grammar.h +8 -0
  35. package/cpp/json.hpp +24766 -0
  36. package/cpp/llama.cpp +21789 -0
  37. package/cpp/llama.h +1201 -0
  38. package/cpp/log.h +737 -0
  39. package/cpp/rn-llama.hpp +630 -0
  40. package/cpp/sampling.cpp +460 -0
  41. package/cpp/sampling.h +160 -0
  42. package/cpp/sgemm.cpp +1027 -0
  43. package/cpp/sgemm.h +14 -0
  44. package/cpp/unicode-data.cpp +7032 -0
  45. package/cpp/unicode-data.h +20 -0
  46. package/cpp/unicode.cpp +812 -0
  47. package/cpp/unicode.h +64 -0
  48. package/ios/RNLlama.h +11 -0
  49. package/ios/RNLlama.mm +302 -0
  50. package/ios/RNLlama.xcodeproj/project.pbxproj +278 -0
  51. package/ios/RNLlamaContext.h +39 -0
  52. package/ios/RNLlamaContext.mm +426 -0
  53. package/jest/mock.js +169 -0
  54. package/lib/commonjs/NativeRNLlama.js +10 -0
  55. package/lib/commonjs/NativeRNLlama.js.map +1 -0
  56. package/lib/commonjs/grammar.js +574 -0
  57. package/lib/commonjs/grammar.js.map +1 -0
  58. package/lib/commonjs/index.js +151 -0
  59. package/lib/commonjs/index.js.map +1 -0
  60. package/lib/module/NativeRNLlama.js +3 -0
  61. package/lib/module/NativeRNLlama.js.map +1 -0
  62. package/lib/module/grammar.js +566 -0
  63. package/lib/module/grammar.js.map +1 -0
  64. package/lib/module/index.js +129 -0
  65. package/lib/module/index.js.map +1 -0
  66. package/lib/typescript/NativeRNLlama.d.ts +107 -0
  67. package/lib/typescript/NativeRNLlama.d.ts.map +1 -0
  68. package/lib/typescript/grammar.d.ts +38 -0
  69. package/lib/typescript/grammar.d.ts.map +1 -0
  70. package/lib/typescript/index.d.ts +46 -0
  71. package/lib/typescript/index.d.ts.map +1 -0
  72. package/llama-rn.podspec +56 -0
  73. package/package.json +230 -0
  74. package/src/NativeRNLlama.ts +132 -0
  75. package/src/grammar.ts +849 -0
  76. package/src/index.ts +182 -0
@@ -0,0 +1,94 @@
1
+ package com.rnllama;
2
+
3
+ import androidx.annotation.NonNull;
4
+
5
+ import com.facebook.react.bridge.Promise;
6
+ import com.facebook.react.bridge.ReactApplicationContext;
7
+ import com.facebook.react.bridge.ReactMethod;
8
+ import com.facebook.react.bridge.ReadableMap;
9
+ import com.facebook.react.bridge.ReadableArray;
10
+ import com.facebook.react.module.annotations.ReactModule;
11
+
12
+ import java.util.HashMap;
13
+ import java.util.Random;
14
+ import java.io.File;
15
+ import java.io.FileInputStream;
16
+ import java.io.PushbackInputStream;
17
+
18
+ @ReactModule(name = RNLlama.NAME)
19
+ public class RNLlamaModule extends NativeRNLlamaSpec {
20
+ public static final String NAME = RNLlama.NAME;
21
+
22
+ private RNLlama rnllama = null;
23
+
24
+ public RNLlamaModule(ReactApplicationContext reactContext) {
25
+ super(reactContext);
26
+ rnllama = new RNLlama(reactContext);
27
+ }
28
+
29
+ @Override
30
+ @NonNull
31
+ public String getName() {
32
+ return NAME;
33
+ }
34
+
35
+ @ReactMethod
36
+ public void setContextLimit(double limit, Promise promise) {
37
+ rnllama.setContextLimit(limit, promise);
38
+ }
39
+
40
+ @ReactMethod
41
+ public void initContext(final ReadableMap params, final Promise promise) {
42
+ rnllama.initContext(params, promise);
43
+ }
44
+
45
+ @ReactMethod
46
+ public void loadSession(double id, String path, Promise promise) {
47
+ rnllama.loadSession(id, path, promise);
48
+ }
49
+
50
+ @ReactMethod
51
+ public void saveSession(double id, String path, double size, Promise promise) {
52
+ rnllama.saveSession(id, path, size, promise);
53
+ }
54
+
55
+ @ReactMethod
56
+ public void completion(double id, final ReadableMap params, final Promise promise) {
57
+ rnllama.completion(id, params, promise);
58
+ }
59
+
60
+ @ReactMethod
61
+ public void stopCompletion(double id, final Promise promise) {
62
+ rnllama.stopCompletion(id, promise);
63
+ }
64
+
65
+ @ReactMethod
66
+ public void tokenize(double id, final String text, final Promise promise) {
67
+ rnllama.tokenize(id, text, promise);
68
+ }
69
+
70
+ @ReactMethod
71
+ public void detokenize(double id, final ReadableArray tokens, final Promise promise) {
72
+ rnllama.detokenize(id, tokens, promise);
73
+ }
74
+
75
+ @ReactMethod
76
+ public void embedding(double id, final String text, final Promise promise) {
77
+ rnllama.embedding(id, text, promise);
78
+ }
79
+
80
+ @ReactMethod
81
+ public void bench(double id, final double pp, final double tg, final double pl, final double nr, final Promise promise) {
82
+ rnllama.bench(id, pp, tg, pl, nr, promise);
83
+ }
84
+
85
+ @ReactMethod
86
+ public void releaseContext(double id, Promise promise) {
87
+ rnllama.releaseContext(id, promise);
88
+ }
89
+
90
+ @ReactMethod
91
+ public void releaseAllContexts(Promise promise) {
92
+ rnllama.releaseAllContexts(promise);
93
+ }
94
+ }
@@ -0,0 +1,95 @@
1
+ package com.rnllama;
2
+
3
+ import androidx.annotation.NonNull;
4
+
5
+ import com.facebook.react.bridge.Promise;
6
+ import com.facebook.react.bridge.ReactApplicationContext;
7
+ import com.facebook.react.bridge.ReactContextBaseJavaModule;
8
+ import com.facebook.react.bridge.ReactMethod;
9
+ import com.facebook.react.bridge.ReadableMap;
10
+ import com.facebook.react.bridge.ReadableArray;
11
+ import com.facebook.react.module.annotations.ReactModule;
12
+
13
+ import java.util.HashMap;
14
+ import java.util.Random;
15
+ import java.io.File;
16
+ import java.io.FileInputStream;
17
+ import java.io.PushbackInputStream;
18
+
19
+ @ReactModule(name = RNLlama.NAME)
20
+ public class RNLlamaModule extends ReactContextBaseJavaModule {
21
+ public static final String NAME = RNLlama.NAME;
22
+
23
+ private RNLlama rnllama = null;
24
+
25
+ public RNLlamaModule(ReactApplicationContext reactContext) {
26
+ super(reactContext);
27
+ rnllama = new RNLlama(reactContext);
28
+ }
29
+
30
+ @Override
31
+ @NonNull
32
+ public String getName() {
33
+ return NAME;
34
+ }
35
+
36
+ @ReactMethod
37
+ public void setContextLimit(double limit, Promise promise) {
38
+ rnllama.setContextLimit(limit, promise);
39
+ }
40
+
41
+ @ReactMethod
42
+ public void initContext(final ReadableMap params, final Promise promise) {
43
+ rnllama.initContext(params, promise);
44
+ }
45
+
46
+ @ReactMethod
47
+ public void loadSession(double id, String path, Promise promise) {
48
+ rnllama.loadSession(id, path, promise);
49
+ }
50
+
51
+ @ReactMethod
52
+ public void saveSession(double id, String path, int size, Promise promise) {
53
+ rnllama.saveSession(id, path, size, promise);
54
+ }
55
+
56
+ @ReactMethod
57
+ public void completion(double id, final ReadableMap params, final Promise promise) {
58
+ rnllama.completion(id, params, promise);
59
+ }
60
+
61
+ @ReactMethod
62
+ public void stopCompletion(double id, final Promise promise) {
63
+ rnllama.stopCompletion(id, promise);
64
+ }
65
+
66
+ @ReactMethod
67
+ public void tokenize(double id, final String text, final Promise promise) {
68
+ rnllama.tokenize(id, text, promise);
69
+ }
70
+
71
+ @ReactMethod
72
+ public void detokenize(double id, final ReadableArray tokens, final Promise promise) {
73
+ rnllama.detokenize(id, tokens, promise);
74
+ }
75
+
76
+ @ReactMethod
77
+ public void embedding(double id, final String text, final Promise promise) {
78
+ rnllama.embedding(id, text, promise);
79
+ }
80
+
81
+ @ReactMethod
82
+ public void bench(double id, final double pp, final double tg, final double pl, final double nr, final Promise promise) {
83
+ rnllama.bench(id, pp, tg, pl, nr, promise);
84
+ }
85
+
86
+ @ReactMethod
87
+ public void releaseContext(double id, Promise promise) {
88
+ rnllama.releaseContext(id, promise);
89
+ }
90
+
91
+ @ReactMethod
92
+ public void releaseAllContexts(Promise promise) {
93
+ rnllama.releaseAllContexts(promise);
94
+ }
95
+ }
package/cpp/README.md ADDED
@@ -0,0 +1,4 @@
1
+ # Note
2
+
3
+ - Only `rn-llama.hpp` is the specific file for this project, others are sync from [llama.cpp](https://github.com/ggerganov/llama.cpp).
4
+ - We can update the native source by using the [bootstrap](../scripts/bootstrap.sh) script.