cactus-react-native 0.1.3 → 0.2.1
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 +551 -720
- package/android/src/main/java/com/cactus/Cactus.java +41 -0
- package/android/src/main/java/com/cactus/LlamaContext.java +19 -0
- package/android/src/newarch/java/com/cactus/CactusModule.java +5 -0
- package/android/src/oldarch/java/com/cactus/CactusModule.java +5 -0
- package/ios/Cactus.mm +14 -0
- package/ios/CactusContext.h +1 -0
- package/ios/CactusContext.mm +18 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/cactus +0 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/cactus +0 -0
- package/lib/commonjs/NativeCactus.js +10 -0
- package/lib/commonjs/NativeCactus.js.map +1 -1
- package/lib/commonjs/chat.js +37 -0
- package/lib/commonjs/grammar.js +560 -0
- package/lib/commonjs/index.js +545 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/lm.js +106 -0
- package/lib/commonjs/lm.js.map +1 -1
- package/lib/commonjs/projectId.js +8 -0
- package/lib/commonjs/projectId.js.map +1 -0
- package/lib/commonjs/remote.js +153 -0
- package/lib/commonjs/remote.js.map +1 -0
- package/lib/commonjs/telemetry.js +103 -0
- package/lib/commonjs/telemetry.js.map +1 -0
- package/lib/commonjs/tools.js +79 -0
- package/lib/commonjs/tools.js.map +1 -0
- package/lib/commonjs/tts.js +32 -0
- package/lib/commonjs/tts.js.map +1 -1
- package/lib/commonjs/vlm.js +150 -0
- package/lib/commonjs/vlm.js.map +1 -0
- package/lib/module/NativeCactus.js +8 -0
- package/lib/module/NativeCactus.js.map +1 -1
- package/lib/module/chat.js +33 -0
- package/lib/module/grammar.js +553 -0
- package/lib/module/index.js +435 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/lm.js +101 -0
- package/lib/module/lm.js.map +1 -0
- package/lib/module/projectId.js +4 -0
- package/lib/module/projectId.js.map +1 -0
- package/lib/module/remote.js +144 -0
- package/lib/module/remote.js.map +1 -0
- package/lib/module/telemetry.js +98 -0
- package/lib/module/telemetry.js.map +1 -0
- package/lib/module/tools.js +73 -0
- package/lib/module/tools.js.map +1 -0
- package/lib/module/tts.js +27 -0
- package/lib/module/tts.js.map +1 -1
- package/lib/module/vlm.js +145 -0
- package/lib/module/vlm.js.map +1 -1
- package/lib/typescript/NativeCactus.d.ts +7 -0
- package/lib/typescript/NativeCactus.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +3 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/lm.d.ts +11 -34
- package/lib/typescript/lm.d.ts.map +1 -1
- package/lib/typescript/projectId.d.ts +2 -0
- package/lib/typescript/projectId.d.ts.map +1 -0
- package/lib/typescript/remote.d.ts +7 -0
- package/lib/typescript/remote.d.ts.map +1 -0
- package/lib/typescript/telemetry.d.ts +25 -0
- package/lib/typescript/telemetry.d.ts.map +1 -0
- package/lib/typescript/tools.d.ts +0 -3
- package/lib/typescript/tools.d.ts.map +1 -1
- package/lib/typescript/tts.d.ts.map +1 -1
- package/lib/typescript/vlm.d.ts +14 -34
- package/lib/typescript/vlm.d.ts.map +1 -1
- package/package.json +4 -4
- package/scripts/postInstall.js +33 -0
- package/src/NativeCactus.ts +7 -0
- package/src/index.ts +122 -46
- package/src/lm.ts +80 -5
- package/src/projectId.ts +1 -0
- package/src/remote.ts +175 -0
- package/src/telemetry.ts +138 -0
- package/src/tools.ts +17 -58
- package/src/vlm.ts +129 -8
- package/android/src/main/jniLibs/x86_64/libcactus.so +0 -0
- package/android/src/main/jniLibs/x86_64/libcactus_x86_64.so +0 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.CactusVLM = void 0;
|
|
7
|
+
var _index = require("./index");
|
|
8
|
+
var _telemetry = require("./telemetry");
|
|
9
|
+
var _remote = require("./remote");
|
|
10
|
+
class CactusVLM {
|
|
11
|
+
constructor(context) {
|
|
12
|
+
this.context = context;
|
|
13
|
+
}
|
|
14
|
+
static async init(params, onProgress, cactusToken) {
|
|
15
|
+
if (cactusToken) {
|
|
16
|
+
(0, _remote.setCactusToken)(cactusToken);
|
|
17
|
+
}
|
|
18
|
+
const configs = [params, {
|
|
19
|
+
...params,
|
|
20
|
+
n_gpu_layers: 0
|
|
21
|
+
}];
|
|
22
|
+
for (const config of configs) {
|
|
23
|
+
try {
|
|
24
|
+
const context = await (0, _index.initLlama)(config, onProgress);
|
|
25
|
+
await (0, _index.initMultimodal)(context.id, params.mmproj, false);
|
|
26
|
+
return {
|
|
27
|
+
vlm: new CactusVLM(context),
|
|
28
|
+
error: null
|
|
29
|
+
};
|
|
30
|
+
} catch (e) {
|
|
31
|
+
_telemetry.Telemetry.error(e, {
|
|
32
|
+
n_gpu_layers: config.n_gpu_layers ?? null,
|
|
33
|
+
n_ctx: config.n_ctx ?? null,
|
|
34
|
+
model: config.model ?? null
|
|
35
|
+
});
|
|
36
|
+
if (configs.indexOf(config) === configs.length - 1) {
|
|
37
|
+
return {
|
|
38
|
+
vlm: null,
|
|
39
|
+
error: e
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
vlm: null,
|
|
46
|
+
error: new Error('Failed to initialize CactusVLM')
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
async completion(messages, params = {}, callback) {
|
|
50
|
+
const mode = params.mode || 'local';
|
|
51
|
+
let result;
|
|
52
|
+
let lastError = null;
|
|
53
|
+
if (mode === 'remote') {
|
|
54
|
+
result = await this._handleRemoteCompletion(messages, params, callback);
|
|
55
|
+
} else if (mode === 'local') {
|
|
56
|
+
result = await this._handleLocalCompletion(messages, params, callback);
|
|
57
|
+
} else if (mode === 'localfirst') {
|
|
58
|
+
try {
|
|
59
|
+
result = await this._handleLocalCompletion(messages, params, callback);
|
|
60
|
+
} catch (e) {
|
|
61
|
+
lastError = e;
|
|
62
|
+
try {
|
|
63
|
+
result = await this._handleRemoteCompletion(messages, params, callback);
|
|
64
|
+
} catch (remoteError) {
|
|
65
|
+
throw lastError;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
} else if (mode === 'remotefirst') {
|
|
69
|
+
try {
|
|
70
|
+
result = await this._handleRemoteCompletion(messages, params, callback);
|
|
71
|
+
} catch (e) {
|
|
72
|
+
lastError = e;
|
|
73
|
+
try {
|
|
74
|
+
result = await this._handleLocalCompletion(messages, params, callback);
|
|
75
|
+
} catch (localError) {
|
|
76
|
+
throw lastError;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
} else {
|
|
80
|
+
throw new Error('Invalid mode: ' + mode + '. Must be "local", "remote", "localfirst", or "remotefirst"');
|
|
81
|
+
}
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
async _handleLocalCompletion(messages, params, callback) {
|
|
85
|
+
if (params.images && params.images.length > 0) {
|
|
86
|
+
const formattedPrompt = await this.context.getFormattedChat(messages);
|
|
87
|
+
const prompt = typeof formattedPrompt === 'string' ? formattedPrompt : formattedPrompt.prompt;
|
|
88
|
+
return await (0, _index.multimodalCompletion)(this.context.id, prompt, params.images, {
|
|
89
|
+
...params,
|
|
90
|
+
prompt,
|
|
91
|
+
emit_partial_completion: !!callback
|
|
92
|
+
});
|
|
93
|
+
} else {
|
|
94
|
+
return await this.context.completion({
|
|
95
|
+
messages,
|
|
96
|
+
...params
|
|
97
|
+
}, callback);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async _handleRemoteCompletion(messages, params, callback) {
|
|
101
|
+
const prompt = messages.map(m => `${m.role}: ${m.content}`).join('\n');
|
|
102
|
+
const imagePath = params.images && params.images.length > 0 ? params.images[0] : '';
|
|
103
|
+
let responseText;
|
|
104
|
+
if (imagePath) {
|
|
105
|
+
responseText = await (0, _remote.getVisionCompletion)(prompt, imagePath);
|
|
106
|
+
} else {
|
|
107
|
+
responseText = await (0, _remote.getTextCompletion)(prompt);
|
|
108
|
+
}
|
|
109
|
+
if (callback) {
|
|
110
|
+
for (let i = 0; i < responseText.length; i++) {
|
|
111
|
+
callback({
|
|
112
|
+
token: responseText[i]
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
text: responseText,
|
|
118
|
+
reasoning_content: '',
|
|
119
|
+
tool_calls: [],
|
|
120
|
+
content: responseText,
|
|
121
|
+
tokens_predicted: responseText.split(' ').length,
|
|
122
|
+
tokens_evaluated: prompt.split(' ').length,
|
|
123
|
+
truncated: false,
|
|
124
|
+
stopped_eos: true,
|
|
125
|
+
stopped_word: '',
|
|
126
|
+
stopped_limit: 0,
|
|
127
|
+
stopping_word: '',
|
|
128
|
+
tokens_cached: 0,
|
|
129
|
+
timings: {
|
|
130
|
+
prompt_n: prompt.split(' ').length,
|
|
131
|
+
prompt_ms: 0,
|
|
132
|
+
prompt_per_token_ms: 0,
|
|
133
|
+
prompt_per_second: 0,
|
|
134
|
+
predicted_n: responseText.split(' ').length,
|
|
135
|
+
predicted_ms: 0,
|
|
136
|
+
predicted_per_token_ms: 0,
|
|
137
|
+
predicted_per_second: 0
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
async rewind() {
|
|
142
|
+
// @ts-ignore
|
|
143
|
+
return this.context?.rewind();
|
|
144
|
+
}
|
|
145
|
+
async release() {
|
|
146
|
+
return this.context.release();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.CactusVLM = CactusVLM;
|
|
150
|
+
//# sourceMappingURL=vlm.js.map
|
package/lib/commonjs/vlm.js.map
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_index","require","_telemetry","_remote","CactusVLM","constructor","context","init","params","onProgress","cactusToken","setCactusToken","configs","n_gpu_layers","config","initLlama","initMultimodal","id","mmproj","vlm","error","e","Telemetry","n_ctx","model","indexOf","length","Error","completion","messages","callback","mode","result","lastError","_handleRemoteCompletion","_handleLocalCompletion","remoteError","localError","images","formattedPrompt","getFormattedChat","prompt","multimodalCompletion","emit_partial_completion","map","m","role","content","join","imagePath","responseText","getVisionCompletion","getTextCompletion","i","token","text","reasoning_content","tool_calls","tokens_predicted","split","tokens_evaluated","truncated","stopped_eos","stopped_word","stopped_limit","stopping_word","tokens_cached","timings","prompt_n","prompt_ms","prompt_per_token_ms","prompt_per_second","predicted_n","predicted_ms","predicted_per_token_ms","predicted_per_second","rewind","release","exports"],"sourceRoot":"../../src","sources":["vlm.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAYA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAgBO,MAAMG,SAAS,CAAC;EAGbC,WAAWA,CAACC,OAAqB,EAAE;IACzC,IAAI,CAACA,OAAO,GAAGA,OAAO;EACxB;EAEA,aAAaC,IAAIA,CACfC,MAAwB,EACxBC,UAAuC,EACvCC,WAAoB,EACM;IAC1B,IAAIA,WAAW,EAAE;MACf,IAAAC,sBAAc,EAACD,WAAW,CAAC;IAC7B;IAEA,MAAME,OAAO,GAAG,CACdJ,MAAM,EACN;MAAE,GAAGA,MAAM;MAAEK,YAAY,EAAE;IAAE,CAAC,CAC/B;IAED,KAAK,MAAMC,MAAM,IAAIF,OAAO,EAAE;MAC5B,IAAI;QACF,MAAMN,OAAO,GAAG,MAAM,IAAAS,gBAAS,EAACD,MAAM,EAAEL,UAAU,CAAC;QACnD,MAAM,IAAAO,qBAAc,EAACV,OAAO,CAACW,EAAE,EAAET,MAAM,CAACU,MAAM,EAAE,KAAK,CAAC;QACtD,OAAO;UAACC,GAAG,EAAE,IAAIf,SAAS,CAACE,OAAO,CAAC;UAAEc,KAAK,EAAE;QAAI,CAAC;MACnD,CAAC,CAAC,OAAOC,CAAC,EAAE;QACVC,oBAAS,CAACF,KAAK,CAACC,CAAC,EAAW;UAC1BR,YAAY,EAAEC,MAAM,CAACD,YAAY,IAAI,IAAI;UACzCU,KAAK,EAAET,MAAM,CAACS,KAAK,IAAI,IAAI;UAC3BC,KAAK,EAAEV,MAAM,CAACU,KAAK,IAAI;QACzB,CAAC,CAAC;QACF,IAAIZ,OAAO,CAACa,OAAO,CAACX,MAAM,CAAC,KAAKF,OAAO,CAACc,MAAM,GAAG,CAAC,EAAE;UAClD,OAAO;YAACP,GAAG,EAAE,IAAI;YAAEC,KAAK,EAAEC;UAAU,CAAC;QACvC;MACF;IACF;IAEA,OAAO;MAACF,GAAG,EAAE,IAAI;MAAEC,KAAK,EAAE,IAAIO,KAAK,CAAC,gCAAgC;IAAC,CAAC;EACxE;EAEA,MAAMC,UAAUA,CACdC,QAAsC,EACtCrB,MAA2B,GAAG,CAAC,CAAC,EAChCsB,QAA8B,EACG;IACjC,MAAMC,IAAI,GAAGvB,MAAM,CAACuB,IAAI,IAAI,OAAO;IAEnC,IAAIC,MAA8B;IAClC,IAAIC,SAAuB,GAAG,IAAI;IAElC,IAAIF,IAAI,KAAK,QAAQ,EAAE;MACrBC,MAAM,GAAG,MAAM,IAAI,CAACE,uBAAuB,CAACL,QAAQ,EAAErB,MAAM,EAAEsB,QAAQ,CAAC;IACzE,CAAC,MAAM,IAAIC,IAAI,KAAK,OAAO,EAAE;MAC3BC,MAAM,GAAG,MAAM,IAAI,CAACG,sBAAsB,CAACN,QAAQ,EAAErB,MAAM,EAAEsB,QAAQ,CAAC;IACxE,CAAC,MAAM,IAAIC,IAAI,KAAK,YAAY,EAAE;MAChC,IAAI;QACFC,MAAM,GAAG,MAAM,IAAI,CAACG,sBAAsB,CAACN,QAAQ,EAAErB,MAAM,EAAEsB,QAAQ,CAAC;MACxE,CAAC,CAAC,OAAOT,CAAC,EAAE;QACVY,SAAS,GAAGZ,CAAU;QACtB,IAAI;UACFW,MAAM,GAAG,MAAM,IAAI,CAACE,uBAAuB,CAACL,QAAQ,EAAErB,MAAM,EAAEsB,QAAQ,CAAC;QACzE,CAAC,CAAC,OAAOM,WAAW,EAAE;UACpB,MAAMH,SAAS;QACjB;MACF;IACF,CAAC,MAAM,IAAIF,IAAI,KAAK,aAAa,EAAE;MACjC,IAAI;QACFC,MAAM,GAAG,MAAM,IAAI,CAACE,uBAAuB,CAACL,QAAQ,EAAErB,MAAM,EAAEsB,QAAQ,CAAC;MACzE,CAAC,CAAC,OAAOT,CAAC,EAAE;QACVY,SAAS,GAAGZ,CAAU;QACtB,IAAI;UACFW,MAAM,GAAG,MAAM,IAAI,CAACG,sBAAsB,CAACN,QAAQ,EAAErB,MAAM,EAAEsB,QAAQ,CAAC;QACxE,CAAC,CAAC,OAAOO,UAAU,EAAE;UACnB,MAAMJ,SAAS;QACjB;MACF;IACF,CAAC,MAAM;MACL,MAAM,IAAIN,KAAK,CAAC,gBAAgB,GAAGI,IAAI,GAAG,6DAA6D,CAAC;IAC1G;IAEA,OAAOC,MAAM;EACf;EAEA,MAAcG,sBAAsBA,CAClCN,QAAsC,EACtCrB,MAA2B,EAC3BsB,QAA8B,EACG;IACjC,IAAItB,MAAM,CAAC8B,MAAM,IAAI9B,MAAM,CAAC8B,MAAM,CAACZ,MAAM,GAAG,CAAC,EAAE;MAC7C,MAAMa,eAAe,GAAG,MAAM,IAAI,CAACjC,OAAO,CAACkC,gBAAgB,CAACX,QAAQ,CAAC;MACrE,MAAMY,MAAM,GACV,OAAOF,eAAe,KAAK,QAAQ,GAC/BA,eAAe,GACfA,eAAe,CAACE,MAAM;MAC5B,OAAO,MAAM,IAAAC,2BAAoB,EAC/B,IAAI,CAACpC,OAAO,CAACW,EAAE,EACfwB,MAAM,EACNjC,MAAM,CAAC8B,MAAM,EACb;QAAE,GAAG9B,MAAM;QAAEiC,MAAM;QAAEE,uBAAuB,EAAE,CAAC,CAACb;MAAS,CAC3D,CAAC;IACH,CAAC,MAAM;MACL,OAAO,MAAM,IAAI,CAACxB,OAAO,CAACsB,UAAU,CAAC;QAAEC,QAAQ;QAAE,GAAGrB;MAAO,CAAC,EAAEsB,QAAQ,CAAC;IACzE;EACF;EAEA,MAAcI,uBAAuBA,CACnCL,QAAsC,EACtCrB,MAA2B,EAC3BsB,QAA8B,EACG;IACjC,MAAMW,MAAM,GAAGZ,QAAQ,CAACe,GAAG,CAAEC,CAAC,IAAK,GAAGA,CAAC,CAACC,IAAI,KAAKD,CAAC,CAACE,OAAO,EAAE,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACxE,MAAMC,SAAS,GAAGzC,MAAM,CAAC8B,MAAM,IAAI9B,MAAM,CAAC8B,MAAM,CAACZ,MAAM,GAAG,CAAC,GAAGlB,MAAM,CAAC8B,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE;IAEnF,IAAIY,YAAoB;IACxB,IAAID,SAAS,EAAE;MACbC,YAAY,GAAG,MAAM,IAAAC,2BAAmB,EAACV,MAAM,EAAEQ,SAAS,CAAC;IAC7D,CAAC,MAAM;MACLC,YAAY,GAAG,MAAM,IAAAE,yBAAiB,EAACX,MAAM,CAAC;IAChD;IAEA,IAAIX,QAAQ,EAAE;MACZ,KAAK,IAAIuB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,YAAY,CAACxB,MAAM,EAAE2B,CAAC,EAAE,EAAE;QAC5CvB,QAAQ,CAAC;UAAEwB,KAAK,EAAEJ,YAAY,CAACG,CAAC;QAAE,CAAC,CAAC;MACtC;IACF;IAEA,OAAO;MACLE,IAAI,EAAEL,YAAY;MAClBM,iBAAiB,EAAE,EAAE;MACrBC,UAAU,EAAE,EAAE;MACdV,OAAO,EAAEG,YAAY;MACrBQ,gBAAgB,EAAER,YAAY,CAACS,KAAK,CAAC,GAAG,CAAC,CAACjC,MAAM;MAChDkC,gBAAgB,EAAEnB,MAAM,CAACkB,KAAK,CAAC,GAAG,CAAC,CAACjC,MAAM;MAC1CmC,SAAS,EAAE,KAAK;MAChBC,WAAW,EAAE,IAAI;MACjBC,YAAY,EAAE,EAAE;MAChBC,aAAa,EAAE,CAAC;MAChBC,aAAa,EAAE,EAAE;MACjBC,aAAa,EAAE,CAAC;MAChBC,OAAO,EAAE;QACPC,QAAQ,EAAE3B,MAAM,CAACkB,KAAK,CAAC,GAAG,CAAC,CAACjC,MAAM;QAClC2C,SAAS,EAAE,CAAC;QACZC,mBAAmB,EAAE,CAAC;QACtBC,iBAAiB,EAAE,CAAC;QACpBC,WAAW,EAAEtB,YAAY,CAACS,KAAK,CAAC,GAAG,CAAC,CAACjC,MAAM;QAC3C+C,YAAY,EAAE,CAAC;QACfC,sBAAsB,EAAE,CAAC;QACzBC,oBAAoB,EAAE;MACxB;IACF,CAAC;EACH;EAEA,MAAMC,MAAMA,CAAA,EAAkB;IAC5B;IACA,OAAO,IAAI,CAACtE,OAAO,EAAEsE,MAAM,CAAC,CAAC;EAC/B;EAEA,MAAMC,OAAOA,CAAA,EAAkB;IAC7B,OAAO,IAAI,CAACvE,OAAO,CAACuE,OAAO,CAAC,CAAC;EAC/B;AACF;AAACC,OAAA,CAAA1E,SAAA,GAAAA,SAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativeCactus.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;;AAkSlD;;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativeCactus.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;;AAkSlD;;AAkMA,eAAeA,mBAAmB,CAACC,GAAG,CAAO,QAAQ,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export function formatChat(messages) {
|
|
4
|
+
const chat = [];
|
|
5
|
+
messages.forEach(currMsg => {
|
|
6
|
+
const role = currMsg.role || '';
|
|
7
|
+
let content = '';
|
|
8
|
+
if ('content' in currMsg) {
|
|
9
|
+
if (typeof currMsg.content === 'string') {
|
|
10
|
+
;
|
|
11
|
+
({
|
|
12
|
+
content
|
|
13
|
+
} = currMsg);
|
|
14
|
+
} else if (Array.isArray(currMsg.content)) {
|
|
15
|
+
currMsg.content.forEach(part => {
|
|
16
|
+
if ('text' in part) {
|
|
17
|
+
content += `${content ? '\n' : ''}${part.text}`;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
} else {
|
|
21
|
+
throw new TypeError("Invalid 'content' type (ref: https://github.com/ggerganov/llama.cpp/issues/8367)");
|
|
22
|
+
}
|
|
23
|
+
} else {
|
|
24
|
+
throw new Error("Missing 'content' (ref: https://github.com/ggerganov/llama.cpp/issues/8367)");
|
|
25
|
+
}
|
|
26
|
+
chat.push({
|
|
27
|
+
role,
|
|
28
|
+
content
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
return chat;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=chat.js.map
|