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,151 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.LlamaContext = void 0;
7
+ Object.defineProperty(exports, "SchemaGrammarConverter", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _grammar.SchemaGrammarConverter;
11
+ }
12
+ });
13
+ Object.defineProperty(exports, "convertJsonSchemaToGrammar", {
14
+ enumerable: true,
15
+ get: function () {
16
+ return _grammar.convertJsonSchemaToGrammar;
17
+ }
18
+ });
19
+ exports.initLlama = initLlama;
20
+ exports.releaseAllLlama = releaseAllLlama;
21
+ exports.setContextLimit = setContextLimit;
22
+ var _reactNative = require("react-native");
23
+ var _NativeRNLlama = _interopRequireDefault(require("./NativeRNLlama"));
24
+ var _grammar = require("./grammar");
25
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
+ const EVENT_ON_TOKEN = '@RNLlama_onToken';
27
+ let EventEmitter;
28
+ if (_reactNative.Platform.OS === 'ios') {
29
+ // @ts-ignore
30
+ EventEmitter = new _reactNative.NativeEventEmitter(_NativeRNLlama.default);
31
+ }
32
+ if (_reactNative.Platform.OS === 'android') {
33
+ EventEmitter = _reactNative.DeviceEventEmitter;
34
+ }
35
+ class LlamaContext {
36
+ gpu = false;
37
+ reasonNoGPU = '';
38
+ model = {};
39
+ constructor(_ref) {
40
+ let {
41
+ contextId,
42
+ gpu,
43
+ reasonNoGPU,
44
+ model
45
+ } = _ref;
46
+ this.id = contextId;
47
+ this.gpu = gpu;
48
+ this.reasonNoGPU = reasonNoGPU;
49
+ this.model = model;
50
+ }
51
+
52
+ /**
53
+ * Load cached prompt & completion state from a file.
54
+ */
55
+ async loadSession(filepath) {
56
+ return _NativeRNLlama.default.loadSession(this.id, filepath);
57
+ }
58
+
59
+ /**
60
+ * Save current cached prompt & completion state to a file.
61
+ */
62
+ async saveSession(filepath, options) {
63
+ return _NativeRNLlama.default.saveSession(this.id, filepath, (options === null || options === void 0 ? void 0 : options.tokenSize) || -1);
64
+ }
65
+ async completion(params, callback) {
66
+ let tokenListener = callback && EventEmitter.addListener(EVENT_ON_TOKEN, evt => {
67
+ const {
68
+ contextId,
69
+ tokenResult
70
+ } = evt;
71
+ if (contextId !== this.id) return;
72
+ callback(tokenResult);
73
+ });
74
+ const promise = _NativeRNLlama.default.completion(this.id, {
75
+ ...params,
76
+ emit_partial_completion: !!callback
77
+ });
78
+ return promise.then(completionResult => {
79
+ var _tokenListener;
80
+ (_tokenListener = tokenListener) === null || _tokenListener === void 0 ? void 0 : _tokenListener.remove();
81
+ tokenListener = null;
82
+ return completionResult;
83
+ }).catch(err => {
84
+ var _tokenListener2;
85
+ (_tokenListener2 = tokenListener) === null || _tokenListener2 === void 0 ? void 0 : _tokenListener2.remove();
86
+ tokenListener = null;
87
+ throw err;
88
+ });
89
+ }
90
+ stopCompletion() {
91
+ return _NativeRNLlama.default.stopCompletion(this.id);
92
+ }
93
+ tokenize(text) {
94
+ return _NativeRNLlama.default.tokenize(this.id, text);
95
+ }
96
+ detokenize(tokens) {
97
+ return _NativeRNLlama.default.detokenize(this.id, tokens);
98
+ }
99
+ embedding(text) {
100
+ return _NativeRNLlama.default.embedding(this.id, text);
101
+ }
102
+ async bench(pp, tg, pl, nr) {
103
+ const result = await _NativeRNLlama.default.bench(this.id, pp, tg, pl, nr);
104
+ const [modelDesc, modelSize, modelNParams, ppAvg, ppStd, tgAvg, tgStd] = JSON.parse(result);
105
+ return {
106
+ modelDesc,
107
+ modelSize,
108
+ modelNParams,
109
+ ppAvg,
110
+ ppStd,
111
+ tgAvg,
112
+ tgStd
113
+ };
114
+ }
115
+ async release() {
116
+ return _NativeRNLlama.default.releaseContext(this.id);
117
+ }
118
+ }
119
+ exports.LlamaContext = LlamaContext;
120
+ async function setContextLimit(limit) {
121
+ return _NativeRNLlama.default.setContextLimit(limit);
122
+ }
123
+ async function initLlama(_ref2) {
124
+ let {
125
+ model,
126
+ is_model_asset: isModelAsset,
127
+ ...rest
128
+ } = _ref2;
129
+ let path = model;
130
+ if (path.startsWith('file://')) path = path.slice(7);
131
+ const {
132
+ contextId,
133
+ gpu,
134
+ reasonNoGPU,
135
+ model: modelDetails
136
+ } = await _NativeRNLlama.default.initContext({
137
+ model: path,
138
+ is_model_asset: !!isModelAsset,
139
+ ...rest
140
+ });
141
+ return new LlamaContext({
142
+ contextId,
143
+ gpu,
144
+ reasonNoGPU,
145
+ model: modelDetails
146
+ });
147
+ }
148
+ async function releaseAllLlama() {
149
+ return _NativeRNLlama.default.releaseAllContexts();
150
+ }
151
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_NativeRNLlama","_interopRequireDefault","_grammar","obj","__esModule","default","EVENT_ON_TOKEN","EventEmitter","Platform","OS","NativeEventEmitter","RNLlama","DeviceEventEmitter","LlamaContext","gpu","reasonNoGPU","model","constructor","_ref","contextId","id","loadSession","filepath","saveSession","options","tokenSize","completion","params","callback","tokenListener","addListener","evt","tokenResult","promise","emit_partial_completion","then","completionResult","_tokenListener","remove","catch","err","_tokenListener2","stopCompletion","tokenize","text","detokenize","tokens","embedding","bench","pp","tg","pl","nr","result","modelDesc","modelSize","modelNParams","ppAvg","ppStd","tgAvg","tgStd","JSON","parse","release","releaseContext","exports","setContextLimit","limit","initLlama","_ref2","is_model_asset","isModelAsset","rest","path","startsWith","slice","modelDetails","initContext","releaseAllLlama","releaseAllContexts"],"sourceRoot":"..\\..\\src","sources":["index.ts"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { TurboModuleRegistry } from 'react-native';
2
+ export default TurboModuleRegistry.get('RNLlama');
3
+ //# sourceMappingURL=NativeRNLlama.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"..\\..\\src","sources":["NativeRNLlama.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AAkIlD,eAAeA,mBAAmB,CAACC,GAAG,CAAO,SAAS,CAAC"}