cui-llama.rn 1.0.3 → 1.0.6
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.
- package/README.md +35 -39
- package/android/src/main/CMakeLists.txt +12 -2
- package/android/src/main/java/com/rnllama/LlamaContext.java +29 -9
- package/android/src/main/java/com/rnllama/RNLlama.java +33 -1
- package/android/src/main/jni.cpp +62 -8
- package/android/src/newarch/java/com/rnllama/RNLlamaModule.java +5 -0
- package/android/src/oldarch/java/com/rnllama/RNLlamaModule.java +5 -0
- package/cpp/common.cpp +3237 -3231
- package/cpp/common.h +469 -468
- package/cpp/ggml-aarch64.c +2193 -2193
- package/cpp/ggml-aarch64.h +39 -39
- package/cpp/ggml-alloc.c +1036 -1042
- package/cpp/ggml-backend-impl.h +153 -153
- package/cpp/ggml-backend.c +2240 -2234
- package/cpp/ggml-backend.h +238 -238
- package/cpp/ggml-common.h +1833 -1829
- package/cpp/ggml-impl.h +755 -655
- package/cpp/ggml-metal.h +65 -65
- package/cpp/ggml-metal.m +3269 -3269
- package/cpp/ggml-quants.c +14872 -14860
- package/cpp/ggml-quants.h +132 -132
- package/cpp/ggml.c +22055 -22044
- package/cpp/ggml.h +2453 -2447
- package/cpp/llama-grammar.cpp +539 -0
- package/cpp/llama-grammar.h +39 -0
- package/cpp/llama-impl.h +26 -0
- package/cpp/llama-sampling.cpp +635 -0
- package/cpp/llama-sampling.h +56 -0
- package/cpp/llama-vocab.cpp +1721 -0
- package/cpp/llama-vocab.h +130 -0
- package/cpp/llama.cpp +19171 -21892
- package/cpp/llama.h +1240 -1217
- package/cpp/log.h +737 -737
- package/cpp/rn-llama.hpp +207 -29
- package/cpp/sampling.cpp +460 -460
- package/cpp/sgemm.cpp +1027 -1027
- package/cpp/sgemm.h +14 -14
- package/cpp/unicode.cpp +6 -0
- package/cpp/unicode.h +3 -0
- package/ios/RNLlama.mm +15 -6
- package/ios/RNLlamaContext.h +2 -8
- package/ios/RNLlamaContext.mm +41 -34
- package/lib/commonjs/NativeRNLlama.js.map +1 -1
- package/lib/commonjs/chat.js +37 -0
- package/lib/commonjs/chat.js.map +1 -0
- package/lib/commonjs/index.js +14 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/NativeRNLlama.js.map +1 -1
- package/lib/module/chat.js +31 -0
- package/lib/module/chat.js.map +1 -0
- package/lib/module/index.js +14 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/NativeRNLlama.d.ts +5 -1
- package/lib/typescript/NativeRNLlama.d.ts.map +1 -1
- package/lib/typescript/chat.d.ts +10 -0
- package/lib/typescript/chat.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +9 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/NativeRNLlama.ts +10 -1
- package/src/chat.ts +44 -0
- package/src/index.ts +31 -4
package/cpp/sgemm.h
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
#pragma once
|
2
|
-
#include <stdint.h>
|
3
|
-
#include <stdbool.h>
|
4
|
-
#ifdef __cplusplus
|
5
|
-
extern "C" {
|
6
|
-
#endif
|
7
|
-
|
8
|
-
bool llamafile_sgemm(int64_t, int64_t, int64_t, const void *, int64_t,
|
9
|
-
const void *, int64_t, void *, int64_t, int, int,
|
10
|
-
int, int, int);
|
11
|
-
|
12
|
-
#ifdef __cplusplus
|
13
|
-
}
|
14
|
-
#endif
|
1
|
+
#pragma once
|
2
|
+
#include <stdint.h>
|
3
|
+
#include <stdbool.h>
|
4
|
+
#ifdef __cplusplus
|
5
|
+
extern "C" {
|
6
|
+
#endif
|
7
|
+
|
8
|
+
bool llamafile_sgemm(int64_t, int64_t, int64_t, const void *, int64_t,
|
9
|
+
const void *, int64_t, void *, int64_t, int, int,
|
10
|
+
int, int, int);
|
11
|
+
|
12
|
+
#ifdef __cplusplus
|
13
|
+
}
|
14
|
+
#endif
|
package/cpp/unicode.cpp
CHANGED
@@ -19,6 +19,12 @@
|
|
19
19
|
#include <locale>
|
20
20
|
#include <codecvt>
|
21
21
|
|
22
|
+
size_t unicode_len_utf8(char src) {
|
23
|
+
const size_t lookup[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 4 };
|
24
|
+
uint8_t highbits = static_cast<uint8_t>(src) >> 4;
|
25
|
+
return lookup[highbits];
|
26
|
+
}
|
27
|
+
|
22
28
|
static std::string unicode_cpts_to_utf8(const std::vector<uint32_t> & cps) {
|
23
29
|
std::string result;
|
24
30
|
for (size_t i = 0; i < cps.size(); ++i) {
|
package/cpp/unicode.h
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
#include <string>
|
5
5
|
#include <vector>
|
6
6
|
|
7
|
+
// TODO: prefix all symbols with "llama_"
|
8
|
+
|
7
9
|
struct codepoint_flags {
|
8
10
|
enum {
|
9
11
|
UNDEFINED = 0x0001,
|
@@ -46,6 +48,7 @@ struct codepoint_flags {
|
|
46
48
|
}
|
47
49
|
};
|
48
50
|
|
51
|
+
size_t unicode_len_utf8(char src);
|
49
52
|
|
50
53
|
std::string unicode_cpt_to_utf8(uint32_t cp);
|
51
54
|
uint32_t unicode_cpt_from_utf8(const std::string & utf8, size_t & offset);
|
package/ios/RNLlama.mm
CHANGED
@@ -53,15 +53,24 @@ RCT_EXPORT_METHOD(initContext:(NSDictionary *)contextParams
|
|
53
53
|
@"contextId": contextIdNumber,
|
54
54
|
@"gpu": @([context isMetalEnabled]),
|
55
55
|
@"reasonNoGPU": [context reasonNoMetal],
|
56
|
-
@"model":
|
57
|
-
@"desc": [context modelDesc],
|
58
|
-
@"size": @([context modelSize]),
|
59
|
-
@"nParams": @([context modelNParams]),
|
60
|
-
@"metadata": [context metadata],
|
61
|
-
}
|
56
|
+
@"model": [context modelInfo],
|
62
57
|
});
|
63
58
|
}
|
64
59
|
|
60
|
+
RCT_EXPORT_METHOD(getFormattedChat:(double)contextId
|
61
|
+
withMessages:(NSArray *)messages
|
62
|
+
withTemplate:(NSString *)chatTemplate
|
63
|
+
withResolver:(RCTPromiseResolveBlock)resolve
|
64
|
+
withRejecter:(RCTPromiseRejectBlock)reject)
|
65
|
+
{
|
66
|
+
RNLlamaContext *context = llamaContexts[[NSNumber numberWithDouble:contextId]];
|
67
|
+
if (context == nil) {
|
68
|
+
reject(@"llama_error", @"Context not found", nil);
|
69
|
+
return;
|
70
|
+
}
|
71
|
+
resolve([context getFormattedChat:messages withTemplate:chatTemplate]);
|
72
|
+
}
|
73
|
+
|
65
74
|
RCT_EXPORT_METHOD(loadSession:(double)contextId
|
66
75
|
withFilePath:(NSString *)filePath
|
67
76
|
withResolver:(RCTPromiseResolveBlock)resolve
|
package/ios/RNLlamaContext.h
CHANGED
@@ -8,10 +8,6 @@
|
|
8
8
|
bool is_metal_enabled;
|
9
9
|
NSString * reason_no_metal;
|
10
10
|
bool is_model_loaded;
|
11
|
-
NSString * model_desc;
|
12
|
-
uint64_t model_size;
|
13
|
-
uint64_t model_n_params;
|
14
|
-
NSDictionary * metadata;
|
15
11
|
|
16
12
|
rnllama::llama_rn_context * llama;
|
17
13
|
}
|
@@ -19,10 +15,7 @@
|
|
19
15
|
+ (instancetype)initWithParams:(NSDictionary *)params;
|
20
16
|
- (bool)isMetalEnabled;
|
21
17
|
- (NSString *)reasonNoMetal;
|
22
|
-
- (NSDictionary *)
|
23
|
-
- (NSString *)modelDesc;
|
24
|
-
- (uint64_t)modelSize;
|
25
|
-
- (uint64_t)modelNParams;
|
18
|
+
- (NSDictionary *)modelInfo;
|
26
19
|
- (bool)isModelLoaded;
|
27
20
|
- (bool)isPredicting;
|
28
21
|
- (NSDictionary *)completion:(NSDictionary *)params onToken:(void (^)(NSMutableDictionary *tokenResult))onToken;
|
@@ -30,6 +23,7 @@
|
|
30
23
|
- (NSArray *)tokenize:(NSString *)text;
|
31
24
|
- (NSString *)detokenize:(NSArray *)tokens;
|
32
25
|
- (NSArray *)embedding:(NSString *)text;
|
26
|
+
- (NSString *)getFormattedChat:(NSArray *)messages withTemplate:(NSString *)chatTemplate;
|
33
27
|
- (NSDictionary *)loadSession:(NSString *)path;
|
34
28
|
- (int)saveSession:(NSString *)path size:(int)size;
|
35
29
|
- (NSString *)bench:(int)pp tg:(int)tg pl:(int)pl nr:(int)nr;
|
package/ios/RNLlamaContext.mm
CHANGED
@@ -62,7 +62,6 @@
|
|
62
62
|
defaultParams.lora_adapter.push_back({[params[@"lora"] UTF8String], lora_scaled});
|
63
63
|
defaultParams.use_mmap = false;
|
64
64
|
}
|
65
|
-
if (params[@"lora_base"]) defaultParams.lora_base = [params[@"lora_base"] UTF8String];
|
66
65
|
|
67
66
|
if (params[@"rope_freq_base"]) defaultParams.rope_freq_base = [params[@"rope_freq_base"] floatValue];
|
68
67
|
if (params[@"rope_freq_scale"]) defaultParams.rope_freq_scale = [params[@"rope_freq_scale"] floatValue];
|
@@ -83,26 +82,6 @@
|
|
83
82
|
context->is_metal_enabled = isMetalEnabled;
|
84
83
|
context->reason_no_metal = reasonNoMetal;
|
85
84
|
|
86
|
-
int count = llama_model_meta_count(context->llama->model);
|
87
|
-
NSDictionary *meta = [[NSMutableDictionary alloc] init];
|
88
|
-
for (int i = 0; i < count; i++) {
|
89
|
-
char key[256];
|
90
|
-
llama_model_meta_key_by_index(context->llama->model, i, key, sizeof(key));
|
91
|
-
char val[256];
|
92
|
-
llama_model_meta_val_str_by_index(context->llama->model, i, val, sizeof(val));
|
93
|
-
|
94
|
-
NSString *keyStr = [NSString stringWithUTF8String:key];
|
95
|
-
NSString *valStr = [NSString stringWithUTF8String:val];
|
96
|
-
[meta setValue:valStr forKey:keyStr];
|
97
|
-
}
|
98
|
-
context->metadata = meta;
|
99
|
-
|
100
|
-
char desc[1024];
|
101
|
-
llama_model_desc(context->llama->model, desc, sizeof(desc));
|
102
|
-
context->model_desc = [NSString stringWithUTF8String:desc];
|
103
|
-
context->model_size = llama_model_size(context->llama->model);
|
104
|
-
context->model_n_params = llama_model_n_params(context->llama->model);
|
105
|
-
|
106
85
|
return context;
|
107
86
|
}
|
108
87
|
|
@@ -114,20 +93,30 @@
|
|
114
93
|
return reason_no_metal;
|
115
94
|
}
|
116
95
|
|
117
|
-
- (NSDictionary *)
|
118
|
-
|
119
|
-
|
96
|
+
- (NSDictionary *)modelInfo {
|
97
|
+
char desc[1024];
|
98
|
+
llama_model_desc(llama->model, desc, sizeof(desc));
|
120
99
|
|
121
|
-
|
122
|
-
|
123
|
-
|
100
|
+
int count = llama_model_meta_count(llama->model);
|
101
|
+
NSDictionary *meta = [[NSMutableDictionary alloc] init];
|
102
|
+
for (int i = 0; i < count; i++) {
|
103
|
+
char key[256];
|
104
|
+
llama_model_meta_key_by_index(llama->model, i, key, sizeof(key));
|
105
|
+
char val[256];
|
106
|
+
llama_model_meta_val_str_by_index(llama->model, i, val, sizeof(val));
|
124
107
|
|
125
|
-
|
126
|
-
|
127
|
-
|
108
|
+
NSString *keyStr = [NSString stringWithUTF8String:key];
|
109
|
+
NSString *valStr = [NSString stringWithUTF8String:val];
|
110
|
+
[meta setValue:valStr forKey:keyStr];
|
111
|
+
}
|
128
112
|
|
129
|
-
|
130
|
-
|
113
|
+
return @{
|
114
|
+
@"desc": [NSString stringWithUTF8String:desc],
|
115
|
+
@"size": @(llama_model_size(llama->model)),
|
116
|
+
@"nParams": @(llama_model_n_params(llama->model)),
|
117
|
+
@"isChatTemplateSupported": @(llama->validateModelChatTemplate()),
|
118
|
+
@"metadata": meta
|
119
|
+
};
|
131
120
|
}
|
132
121
|
|
133
122
|
- (bool)isModelLoaded {
|
@@ -138,6 +127,20 @@
|
|
138
127
|
return llama->is_predicting;
|
139
128
|
}
|
140
129
|
|
130
|
+
- (NSString *)getFormattedChat:(NSArray *)messages withTemplate:(NSString *)chatTemplate {
|
131
|
+
std::vector<llama_chat_msg> chat;
|
132
|
+
|
133
|
+
for (NSDictionary *msg in messages) {
|
134
|
+
std::string role = [[msg objectForKey:@"role"] UTF8String];
|
135
|
+
std::string content = [[msg objectForKey:@"content"] UTF8String];
|
136
|
+
chat.push_back({ role, content });
|
137
|
+
}
|
138
|
+
|
139
|
+
auto tmpl = chatTemplate == nil ? "" : [chatTemplate UTF8String];
|
140
|
+
auto formatted_chat = llama_chat_apply_template(llama->model, tmpl, chat, true);
|
141
|
+
return [NSString stringWithUTF8String:formatted_chat.c_str()];
|
142
|
+
}
|
143
|
+
|
141
144
|
- (NSArray *)tokenProbsToDict:(std::vector<rnllama::completion_token_output>)probs {
|
142
145
|
NSMutableArray *out = [[NSMutableArray alloc] init];
|
143
146
|
for (const auto &prob : probs)
|
@@ -249,7 +252,7 @@
|
|
249
252
|
|
250
253
|
while (llama->has_next_token && !llama->is_interrupted) {
|
251
254
|
const rnllama::completion_token_output token_with_probs = llama->doCompletion();
|
252
|
-
if (token_with_probs.tok == -1 || llama->
|
255
|
+
if (token_with_probs.tok == -1 || llama->incomplete) {
|
253
256
|
continue;
|
254
257
|
}
|
255
258
|
const std::string token_text = llama_token_to_piece(llama->ctx, token_with_probs.tok);
|
@@ -365,8 +368,12 @@
|
|
365
368
|
llama->params.prompt = [text UTF8String];
|
366
369
|
|
367
370
|
llama->params.n_predict = 0;
|
368
|
-
|
371
|
+
|
372
|
+
if (!llama->initSampling()) {
|
373
|
+
@throw [NSException exceptionWithName:@"LlamaException" reason:@"Failed to initialize sampling" userInfo:nil];
|
374
|
+
}
|
369
375
|
llama->beginCompletion();
|
376
|
+
llama->loadPrompt();
|
370
377
|
llama->doCompletion();
|
371
378
|
|
372
379
|
std::vector<float> result = llama->getEmbedding();
|
@@ -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,
|
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,GA6JnCC,gCAAmB,CAACC,GAAG,CAAO,SAAS,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAJ,QAAA"}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.formatChat = formatChat;
|
7
|
+
function formatChat(messages) {
|
8
|
+
const chat = [];
|
9
|
+
messages.forEach(currMsg => {
|
10
|
+
const role = currMsg.role || '';
|
11
|
+
let content = '';
|
12
|
+
if ('content' in currMsg) {
|
13
|
+
if (typeof currMsg.content === 'string') {
|
14
|
+
;
|
15
|
+
({
|
16
|
+
content
|
17
|
+
} = currMsg);
|
18
|
+
} else if (Array.isArray(currMsg.content)) {
|
19
|
+
currMsg.content.forEach(part => {
|
20
|
+
if ('text' in part) {
|
21
|
+
content += `${content ? '\n' : ''}${part.text}`;
|
22
|
+
}
|
23
|
+
});
|
24
|
+
} else {
|
25
|
+
throw new TypeError("Invalid 'content' type (ref: https://github.com/ggerganov/llama.cpp/issues/8367)");
|
26
|
+
}
|
27
|
+
} else {
|
28
|
+
throw new Error("Missing 'content' (ref: https://github.com/ggerganov/llama.cpp/issues/8367)");
|
29
|
+
}
|
30
|
+
chat.push({
|
31
|
+
role,
|
32
|
+
content
|
33
|
+
});
|
34
|
+
});
|
35
|
+
return chat;
|
36
|
+
}
|
37
|
+
//# sourceMappingURL=chat.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["formatChat","messages","chat","forEach","currMsg","role","content","Array","isArray","part","text","TypeError","Error","push"],"sourceRoot":"..\\..\\src","sources":["chat.ts"],"mappings":";;;;;;AAWO,SAASA,UAAUA,CACxBC,QAAuC,EACb;EAC1B,MAAMC,IAA8B,GAAG,EAAE;EAEzCD,QAAQ,CAACE,OAAO,CAAEC,OAAO,IAAK;IAC5B,MAAMC,IAAY,GAAGD,OAAO,CAACC,IAAI,IAAI,EAAE;IAEvC,IAAIC,OAAe,GAAG,EAAE;IACxB,IAAI,SAAS,IAAIF,OAAO,EAAE;MACxB,IAAI,OAAOA,OAAO,CAACE,OAAO,KAAK,QAAQ,EAAE;QACvC;QAAC,CAAC;UAAEA;QAAQ,CAAC,GAAGF,OAAO;MACzB,CAAC,MAAM,IAAIG,KAAK,CAACC,OAAO,CAACJ,OAAO,CAACE,OAAO,CAAC,EAAE;QACzCF,OAAO,CAACE,OAAO,CAACH,OAAO,CAAEM,IAAI,IAAK;UAChC,IAAI,MAAM,IAAIA,IAAI,EAAE;YAClBH,OAAO,IAAK,GAAEA,OAAO,GAAG,IAAI,GAAG,EAAG,GAAEG,IAAI,CAACC,IAAK,EAAC;UACjD;QACF,CAAC,CAAC;MACJ,CAAC,MAAM;QACL,MAAM,IAAIC,SAAS,CACjB,kFACF,CAAC;MACH;IACF,CAAC,MAAM;MACL,MAAM,IAAIC,KAAK,CACb,6EACF,CAAC;IACH;IAEAV,IAAI,CAACW,IAAI,CAAC;MAAER,IAAI;MAAEC;IAAQ,CAAC,CAAC;EAC9B,CAAC,CAAC;EACF,OAAOJ,IAAI;AACb"}
|
package/lib/commonjs/index.js
CHANGED
@@ -22,6 +22,7 @@ exports.setContextLimit = setContextLimit;
|
|
22
22
|
var _reactNative = require("react-native");
|
23
23
|
var _NativeRNLlama = _interopRequireDefault(require("./NativeRNLlama"));
|
24
24
|
var _grammar = require("./grammar");
|
25
|
+
var _chat = require("./chat");
|
25
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
26
27
|
const EVENT_ON_TOKEN = '@RNLlama_onToken';
|
27
28
|
let EventEmitter;
|
@@ -54,7 +55,7 @@ class LlamaContext {
|
|
54
55
|
*/
|
55
56
|
async loadSession(filepath) {
|
56
57
|
let path = filepath;
|
57
|
-
if (
|
58
|
+
if (path.startsWith('file://')) path = path.slice(7);
|
58
59
|
return _NativeRNLlama.default.loadSession(this.id, path);
|
59
60
|
}
|
60
61
|
|
@@ -64,7 +65,17 @@ class LlamaContext {
|
|
64
65
|
async saveSession(filepath, options) {
|
65
66
|
return _NativeRNLlama.default.saveSession(this.id, filepath, (options === null || options === void 0 ? void 0 : options.tokenSize) || -1);
|
66
67
|
}
|
68
|
+
async getFormattedChat(messages) {
|
69
|
+
var _this$model;
|
70
|
+
const chat = (0, _chat.formatChat)(messages);
|
71
|
+
return _NativeRNLlama.default.getFormattedChat(this.id, chat, (_this$model = this.model) !== null && _this$model !== void 0 && _this$model.isChatTemplateSupported ? undefined : 'chatml');
|
72
|
+
}
|
67
73
|
async completion(params, callback) {
|
74
|
+
let finalPrompt = params.prompt;
|
75
|
+
if (params.messages) {
|
76
|
+
// messages always win
|
77
|
+
finalPrompt = await this.getFormattedChat(params.messages);
|
78
|
+
}
|
68
79
|
let tokenListener = callback && EventEmitter.addListener(EVENT_ON_TOKEN, evt => {
|
69
80
|
const {
|
70
81
|
contextId,
|
@@ -73,8 +84,10 @@ class LlamaContext {
|
|
73
84
|
if (contextId !== this.id) return;
|
74
85
|
callback(tokenResult);
|
75
86
|
});
|
87
|
+
if (!finalPrompt) throw new Error('Prompt is required');
|
76
88
|
const promise = _NativeRNLlama.default.completion(this.id, {
|
77
89
|
...params,
|
90
|
+
prompt: finalPrompt,
|
78
91
|
emit_partial_completion: !!callback
|
79
92
|
});
|
80
93
|
return promise.then(completionResult => {
|
@@ -1 +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","path","startsWith","slice","saveSession","options","tokenSize","completion","params","callback","tokenListener","addListener","evt","tokenResult","promise","emit_partial_completion","then","completionResult","_tokenListener","remove","catch","err","_tokenListener2","stopCompletion","tokenizeAsync","text","tokenizeSync","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","modelDetails","initContext","releaseAllLlama","releaseAllContexts"],"sourceRoot":"..\\..\\src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAC,sBAAA,CAAAF,OAAA;AAWA,IAAAG,QAAA,GAAAH,OAAA;
|
1
|
+
{"version":3,"names":["_reactNative","require","_NativeRNLlama","_interopRequireDefault","_grammar","_chat","obj","__esModule","default","EVENT_ON_TOKEN","EventEmitter","Platform","OS","NativeEventEmitter","RNLlama","DeviceEventEmitter","LlamaContext","gpu","reasonNoGPU","model","constructor","_ref","contextId","id","loadSession","filepath","path","startsWith","slice","saveSession","options","tokenSize","getFormattedChat","messages","_this$model","chat","formatChat","isChatTemplateSupported","undefined","completion","params","callback","finalPrompt","prompt","tokenListener","addListener","evt","tokenResult","Error","promise","emit_partial_completion","then","completionResult","_tokenListener","remove","catch","err","_tokenListener2","stopCompletion","tokenizeAsync","text","tokenizeSync","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","modelDetails","initContext","releaseAllLlama","releaseAllContexts"],"sourceRoot":"..\\..\\src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAC,sBAAA,CAAAF,OAAA;AAWA,IAAAG,QAAA,GAAAH,OAAA;AAEA,IAAAI,KAAA,GAAAJ,OAAA;AAAmC,SAAAE,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAInC,MAAMG,cAAc,GAAG,kBAAkB;AAEzC,IAAIC,YAA2D;AAC/D,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;EACzB;EACAF,YAAY,GAAG,IAAIG,+BAAkB,CAACC,sBAAO,CAAC;AAChD;AACA,IAAIH,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;EAC7BF,YAAY,GAAGK,+BAAkB;AACnC;AAgCO,MAAMC,YAAY,CAAC;EAGxBC,GAAG,GAAY,KAAK;EAEpBC,WAAW,GAAW,EAAE;EAExBC,KAAK,GAED,CAAC,CAAC;EAENC,WAAWA,CAAAC,IAAA,EAA6D;IAAA,IAA5D;MAAEC,SAAS;MAAEL,GAAG;MAAEC,WAAW;MAAEC;IAA0B,CAAC,GAAAE,IAAA;IACpE,IAAI,CAACE,EAAE,GAAGD,SAAS;IACnB,IAAI,CAACL,GAAG,GAAGA,GAAG;IACd,IAAI,CAACC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACC,KAAK,GAAGA,KAAK;EACpB;;EAEA;AACF;AACA;EACE,MAAMK,WAAWA,CAACC,QAAgB,EAAoC;IACpE,IAAIC,IAAI,GAAGD,QAAQ;IACnB,IAAIC,IAAI,CAACC,UAAU,CAAC,SAAS,CAAC,EAAED,IAAI,GAAGA,IAAI,CAACE,KAAK,CAAC,CAAC,CAAC;IACpD,OAAOd,sBAAO,CAACU,WAAW,CAAC,IAAI,CAACD,EAAE,EAAEG,IAAI,CAAC;EAC3C;;EAEA;AACF;AACA;EACE,MAAMG,WAAWA,CACfJ,QAAgB,EAChBK,OAA+B,EACd;IACjB,OAAOhB,sBAAO,CAACe,WAAW,CAAC,IAAI,CAACN,EAAE,EAAEE,QAAQ,EAAE,CAAAK,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,SAAS,KAAI,CAAC,CAAC,CAAC;EACzE;EAEA,MAAMC,gBAAgBA,CACpBC,QAAuC,EACtB;IAAA,IAAAC,WAAA;IACjB,MAAMC,IAAI,GAAG,IAAAC,gBAAU,EAACH,QAAQ,CAAC;IACjC,OAAOnB,sBAAO,CAACkB,gBAAgB,CAC7B,IAAI,CAACT,EAAE,EACPY,IAAI,EACJ,CAAAD,WAAA,OAAI,CAACf,KAAK,cAAAe,WAAA,eAAVA,WAAA,CAAYG,uBAAuB,GAAGC,SAAS,GAAG,QACpD,CAAC;EACH;EAEA,MAAMC,UAAUA,CACdC,MAAwB,EACxBC,QAAoC,EACH;IAEjC,IAAIC,WAAW,GAAGF,MAAM,CAACG,MAAM;IAC/B,IAAIH,MAAM,CAACP,QAAQ,EAAE;MAAE;MACrBS,WAAW,GAAG,MAAM,IAAI,CAACV,gBAAgB,CAACQ,MAAM,CAACP,QAAQ,CAAC;IAC5D;IAEA,IAAIW,aAAkB,GACpBH,QAAQ,IACR/B,YAAY,CAACmC,WAAW,CAACpC,cAAc,EAAGqC,GAAqB,IAAK;MAClE,MAAM;QAAExB,SAAS;QAAEyB;MAAY,CAAC,GAAGD,GAAG;MACtC,IAAIxB,SAAS,KAAK,IAAI,CAACC,EAAE,EAAE;MAC3BkB,QAAQ,CAACM,WAAW,CAAC;IACvB,CAAC,CAAC;IAEJ,IAAI,CAACL,WAAW,EAAE,MAAM,IAAIM,KAAK,CAAC,oBAAoB,CAAC;IACvD,MAAMC,OAAO,GAAGnC,sBAAO,CAACyB,UAAU,CAAC,IAAI,CAAChB,EAAE,EAAE;MAC1C,GAAGiB,MAAM;MACTG,MAAM,EAAED,WAAW;MACnBQ,uBAAuB,EAAE,CAAC,CAACT;IAC7B,CAAC,CAAC;IACF,OAAOQ,OAAO,CACXE,IAAI,CAAEC,gBAAgB,IAAK;MAAA,IAAAC,cAAA;MAC1B,CAAAA,cAAA,GAAAT,aAAa,cAAAS,cAAA,uBAAbA,cAAA,CAAeC,MAAM,CAAC,CAAC;MACvBV,aAAa,GAAG,IAAI;MACpB,OAAOQ,gBAAgB;IACzB,CAAC,CAAC,CACDG,KAAK,CAAEC,GAAQ,IAAK;MAAA,IAAAC,eAAA;MACnB,CAAAA,eAAA,GAAAb,aAAa,cAAAa,eAAA,uBAAbA,eAAA,CAAeH,MAAM,CAAC,CAAC;MACvBV,aAAa,GAAG,IAAI;MACpB,MAAMY,GAAG;IACX,CAAC,CAAC;EACN;EAEAE,cAAcA,CAAA,EAAkB;IAC9B,OAAO5C,sBAAO,CAAC4C,cAAc,CAAC,IAAI,CAACnC,EAAE,CAAC;EACxC;EAEAoC,aAAaA,CAACC,IAAY,EAAiC;IACzD,OAAO9C,sBAAO,CAAC6C,aAAa,CAAC,IAAI,CAACpC,EAAE,EAAEqC,IAAI,CAAC;EAC7C;EAEAC,YAAYA,CAACD,IAAY,EAAwB;IAC/C,OAAO9C,sBAAO,CAAC+C,YAAY,CAAC,IAAI,CAACtC,EAAE,EAAEqC,IAAI,CAAC;EAC5C;EAEAE,UAAUA,CAACC,MAAgB,EAAmB;IAC5C,OAAOjD,sBAAO,CAACgD,UAAU,CAAC,IAAI,CAACvC,EAAE,EAAEwC,MAAM,CAAC;EAC5C;EAEAC,SAASA,CAACJ,IAAY,EAAkC;IACtD,OAAO9C,sBAAO,CAACkD,SAAS,CAAC,IAAI,CAACzC,EAAE,EAAEqC,IAAI,CAAC;EACzC;EAEA,MAAMK,KAAKA,CACTC,EAAU,EACVC,EAAU,EACVC,EAAU,EACVC,EAAU,EACY;IACtB,MAAMC,MAAM,GAAG,MAAMxD,sBAAO,CAACmD,KAAK,CAAC,IAAI,CAAC1C,EAAE,EAAE2C,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC;IAC3D,MAAM,CAACE,SAAS,EAAEC,SAAS,EAAEC,YAAY,EAAEC,KAAK,EAAEC,KAAK,EAAEC,KAAK,EAAEC,KAAK,CAAC,GACpEC,IAAI,CAACC,KAAK,CAACT,MAAM,CAAC;IACpB,OAAO;MACLC,SAAS;MACTC,SAAS;MACTC,YAAY;MACZC,KAAK;MACLC,KAAK;MACLC,KAAK;MACLC;IACF,CAAC;EACH;EAEA,MAAMG,OAAOA,CAAA,EAAkB;IAC7B,OAAOlE,sBAAO,CAACmE,cAAc,CAAC,IAAI,CAAC1D,EAAE,CAAC;EACxC;AACF;AAAC2D,OAAA,CAAAlE,YAAA,GAAAA,YAAA;AAEM,eAAemE,eAAeA,CAACC,KAAa,EAAiB;EAClE,OAAOtE,sBAAO,CAACqE,eAAe,CAACC,KAAK,CAAC;AACvC;AAEO,eAAeC,SAASA,CAAAC,KAAA,EAIU;EAAA,IAJT;IAC9BnE,KAAK;IACLoE,cAAc,EAAEC,YAAY;IAC5B,GAAGC;EACU,CAAC,GAAAH,KAAA;EACd,IAAI5D,IAAI,GAAGP,KAAK;EAChB,IAAIO,IAAI,CAACC,UAAU,CAAC,SAAS,CAAC,EAAED,IAAI,GAAGA,IAAI,CAACE,KAAK,CAAC,CAAC,CAAC;EACpD,MAAM;IACJN,SAAS;IACTL,GAAG;IACHC,WAAW;IACXC,KAAK,EAAEuE;EACT,CAAC,GAAG,MAAM5E,sBAAO,CAAC6E,WAAW,CAAC;IAC5BxE,KAAK,EAAEO,IAAI;IACX6D,cAAc,EAAE,CAAC,CAACC,YAAY;IAC9B,GAAGC;EACL,CAAC,CAAC;EACF,OAAO,IAAIzE,YAAY,CAAC;IAAEM,SAAS;IAAEL,GAAG;IAAEC,WAAW;IAAEC,KAAK,EAAEuE;EAAa,CAAC,CAAC;AAC/E;AAEO,eAAeE,eAAeA,CAAA,EAAkB;EACrD,OAAO9E,sBAAO,CAAC+E,kBAAkB,CAAC,CAAC;AACrC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"..\\..\\src","sources":["NativeRNLlama.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"..\\..\\src","sources":["NativeRNLlama.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AA6JlD,eAAeA,mBAAmB,CAACC,GAAG,CAAO,SAAS,CAAC"}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
export function formatChat(messages) {
|
2
|
+
const chat = [];
|
3
|
+
messages.forEach(currMsg => {
|
4
|
+
const role = currMsg.role || '';
|
5
|
+
let content = '';
|
6
|
+
if ('content' in currMsg) {
|
7
|
+
if (typeof currMsg.content === 'string') {
|
8
|
+
;
|
9
|
+
({
|
10
|
+
content
|
11
|
+
} = currMsg);
|
12
|
+
} else if (Array.isArray(currMsg.content)) {
|
13
|
+
currMsg.content.forEach(part => {
|
14
|
+
if ('text' in part) {
|
15
|
+
content += `${content ? '\n' : ''}${part.text}`;
|
16
|
+
}
|
17
|
+
});
|
18
|
+
} else {
|
19
|
+
throw new TypeError("Invalid 'content' type (ref: https://github.com/ggerganov/llama.cpp/issues/8367)");
|
20
|
+
}
|
21
|
+
} else {
|
22
|
+
throw new Error("Missing 'content' (ref: https://github.com/ggerganov/llama.cpp/issues/8367)");
|
23
|
+
}
|
24
|
+
chat.push({
|
25
|
+
role,
|
26
|
+
content
|
27
|
+
});
|
28
|
+
});
|
29
|
+
return chat;
|
30
|
+
}
|
31
|
+
//# sourceMappingURL=chat.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["formatChat","messages","chat","forEach","currMsg","role","content","Array","isArray","part","text","TypeError","Error","push"],"sourceRoot":"..\\..\\src","sources":["chat.ts"],"mappings":"AAWA,OAAO,SAASA,UAAUA,CACxBC,QAAuC,EACb;EAC1B,MAAMC,IAA8B,GAAG,EAAE;EAEzCD,QAAQ,CAACE,OAAO,CAAEC,OAAO,IAAK;IAC5B,MAAMC,IAAY,GAAGD,OAAO,CAACC,IAAI,IAAI,EAAE;IAEvC,IAAIC,OAAe,GAAG,EAAE;IACxB,IAAI,SAAS,IAAIF,OAAO,EAAE;MACxB,IAAI,OAAOA,OAAO,CAACE,OAAO,KAAK,QAAQ,EAAE;QACvC;QAAC,CAAC;UAAEA;QAAQ,CAAC,GAAGF,OAAO;MACzB,CAAC,MAAM,IAAIG,KAAK,CAACC,OAAO,CAACJ,OAAO,CAACE,OAAO,CAAC,EAAE;QACzCF,OAAO,CAACE,OAAO,CAACH,OAAO,CAAEM,IAAI,IAAK;UAChC,IAAI,MAAM,IAAIA,IAAI,EAAE;YAClBH,OAAO,IAAK,GAAEA,OAAO,GAAG,IAAI,GAAG,EAAG,GAAEG,IAAI,CAACC,IAAK,EAAC;UACjD;QACF,CAAC,CAAC;MACJ,CAAC,MAAM;QACL,MAAM,IAAIC,SAAS,CACjB,kFACF,CAAC;MACH;IACF,CAAC,MAAM;MACL,MAAM,IAAIC,KAAK,CACb,6EACF,CAAC;IACH;IAEAV,IAAI,CAACW,IAAI,CAAC;MAAER,IAAI;MAAEC;IAAQ,CAAC,CAAC;EAC9B,CAAC,CAAC;EACF,OAAOJ,IAAI;AACb"}
|
package/lib/module/index.js
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
import { NativeEventEmitter, DeviceEventEmitter, Platform } from 'react-native';
|
2
2
|
import RNLlama from './NativeRNLlama';
|
3
3
|
import { SchemaGrammarConverter, convertJsonSchemaToGrammar } from './grammar';
|
4
|
+
import { formatChat } from './chat';
|
4
5
|
export { SchemaGrammarConverter, convertJsonSchemaToGrammar };
|
5
6
|
const EVENT_ON_TOKEN = '@RNLlama_onToken';
|
6
7
|
let EventEmitter;
|
@@ -33,7 +34,7 @@ export class LlamaContext {
|
|
33
34
|
*/
|
34
35
|
async loadSession(filepath) {
|
35
36
|
let path = filepath;
|
36
|
-
if (
|
37
|
+
if (path.startsWith('file://')) path = path.slice(7);
|
37
38
|
return RNLlama.loadSession(this.id, path);
|
38
39
|
}
|
39
40
|
|
@@ -43,7 +44,17 @@ export class LlamaContext {
|
|
43
44
|
async saveSession(filepath, options) {
|
44
45
|
return RNLlama.saveSession(this.id, filepath, (options === null || options === void 0 ? void 0 : options.tokenSize) || -1);
|
45
46
|
}
|
47
|
+
async getFormattedChat(messages) {
|
48
|
+
var _this$model;
|
49
|
+
const chat = formatChat(messages);
|
50
|
+
return RNLlama.getFormattedChat(this.id, chat, (_this$model = this.model) !== null && _this$model !== void 0 && _this$model.isChatTemplateSupported ? undefined : 'chatml');
|
51
|
+
}
|
46
52
|
async completion(params, callback) {
|
53
|
+
let finalPrompt = params.prompt;
|
54
|
+
if (params.messages) {
|
55
|
+
// messages always win
|
56
|
+
finalPrompt = await this.getFormattedChat(params.messages);
|
57
|
+
}
|
47
58
|
let tokenListener = callback && EventEmitter.addListener(EVENT_ON_TOKEN, evt => {
|
48
59
|
const {
|
49
60
|
contextId,
|
@@ -52,8 +63,10 @@ export class LlamaContext {
|
|
52
63
|
if (contextId !== this.id) return;
|
53
64
|
callback(tokenResult);
|
54
65
|
});
|
66
|
+
if (!finalPrompt) throw new Error('Prompt is required');
|
55
67
|
const promise = RNLlama.completion(this.id, {
|
56
68
|
...params,
|
69
|
+
prompt: finalPrompt,
|
57
70
|
emit_partial_completion: !!callback
|
58
71
|
});
|
59
72
|
return promise.then(completionResult => {
|
package/lib/module/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["NativeEventEmitter","DeviceEventEmitter","Platform","RNLlama","SchemaGrammarConverter","convertJsonSchemaToGrammar","EVENT_ON_TOKEN","EventEmitter","OS","LlamaContext","gpu","reasonNoGPU","model","constructor","_ref","contextId","id","loadSession","filepath","path","startsWith","slice","saveSession","options","tokenSize","completion","params","callback","tokenListener","addListener","evt","tokenResult","promise","emit_partial_completion","then","completionResult","_tokenListener","remove","catch","err","_tokenListener2","stopCompletion","tokenizeAsync","text","tokenizeSync","detokenize","tokens","embedding","bench","pp","tg","pl","nr","result","modelDesc","modelSize","modelNParams","ppAvg","ppStd","tgAvg","tgStd","JSON","parse","release","releaseContext","setContextLimit","limit","initLlama","_ref2","is_model_asset","isModelAsset","rest","modelDetails","initContext","releaseAllLlama","releaseAllContexts"],"sourceRoot":"..\\..\\src","sources":["index.ts"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,kBAAkB,EAAEC,QAAQ,QAAQ,cAAc;AAE/E,OAAOC,OAAO,MAAM,iBAAiB;AAWrC,SAASC,sBAAsB,EAAEC,0BAA0B,QAAQ,WAAW;AAE9E,
|
1
|
+
{"version":3,"names":["NativeEventEmitter","DeviceEventEmitter","Platform","RNLlama","SchemaGrammarConverter","convertJsonSchemaToGrammar","formatChat","EVENT_ON_TOKEN","EventEmitter","OS","LlamaContext","gpu","reasonNoGPU","model","constructor","_ref","contextId","id","loadSession","filepath","path","startsWith","slice","saveSession","options","tokenSize","getFormattedChat","messages","_this$model","chat","isChatTemplateSupported","undefined","completion","params","callback","finalPrompt","prompt","tokenListener","addListener","evt","tokenResult","Error","promise","emit_partial_completion","then","completionResult","_tokenListener","remove","catch","err","_tokenListener2","stopCompletion","tokenizeAsync","text","tokenizeSync","detokenize","tokens","embedding","bench","pp","tg","pl","nr","result","modelDesc","modelSize","modelNParams","ppAvg","ppStd","tgAvg","tgStd","JSON","parse","release","releaseContext","setContextLimit","limit","initLlama","_ref2","is_model_asset","isModelAsset","rest","modelDetails","initContext","releaseAllLlama","releaseAllContexts"],"sourceRoot":"..\\..\\src","sources":["index.ts"],"mappings":"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"}
|
@@ -12,7 +12,6 @@ export type NativeContextParams = {
|
|
12
12
|
vocab_only?: boolean;
|
13
13
|
lora?: string;
|
14
14
|
lora_scaled?: number;
|
15
|
-
lora_base?: string;
|
16
15
|
rope_freq_base?: number;
|
17
16
|
rope_freq_scale?: number;
|
18
17
|
};
|
@@ -89,6 +88,10 @@ export type NativeSessionLoadResult = {
|
|
89
88
|
tokens_loaded: number;
|
90
89
|
prompt: string;
|
91
90
|
};
|
91
|
+
export type NativeLlamaChatMessage = {
|
92
|
+
role: string;
|
93
|
+
content: string;
|
94
|
+
};
|
92
95
|
export interface Spec extends TurboModule {
|
93
96
|
setContextLimit(limit: number): Promise<void>;
|
94
97
|
initContext(params: NativeContextParams): Promise<NativeLlamaContext>;
|
@@ -98,6 +101,7 @@ export interface Spec extends TurboModule {
|
|
98
101
|
stopCompletion(contextId: number): Promise<void>;
|
99
102
|
tokenizeAsync(contextId: number, text: string): Promise<NativeTokenizeResult>;
|
100
103
|
tokenizeSync(contextId: number, text: string): NativeTokenizeResult;
|
104
|
+
getFormattedChat(contextId: number, messages: NativeLlamaChatMessage[], chatTemplate?: string): Promise<string>;
|
101
105
|
detokenize(contextId: number, tokens: number[]): Promise<string>;
|
102
106
|
embedding(contextId: number, text: string): Promise<NativeEmbeddingResult>;
|
103
107
|
bench(contextId: number, pp: number, tg: number, pl: number, nr: number): Promise<string>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"NativeRNLlama.d.ts","sourceRoot":"","sources":["../../src/NativeRNLlama.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG/C,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IAEpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;
|
1
|
+
{"version":3,"file":"NativeRNLlama.d.ts","sourceRoot":"","sources":["../../src/NativeRNLlama.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import type { NativeLlamaChatMessage } from './NativeRNLlama';
|
2
|
+
export type RNLlamaMessagePart = {
|
3
|
+
text?: string;
|
4
|
+
};
|
5
|
+
export type RNLlamaOAICompatibleMessage = {
|
6
|
+
role: string;
|
7
|
+
content?: string | RNLlamaMessagePart[] | any;
|
8
|
+
};
|
9
|
+
export declare function formatChat(messages: RNLlamaOAICompatibleMessage[]): NativeLlamaChatMessage[];
|
10
|
+
//# sourceMappingURL=chat.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAE7D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,GAAG,kBAAkB,EAAE,GAAG,GAAG,CAAA;CAC9C,CAAA;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,2BAA2B,EAAE,GACtC,sBAAsB,EAAE,CA8B1B"}
|
@@ -1,12 +1,16 @@
|
|
1
1
|
import type { NativeContextParams, NativeLlamaContext, NativeCompletionParams, NativeCompletionTokenProb, NativeCompletionResult, NativeTokenizeResult, NativeEmbeddingResult, NativeSessionLoadResult } from './NativeRNLlama';
|
2
2
|
import { SchemaGrammarConverter, convertJsonSchemaToGrammar } from './grammar';
|
3
|
+
import type { RNLlamaOAICompatibleMessage } from './chat';
|
3
4
|
export { SchemaGrammarConverter, convertJsonSchemaToGrammar };
|
4
5
|
export type TokenData = {
|
5
6
|
token: string;
|
6
7
|
completion_probabilities?: Array<NativeCompletionTokenProb>;
|
7
8
|
};
|
8
9
|
export type ContextParams = NativeContextParams;
|
9
|
-
export type CompletionParams = Omit<NativeCompletionParams, 'emit_partial_completion'
|
10
|
+
export type CompletionParams = Omit<NativeCompletionParams, 'emit_partial_completion' | 'prompt'> & {
|
11
|
+
prompt?: string;
|
12
|
+
messages?: RNLlamaOAICompatibleMessage[];
|
13
|
+
};
|
10
14
|
export type BenchResult = {
|
11
15
|
modelDesc: string;
|
12
16
|
modelSize: number;
|
@@ -20,7 +24,9 @@ export declare class LlamaContext {
|
|
20
24
|
id: number;
|
21
25
|
gpu: boolean;
|
22
26
|
reasonNoGPU: string;
|
23
|
-
model:
|
27
|
+
model: {
|
28
|
+
isChatTemplateSupported?: boolean;
|
29
|
+
};
|
24
30
|
constructor({ contextId, gpu, reasonNoGPU, model }: NativeLlamaContext);
|
25
31
|
/**
|
26
32
|
* Load cached prompt & completion state from a file.
|
@@ -32,6 +38,7 @@ export declare class LlamaContext {
|
|
32
38
|
saveSession(filepath: string, options?: {
|
33
39
|
tokenSize: number;
|
34
40
|
}): Promise<number>;
|
41
|
+
getFormattedChat(messages: RNLlamaOAICompatibleMessage[]): Promise<string>;
|
35
42
|
completion(params: CompletionParams, callback?: (data: TokenData) => void): Promise<NativeCompletionResult>;
|
36
43
|
stopCompletion(): Promise<void>;
|
37
44
|
tokenizeAsync(text: string): Promise<NativeTokenizeResult>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAA;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|