cactus-react-native 1.0.1 → 1.0.2
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 +241 -45
- package/android/src/main/jniLibs/arm64-v8a/libcactus.a +0 -0
- package/cpp/HybridCactus.cpp +63 -51
- package/cpp/HybridCactus.hpp +21 -14
- package/cpp/HybridCactusUtil.cpp +13 -11
- package/cpp/HybridCactusUtil.hpp +9 -9
- package/cpp/cactus_ffi.h +1 -1
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/cactus_ffi.h +1 -1
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/engine.h +204 -6
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ffi_utils.h +150 -36
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/graph.h +20 -1
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/kernel.h +21 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/cactus +0 -0
- package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/cactus_ffi.h +1 -1
- package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/engine.h +204 -6
- package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/ffi_utils.h +150 -36
- package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/graph.h +20 -1
- package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/kernel.h +21 -0
- package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/cactus +0 -0
- package/lib/module/classes/CactusLM.js +4 -2
- package/lib/module/classes/CactusLM.js.map +1 -1
- package/lib/module/constants/packageVersion.js +1 -1
- package/lib/module/hooks/useCactusLM.js +11 -6
- package/lib/module/hooks/useCactusLM.js.map +1 -1
- package/lib/module/native/Cactus.js +2 -2
- package/lib/module/native/Cactus.js.map +1 -1
- package/lib/typescript/src/classes/CactusLM.d.ts +2 -1
- package/lib/typescript/src/classes/CactusLM.d.ts.map +1 -1
- package/lib/typescript/src/constants/packageVersion.d.ts +1 -1
- package/lib/typescript/src/hooks/useCactusLM.d.ts +1 -1
- package/lib/typescript/src/hooks/useCactusLM.d.ts.map +1 -1
- package/lib/typescript/src/native/Cactus.d.ts +1 -1
- package/lib/typescript/src/native/Cactus.d.ts.map +1 -1
- package/lib/typescript/src/specs/Cactus.nitro.d.ts +1 -1
- package/lib/typescript/src/specs/Cactus.nitro.d.ts.map +1 -1
- package/lib/typescript/src/types/CactusLM.d.ts +3 -1
- package/lib/typescript/src/types/CactusLM.d.ts.map +1 -1
- package/nitrogen/generated/shared/c++/HybridCactusSpec.hpp +1 -1
- package/package.json +1 -1
- package/src/classes/CactusLM.ts +4 -2
- package/src/constants/packageVersion.ts +1 -1
- package/src/hooks/useCactusLM.ts +8 -5
- package/src/native/Cactus.ts +6 -2
- package/src/specs/Cactus.nitro.ts +5 -1
- package/src/types/CactusLM.ts +3 -1
|
@@ -28,8 +28,9 @@ enum class OpType {
|
|
|
28
28
|
INPUT, PRECISION_CAST,
|
|
29
29
|
ADD, ADD_CLIPPED, SUBTRACT, MULTIPLY, DIVIDE,
|
|
30
30
|
MATMUL, TRANSPOSE, RESHAPE, SLICE, GATHER, EMBEDDING,
|
|
31
|
+
BILINEAR_INTERPOLATION,
|
|
31
32
|
SUM, MEAN, VARIANCE, MIN, MAX,
|
|
32
|
-
RMS_NORM, ROPE, SOFTMAX, ATTENTION, CONV1D_CAUSAL,
|
|
33
|
+
RMS_NORM, ROPE, SOFTMAX, ATTENTION, CONV1D_CAUSAL, CONV1D_K3,
|
|
33
34
|
SCALAR_ADD, SCALAR_SUBTRACT, SCALAR_MULTIPLY, SCALAR_DIVIDE, SCALAR_EXP, SCALAR_SQRT, SCALAR_COS, SCALAR_SIN,
|
|
34
35
|
SILU, GELU,
|
|
35
36
|
SAMPLE, CONCAT,
|
|
@@ -139,6 +140,7 @@ struct OpParams {
|
|
|
139
140
|
ComputeBackend backend = ComputeBackend::CPU;
|
|
140
141
|
|
|
141
142
|
size_t dilation = 1;
|
|
143
|
+
size_t stride = 1;
|
|
142
144
|
float temperature = 1.0f;
|
|
143
145
|
float top_p = 1.0f;
|
|
144
146
|
size_t top_k = 0;
|
|
@@ -146,6 +148,8 @@ struct OpParams {
|
|
|
146
148
|
|
|
147
149
|
size_t index_value = 0; // For INDEX operation
|
|
148
150
|
size_t num_classes = 0; // For scatter operations
|
|
151
|
+
size_t dst_height = 0;
|
|
152
|
+
size_t dst_width = 0;
|
|
149
153
|
};
|
|
150
154
|
|
|
151
155
|
struct GraphNode {
|
|
@@ -187,6 +191,12 @@ namespace ValidationUtils {
|
|
|
187
191
|
class CactusGraph {
|
|
188
192
|
public:
|
|
189
193
|
CactusGraph();
|
|
194
|
+
|
|
195
|
+
struct DebugNodeEntry {
|
|
196
|
+
uint32_t layer_idx;
|
|
197
|
+
std::string name;
|
|
198
|
+
size_t node_id;
|
|
199
|
+
};
|
|
190
200
|
|
|
191
201
|
size_t input(const std::vector<size_t>& shape, Precision precision = Precision::INT8);
|
|
192
202
|
size_t precision_cast(size_t input, Precision target_precision);
|
|
@@ -212,6 +222,7 @@ public:
|
|
|
212
222
|
|
|
213
223
|
size_t matmul(size_t input1, size_t input2, bool pretransposed_rhs = false, ComputeBackend backend = ComputeBackend::CPU);
|
|
214
224
|
size_t transpose(size_t input, ComputeBackend backend = ComputeBackend::CPU);
|
|
225
|
+
size_t transposeN(size_t input, const std::vector<size_t>& permutation, ComputeBackend backend = ComputeBackend::CPU);
|
|
215
226
|
size_t reshape(size_t input, const std::vector<size_t>& new_shape);
|
|
216
227
|
size_t slice(size_t input, int axis, size_t start, size_t length);
|
|
217
228
|
size_t index(size_t input, size_t index_value, int dim);
|
|
@@ -228,6 +239,7 @@ public:
|
|
|
228
239
|
void set_quantization_scale(size_t node_id, float scale);
|
|
229
240
|
size_t embedding(const std::string& filename, size_t indices);
|
|
230
241
|
size_t embedding(size_t embedding_tensor, size_t indices);
|
|
242
|
+
size_t bilinear_interpolation(size_t pos_embeds, size_t dst_height, size_t dst_width);
|
|
231
243
|
|
|
232
244
|
size_t layernorm(size_t input, size_t weight, size_t bias, float epsilon = 1e-5f);
|
|
233
245
|
size_t topk(size_t input, size_t k);
|
|
@@ -239,6 +251,7 @@ public:
|
|
|
239
251
|
size_t attention(size_t query, size_t key, size_t value, float scale, size_t position_offset, size_t window_size, ComputeBackend backend = ComputeBackend::CPU);
|
|
240
252
|
|
|
241
253
|
size_t conv1d_causal(size_t input, size_t weight, size_t kernel_size, size_t dilation = 1);
|
|
254
|
+
size_t conv1d_k3(size_t input, size_t weight, size_t stride);
|
|
242
255
|
|
|
243
256
|
size_t sample(size_t logits, float temperature = 0.6f, float top_p = 0.95f, size_t top_k = 20);
|
|
244
257
|
|
|
@@ -252,6 +265,11 @@ public:
|
|
|
252
265
|
void execute(const std::string& profile_file = "");
|
|
253
266
|
void hard_reset();
|
|
254
267
|
void soft_reset();
|
|
268
|
+
|
|
269
|
+
void register_debug_node(uint32_t layer_idx, const std::string& name, size_t node_id);
|
|
270
|
+
void capture_debug_node(uint32_t layer_idx, const std::string& name, size_t node_id);
|
|
271
|
+
const std::vector<DebugNodeEntry>& get_debug_nodes() const;
|
|
272
|
+
void clear_debug_nodes();
|
|
255
273
|
|
|
256
274
|
size_t add_node(OpType op_type, const std::vector<size_t>& inputs, const std::vector<size_t>& output_shape, const OpParams& params = {});
|
|
257
275
|
const BufferDesc& get_output_buffer(size_t node_id) const;
|
|
@@ -265,6 +283,7 @@ private:
|
|
|
265
283
|
size_t next_node_id_;
|
|
266
284
|
std::vector<std::unique_ptr<GraphFile::MappedFile>> mapped_files_;
|
|
267
285
|
std::unordered_map<std::string, size_t> weight_cache_;
|
|
286
|
+
std::vector<DebugNodeEntry> debug_nodes_;
|
|
268
287
|
};
|
|
269
288
|
|
|
270
289
|
|
|
@@ -225,6 +225,27 @@ void cactus_conv1d_causal_depthwise_int8(
|
|
|
225
225
|
float weight_scale,
|
|
226
226
|
float output_scale);
|
|
227
227
|
|
|
228
|
+
void cactus_conv1d_f32_k3(
|
|
229
|
+
const float* input,
|
|
230
|
+
const float* weight,
|
|
231
|
+
float* output,
|
|
232
|
+
size_t N, size_t L,
|
|
233
|
+
size_t C_in, size_t C_out,
|
|
234
|
+
size_t stride
|
|
235
|
+
);
|
|
236
|
+
|
|
237
|
+
void cactus_conv1d_f16_k3(
|
|
238
|
+
const __fp16* input,
|
|
239
|
+
const __fp16* weight,
|
|
240
|
+
__fp16* output,
|
|
241
|
+
size_t N, size_t L,
|
|
242
|
+
size_t C_in, size_t C_out,
|
|
243
|
+
size_t stride
|
|
244
|
+
);
|
|
245
|
+
|
|
246
|
+
void cactus_bilinear_interpolation_fp32(const float* input, float* output, size_t src_height, size_t src_width, size_t embed_dim,
|
|
247
|
+
size_t dst_height, size_t dst_width);
|
|
248
|
+
|
|
228
249
|
void cactus_sample_f32(const float* logits, uint32_t* output, size_t vocab_size,
|
|
229
250
|
float temperature, float top_p, size_t top_k, size_t random_seed);
|
|
230
251
|
void cactus_sample_f16(const __fp16* logits, uint32_t* output, size_t vocab_size,
|
|
Binary file
|
|
@@ -19,10 +19,12 @@ export class CactusLM {
|
|
|
19
19
|
static modelsInfoPath = 'models/info.json';
|
|
20
20
|
constructor({
|
|
21
21
|
model,
|
|
22
|
-
contextSize
|
|
22
|
+
contextSize,
|
|
23
|
+
corpusDir
|
|
23
24
|
} = {}) {
|
|
24
25
|
this.model = model ?? CactusLM.defaultModel;
|
|
25
26
|
this.contextSize = contextSize ?? CactusLM.defaultContextSize;
|
|
27
|
+
this.corpusDir = corpusDir;
|
|
26
28
|
}
|
|
27
29
|
async download({
|
|
28
30
|
onProgress
|
|
@@ -56,7 +58,7 @@ export class CactusLM {
|
|
|
56
58
|
}
|
|
57
59
|
const modelPath = await CactusFileSystem.getModelPath(this.model);
|
|
58
60
|
try {
|
|
59
|
-
await this.cactus.init(modelPath, this.contextSize);
|
|
61
|
+
await this.cactus.init(modelPath, this.contextSize, this.corpusDir);
|
|
60
62
|
Telemetry.logInit(this.model, true);
|
|
61
63
|
this.isInitialized = true;
|
|
62
64
|
} catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Cactus","CactusFileSystem","Telemetry","CactusConfig","Database","getErrorMessage","CactusLM","cactus","isDownloading","isInitialized","isGenerating","defaultModel","defaultContextSize","defaultCompleteOptions","maxTokens","defaultEmbedBufferSize","modelsInfoPath","constructor","model","contextSize","download","onProgress","Error","modelExists","downloadModel","getModels","forceRefresh","init","telemetryToken","modelPath","getModelPath","logInit","error","complete","messages","options","tools","onToken","responseBufferSize","result","logCompletion","success","undefined","response","embed","text","embedding","logEmbedding","stop","reset","destroy","fileExists","JSON","parse","readFile","deleteFile","models","isDownloaded","slug","writeFile","stringify"],"sourceRoot":"../../../src","sources":["classes/CactusLM.ts"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,gBAAgB,QAAQ,oBAAW;AAWpD,SAASC,SAAS,QAAQ,2BAAwB;AAClD,SAASC,YAAY,QAAQ,2BAAwB;AACrD,SAASC,QAAQ,QAAQ,oBAAiB;AAC1C,SAASC,eAAe,QAAQ,mBAAgB;AAEhD,OAAO,MAAMC,QAAQ,CAAC;EACHC,MAAM,GAAG,IAAIP,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"names":["Cactus","CactusFileSystem","Telemetry","CactusConfig","Database","getErrorMessage","CactusLM","cactus","isDownloading","isInitialized","isGenerating","defaultModel","defaultContextSize","defaultCompleteOptions","maxTokens","defaultEmbedBufferSize","modelsInfoPath","constructor","model","contextSize","corpusDir","download","onProgress","Error","modelExists","downloadModel","getModels","forceRefresh","init","telemetryToken","modelPath","getModelPath","logInit","error","complete","messages","options","tools","onToken","responseBufferSize","result","logCompletion","success","undefined","response","embed","text","embedding","logEmbedding","stop","reset","destroy","fileExists","JSON","parse","readFile","deleteFile","models","isDownloaded","slug","writeFile","stringify"],"sourceRoot":"../../../src","sources":["classes/CactusLM.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,11 +6,13 @@ import { CactusFileSystem } from "../native/index.js";
|
|
|
6
6
|
import { getErrorMessage } from "../utils/error.js";
|
|
7
7
|
export const useCactusLM = ({
|
|
8
8
|
model = 'qwen3-0.6',
|
|
9
|
-
contextSize = 2048
|
|
9
|
+
contextSize = 2048,
|
|
10
|
+
corpusDir = undefined
|
|
10
11
|
} = {}) => {
|
|
11
12
|
const [cactusLM, setCactusLM] = useState(() => new CactusLM({
|
|
12
13
|
model,
|
|
13
|
-
contextSize
|
|
14
|
+
contextSize,
|
|
15
|
+
corpusDir
|
|
14
16
|
}));
|
|
15
17
|
|
|
16
18
|
// State
|
|
@@ -29,7 +31,8 @@ export const useCactusLM = ({
|
|
|
29
31
|
useEffect(() => {
|
|
30
32
|
setCactusLM(new CactusLM({
|
|
31
33
|
model,
|
|
32
|
-
contextSize
|
|
34
|
+
contextSize,
|
|
35
|
+
corpusDir
|
|
33
36
|
}));
|
|
34
37
|
setCompletion('');
|
|
35
38
|
setIsGenerating(false);
|
|
@@ -54,7 +57,7 @@ export const useCactusLM = ({
|
|
|
54
57
|
return () => {
|
|
55
58
|
mounted = false;
|
|
56
59
|
};
|
|
57
|
-
}, [model, contextSize]);
|
|
60
|
+
}, [model, contextSize, corpusDir]);
|
|
58
61
|
useEffect(() => {
|
|
59
62
|
return () => {
|
|
60
63
|
cactusLM.destroy().catch(() => {});
|
|
@@ -181,22 +184,24 @@ export const useCactusLM = ({
|
|
|
181
184
|
}, [cactusLM]);
|
|
182
185
|
const reset = useCallback(async () => {
|
|
183
186
|
setError(null);
|
|
184
|
-
setCompletion('');
|
|
185
187
|
try {
|
|
186
188
|
await cactusLM.reset();
|
|
187
189
|
} catch (e) {
|
|
188
190
|
setError(getErrorMessage(e));
|
|
189
191
|
throw e;
|
|
192
|
+
} finally {
|
|
193
|
+
setCompletion('');
|
|
190
194
|
}
|
|
191
195
|
}, [cactusLM]);
|
|
192
196
|
const destroy = useCallback(async () => {
|
|
193
197
|
setError(null);
|
|
194
|
-
setCompletion('');
|
|
195
198
|
try {
|
|
196
199
|
await cactusLM.destroy();
|
|
197
200
|
} catch (e) {
|
|
198
201
|
setError(getErrorMessage(e));
|
|
199
202
|
throw e;
|
|
203
|
+
} finally {
|
|
204
|
+
setCompletion('');
|
|
200
205
|
}
|
|
201
206
|
}, [cactusLM]);
|
|
202
207
|
const getModels = useCallback(async ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useState","useRef","CactusLM","CactusFileSystem","getErrorMessage","useCactusLM","model","contextSize","cactusLM","setCactusLM","completion","setCompletion","isGenerating","setIsGenerating","isInitializing","setIsInitializing","isDownloaded","setIsDownloaded","isDownloading","setIsDownloading","downloadProgress","setDownloadProgress","error","setError","currentModelRef","currentDownloadIdRef","current","mounted","modelExists","then","exists","catch","e","destroy","download","onProgress","message","Error","thisModel","thisDownloadId","progress","init","complete","messages","options","tools","onToken","token","prev","embed","text","stop","reset","getModels","forceRefresh"],"sourceRoot":"../../../src","sources":["hooks/useCactusLM.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,QAAQ,OAAO;AAChE,SAASC,QAAQ,QAAQ,wBAAqB;AAC9C,SAASC,gBAAgB,QAAQ,oBAAW;AAC5C,SAASC,eAAe,QAAQ,mBAAgB;AAYhD,OAAO,MAAMC,WAAW,GAAGA,CAAC;EAC1BC,KAAK,GAAG,WAAW;EACnBC,WAAW,GAAG;
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useState","useRef","CactusLM","CactusFileSystem","getErrorMessage","useCactusLM","model","contextSize","corpusDir","undefined","cactusLM","setCactusLM","completion","setCompletion","isGenerating","setIsGenerating","isInitializing","setIsInitializing","isDownloaded","setIsDownloaded","isDownloading","setIsDownloading","downloadProgress","setDownloadProgress","error","setError","currentModelRef","currentDownloadIdRef","current","mounted","modelExists","then","exists","catch","e","destroy","download","onProgress","message","Error","thisModel","thisDownloadId","progress","init","complete","messages","options","tools","onToken","token","prev","embed","text","stop","reset","getModels","forceRefresh"],"sourceRoot":"../../../src","sources":["hooks/useCactusLM.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
import { NitroModules } from 'react-native-nitro-modules';
|
|
4
4
|
export class Cactus {
|
|
5
5
|
hybridCactus = NitroModules.createHybridObject('Cactus');
|
|
6
|
-
init(modelPath, contextSize) {
|
|
7
|
-
return this.hybridCactus.init(modelPath, contextSize);
|
|
6
|
+
init(modelPath, contextSize, corpusDir) {
|
|
7
|
+
return this.hybridCactus.init(modelPath, contextSize, corpusDir);
|
|
8
8
|
}
|
|
9
9
|
async complete(messages, responseBufferSize, options, tools, callback) {
|
|
10
10
|
const messagesJson = JSON.stringify(messages);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NitroModules","Cactus","hybridCactus","createHybridObject","init","modelPath","contextSize","complete","messages","responseBufferSize","options","tools","callback","messagesJson","JSON","stringify","optionsJson","temperature","top_p","topP","top_k","topK","max_tokens","maxTokens","stop_sequences","stopSequences","undefined","toolsJson","response","parsed","parse","success","functionCalls","function_calls","timeToFirstTokenMs","time_to_first_token_ms","totalTimeMs","total_time_ms","tokensPerSecond","tokens_per_second","prefillTokens","prefill_tokens","decodeTokens","decode_tokens","totalTokens","total_tokens","Error","embed","text","embeddingBufferSize","reset","stop","destroy"],"sourceRoot":"../../../src","sources":["native/Cactus.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AASzD,OAAO,MAAMC,MAAM,CAAC;EACDC,YAAY,GAC3BF,YAAY,CAACG,kBAAkB,CAAa,QAAQ,CAAC;EAEhDC,IAAIA,
|
|
1
|
+
{"version":3,"names":["NitroModules","Cactus","hybridCactus","createHybridObject","init","modelPath","contextSize","corpusDir","complete","messages","responseBufferSize","options","tools","callback","messagesJson","JSON","stringify","optionsJson","temperature","top_p","topP","top_k","topK","max_tokens","maxTokens","stop_sequences","stopSequences","undefined","toolsJson","response","parsed","parse","success","functionCalls","function_calls","timeToFirstTokenMs","time_to_first_token_ms","totalTimeMs","total_time_ms","tokensPerSecond","tokens_per_second","prefillTokens","prefill_tokens","decodeTokens","decode_tokens","totalTokens","total_tokens","Error","embed","text","embeddingBufferSize","reset","stop","destroy"],"sourceRoot":"../../../src","sources":["native/Cactus.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AASzD,OAAO,MAAMC,MAAM,CAAC;EACDC,YAAY,GAC3BF,YAAY,CAACG,kBAAkB,CAAa,QAAQ,CAAC;EAEhDC,IAAIA,CACTC,SAAiB,EACjBC,WAAmB,EACnBC,SAAkB,EACH;IACf,OAAO,IAAI,CAACL,YAAY,CAACE,IAAI,CAACC,SAAS,EAAEC,WAAW,EAAEC,SAAS,CAAC;EAClE;EAEA,MAAaC,QAAQA,CACnBC,QAAmB,EACnBC,kBAA0B,EAC1BC,OAAiB,EACjBC,KAAc,EACdC,QAAmD,EAClB;IACjC,MAAMC,YAAY,GAAGC,IAAI,CAACC,SAAS,CAACP,QAAQ,CAAC;IAC7C,MAAMQ,WAAW,GAAGN,OAAO,GACvBI,IAAI,CAACC,SAAS,CAAC;MACbE,WAAW,EAAEP,OAAO,CAACO,WAAW;MAChCC,KAAK,EAAER,OAAO,CAACS,IAAI;MACnBC,KAAK,EAAEV,OAAO,CAACW,IAAI;MACnBC,UAAU,EAAEZ,OAAO,CAACa,SAAS;MAC7BC,cAAc,EAAEd,OAAO,CAACe;IAC1B,CAAC,CAAC,GACFC,SAAS;IACb,MAAMC,SAAS,GAAGb,IAAI,CAACC,SAAS,CAACJ,KAAK,CAAC;IAEvC,MAAMiB,QAAQ,GAAG,MAAM,IAAI,CAAC3B,YAAY,CAACM,QAAQ,CAC/CM,YAAY,EACZJ,kBAAkB,EAClBO,WAAW,EACXW,SAAS,EACTf,QACF,CAAC;IAED,IAAI;MACF,MAAMiB,MAAM,GAAGf,IAAI,CAACgB,KAAK,CAACF,QAAQ,CAAC;MAEnC,OAAO;QACLG,OAAO,EAAEF,MAAM,CAACE,OAAO;QACvBH,QAAQ,EAAEC,MAAM,CAACD,QAAQ;QACzBI,aAAa,EAAEH,MAAM,CAACI,cAAc;QACpCC,kBAAkB,EAAEL,MAAM,CAACM,sBAAsB;QACjDC,WAAW,EAAEP,MAAM,CAACQ,aAAa;QACjCC,eAAe,EAAET,MAAM,CAACU,iBAAiB;QACzCC,aAAa,EAAEX,MAAM,CAACY,cAAc;QACpCC,YAAY,EAAEb,MAAM,CAACc,aAAa;QAClCC,WAAW,EAAEf,MAAM,CAACgB;MACtB,CAAC;IACH,CAAC,CAAC,MAAM;MACN,MAAM,IAAIC,KAAK,CAAC,qCAAqC,CAAC;IACxD;EACF;EAEOC,KAAKA,CAACC,IAAY,EAAEC,mBAA2B,EAAqB;IACzE,OAAO,IAAI,CAAChD,YAAY,CAAC8C,KAAK,CAACC,IAAI,EAAEC,mBAAmB,CAAC;EAC3D;EAEOC,KAAKA,CAAA,EAAkB;IAC5B,OAAO,IAAI,CAACjD,YAAY,CAACiD,KAAK,CAAC,CAAC;EAClC;EAEOC,IAAIA,CAAA,EAAkB;IAC3B,OAAO,IAAI,CAAClD,YAAY,CAACkD,IAAI,CAAC,CAAC;EACjC;EAEOC,OAAOA,CAAA,EAAkB;IAC9B,OAAO,IAAI,CAACnD,YAAY,CAACmD,OAAO,CAAC,CAAC;EACpC;AACF","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@ export declare class CactusLM {
|
|
|
4
4
|
private readonly cactus;
|
|
5
5
|
private readonly model;
|
|
6
6
|
private readonly contextSize;
|
|
7
|
+
private readonly corpusDir?;
|
|
7
8
|
private isDownloading;
|
|
8
9
|
private isInitialized;
|
|
9
10
|
private isGenerating;
|
|
@@ -12,7 +13,7 @@ export declare class CactusLM {
|
|
|
12
13
|
private static readonly defaultCompleteOptions;
|
|
13
14
|
private static readonly defaultEmbedBufferSize;
|
|
14
15
|
private static readonly modelsInfoPath;
|
|
15
|
-
constructor({ model, contextSize }?: CactusLMParams);
|
|
16
|
+
constructor({ model, contextSize, corpusDir }?: CactusLMParams);
|
|
16
17
|
download({ onProgress, }?: CactusLMDownloadParams): Promise<void>;
|
|
17
18
|
init(): Promise<void>;
|
|
18
19
|
complete({ messages, options, tools, onToken, }: CactusLMCompleteParams): Promise<CactusLMCompleteResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CactusLM.d.ts","sourceRoot":"","sources":["../../../../src/classes/CactusLM.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMxD,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IAEvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;
|
|
1
|
+
{"version":3,"file":"CactusLM.d.ts","sourceRoot":"","sources":["../../../../src/classes/CactusLM.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMxD,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IAEvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IAEpC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAe;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAE5C;IACF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAEtD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAsB;gBAEhD,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,GAAE,cAAmB;IAMrD,QAAQ,CAAC,EACpB,UAAU,GACX,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBrB,QAAQ,CAAC,EACpB,QAAQ,EACR,OAAO,EACP,KAAK,EACL,OAAO,GACR,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAoC9C,KAAK,CAAC,EACjB,IAAI,GACL,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAuB9C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAWxB,SAAS,CAAC,EACrB,YAAoB,GACrB,GAAE,uBAA4B,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CA4BzD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const packageVersion = "1.0.
|
|
1
|
+
export declare const packageVersion = "1.0.2";
|
|
2
2
|
//# sourceMappingURL=packageVersion.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CactusLMParams, CactusLMCompleteResult, CactusLMEmbedParams, CactusLMEmbedResult, CactusLMGetModelsParams, CactusLMCompleteParams, CactusLMDownloadParams } from '../types/CactusLM';
|
|
2
2
|
import type { CactusModel } from '../types/CactusModel';
|
|
3
|
-
export declare const useCactusLM: ({ model, contextSize, }?: CactusLMParams) => {
|
|
3
|
+
export declare const useCactusLM: ({ model, contextSize, corpusDir, }?: CactusLMParams) => {
|
|
4
4
|
completion: string;
|
|
5
5
|
isGenerating: boolean;
|
|
6
6
|
isInitializing: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCactusLM.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useCactusLM.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,eAAO,MAAM,WAAW,GAAI,
|
|
1
|
+
{"version":3,"file":"useCactusLM.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useCactusLM.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,eAAO,MAAM,WAAW,GAAI,qCAIzB,cAAmB;;;;;;;;gCA4DK,sBAAsB;;uDAsF1C,sBAAsB,KAAG,OAAO,CAAC,sBAAsB,CAAC;sBA+B1C,mBAAmB,KAAG,OAAO,CAAC,mBAAmB,CAAC;;;;mCAwD1C,uBAAuB,KAAQ,OAAO,CAC7D,WAAW,EAAE,CACd;CA8BJ,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CactusLMCompleteResult, Message, Options, Tool } from '../types/CactusLM';
|
|
2
2
|
export declare class Cactus {
|
|
3
3
|
private readonly hybridCactus;
|
|
4
|
-
init(modelPath: string, contextSize: number): Promise<void>;
|
|
4
|
+
init(modelPath: string, contextSize: number, corpusDir?: string): Promise<void>;
|
|
5
5
|
complete(messages: Message[], responseBufferSize: number, options?: Options, tools?: Tool[], callback?: (token: string, tokenId: number) => void): Promise<CactusLMCompleteResult>;
|
|
6
6
|
embed(text: string, embeddingBufferSize: number): Promise<number[]>;
|
|
7
7
|
reset(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cactus.d.ts","sourceRoot":"","sources":["../../../../src/native/Cactus.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EACtB,OAAO,EACP,OAAO,EACP,IAAI,EACL,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAC2B;IAEjD,IAAI,
|
|
1
|
+
{"version":3,"file":"Cactus.d.ts","sourceRoot":"","sources":["../../../../src/native/Cactus.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EACtB,OAAO,EACP,OAAO,EACP,IAAI,EACL,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAC2B;IAEjD,IAAI,CACT,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAIH,QAAQ,CACnB,QAAQ,EAAE,OAAO,EAAE,EACnB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,OAAO,EACjB,KAAK,CAAC,EAAE,IAAI,EAAE,EACd,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAClD,OAAO,CAAC,sBAAsB,CAAC;IAwC3B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAInE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGhC"}
|
|
@@ -3,7 +3,7 @@ export interface Cactus extends HybridObject<{
|
|
|
3
3
|
ios: 'c++';
|
|
4
4
|
android: 'c++';
|
|
5
5
|
}> {
|
|
6
|
-
init(modelPath: string, contextSize: number): Promise<void>;
|
|
6
|
+
init(modelPath: string, contextSize: number, corpusDir?: string): Promise<void>;
|
|
7
7
|
complete(messagesJson: string, responseBufferSize: number, optionsJson?: string, toolsJson?: string, callback?: (token: string, tokenId: number) => void): Promise<string>;
|
|
8
8
|
embed(text: string, embeddingBufferSize: number): Promise<number[]>;
|
|
9
9
|
reset(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cactus.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/Cactus.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,MAAO,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;IAC1E,IAAI,
|
|
1
|
+
{"version":3,"file":"Cactus.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/Cactus.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,MAAO,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;IAC1E,IAAI,CACF,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,QAAQ,CACN,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,MAAM,EAC1B,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAClD,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
export interface CactusLMParams {
|
|
2
2
|
model?: string;
|
|
3
3
|
contextSize?: number;
|
|
4
|
+
corpusDir?: string;
|
|
4
5
|
}
|
|
5
6
|
export interface CactusLMDownloadParams {
|
|
6
7
|
onProgress?: (progress: number) => void;
|
|
7
8
|
}
|
|
8
9
|
export interface Message {
|
|
9
10
|
role: 'user' | 'assistant' | 'system';
|
|
10
|
-
content
|
|
11
|
+
content?: string;
|
|
12
|
+
images?: string[];
|
|
11
13
|
}
|
|
12
14
|
export interface Options {
|
|
13
15
|
temperature?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CactusLM.d.ts","sourceRoot":"","sources":["../../../../src/types/CactusLM.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"CactusLM.d.ts","sourceRoot":"","sources":["../../../../src/types/CactusLM.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE;YACV,CAAC,GAAG,EAAE,MAAM,GAAG;gBACb,IAAI,EAAE,MAAM,CAAC;gBACb,WAAW,EAAE,MAAM,CAAC;aACrB,CAAC;SACH,CAAC;QACF,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;KACnC,EAAE,CAAC;IACJ,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB"}
|
|
@@ -52,7 +52,7 @@ namespace margelo::nitro::cactus {
|
|
|
52
52
|
|
|
53
53
|
public:
|
|
54
54
|
// Methods
|
|
55
|
-
virtual std::shared_ptr<Promise<void>> init(const std::string& modelPath, double contextSize) = 0;
|
|
55
|
+
virtual std::shared_ptr<Promise<void>> init(const std::string& modelPath, double contextSize, const std::optional<std::string>& corpusDir) = 0;
|
|
56
56
|
virtual std::shared_ptr<Promise<std::string>> complete(const std::string& messagesJson, double responseBufferSize, const std::optional<std::string>& optionsJson, const std::optional<std::string>& toolsJson, const std::optional<std::function<void(const std::string& /* token */, double /* tokenId */)>>& callback) = 0;
|
|
57
57
|
virtual std::shared_ptr<Promise<std::vector<double>>> embed(const std::string& text, double embeddingBufferSize) = 0;
|
|
58
58
|
virtual std::shared_ptr<Promise<void>> reset() = 0;
|
package/package.json
CHANGED
package/src/classes/CactusLM.ts
CHANGED
|
@@ -19,6 +19,7 @@ export class CactusLM {
|
|
|
19
19
|
|
|
20
20
|
private readonly model: string;
|
|
21
21
|
private readonly contextSize: number;
|
|
22
|
+
private readonly corpusDir?: string;
|
|
22
23
|
|
|
23
24
|
private isDownloading = false;
|
|
24
25
|
private isInitialized = false;
|
|
@@ -33,9 +34,10 @@ export class CactusLM {
|
|
|
33
34
|
|
|
34
35
|
private static readonly modelsInfoPath = 'models/info.json';
|
|
35
36
|
|
|
36
|
-
constructor({ model, contextSize }: CactusLMParams = {}) {
|
|
37
|
+
constructor({ model, contextSize, corpusDir }: CactusLMParams = {}) {
|
|
37
38
|
this.model = model ?? CactusLM.defaultModel;
|
|
38
39
|
this.contextSize = contextSize ?? CactusLM.defaultContextSize;
|
|
40
|
+
this.corpusDir = corpusDir;
|
|
39
41
|
}
|
|
40
42
|
|
|
41
43
|
public async download({
|
|
@@ -75,7 +77,7 @@ export class CactusLM {
|
|
|
75
77
|
const modelPath = await CactusFileSystem.getModelPath(this.model);
|
|
76
78
|
|
|
77
79
|
try {
|
|
78
|
-
await this.cactus.init(modelPath, this.contextSize);
|
|
80
|
+
await this.cactus.init(modelPath, this.contextSize, this.corpusDir);
|
|
79
81
|
Telemetry.logInit(this.model, true);
|
|
80
82
|
this.isInitialized = true;
|
|
81
83
|
} catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const packageVersion = '1.0.
|
|
1
|
+
export const packageVersion = '1.0.2';
|
package/src/hooks/useCactusLM.ts
CHANGED
|
@@ -16,9 +16,10 @@ import type { CactusModel } from '../types/CactusModel';
|
|
|
16
16
|
export const useCactusLM = ({
|
|
17
17
|
model = 'qwen3-0.6',
|
|
18
18
|
contextSize = 2048,
|
|
19
|
+
corpusDir = undefined,
|
|
19
20
|
}: CactusLMParams = {}) => {
|
|
20
21
|
const [cactusLM, setCactusLM] = useState(
|
|
21
|
-
() => new CactusLM({ model, contextSize })
|
|
22
|
+
() => new CactusLM({ model, contextSize, corpusDir })
|
|
22
23
|
);
|
|
23
24
|
|
|
24
25
|
// State
|
|
@@ -38,7 +39,7 @@ export const useCactusLM = ({
|
|
|
38
39
|
}, [model]);
|
|
39
40
|
|
|
40
41
|
useEffect(() => {
|
|
41
|
-
setCactusLM(new CactusLM({ model, contextSize }));
|
|
42
|
+
setCactusLM(new CactusLM({ model, contextSize, corpusDir }));
|
|
42
43
|
|
|
43
44
|
setCompletion('');
|
|
44
45
|
setIsGenerating(false);
|
|
@@ -67,7 +68,7 @@ export const useCactusLM = ({
|
|
|
67
68
|
return () => {
|
|
68
69
|
mounted = false;
|
|
69
70
|
};
|
|
70
|
-
}, [model, contextSize]);
|
|
71
|
+
}, [model, contextSize, corpusDir]);
|
|
71
72
|
|
|
72
73
|
useEffect(() => {
|
|
73
74
|
return () => {
|
|
@@ -226,23 +227,25 @@ export const useCactusLM = ({
|
|
|
226
227
|
|
|
227
228
|
const reset = useCallback(async () => {
|
|
228
229
|
setError(null);
|
|
229
|
-
setCompletion('');
|
|
230
230
|
try {
|
|
231
231
|
await cactusLM.reset();
|
|
232
232
|
} catch (e) {
|
|
233
233
|
setError(getErrorMessage(e));
|
|
234
234
|
throw e;
|
|
235
|
+
} finally {
|
|
236
|
+
setCompletion('');
|
|
235
237
|
}
|
|
236
238
|
}, [cactusLM]);
|
|
237
239
|
|
|
238
240
|
const destroy = useCallback(async () => {
|
|
239
241
|
setError(null);
|
|
240
|
-
setCompletion('');
|
|
241
242
|
try {
|
|
242
243
|
await cactusLM.destroy();
|
|
243
244
|
} catch (e) {
|
|
244
245
|
setError(getErrorMessage(e));
|
|
245
246
|
throw e;
|
|
247
|
+
} finally {
|
|
248
|
+
setCompletion('');
|
|
246
249
|
}
|
|
247
250
|
}, [cactusLM]);
|
|
248
251
|
|
package/src/native/Cactus.ts
CHANGED
|
@@ -11,8 +11,12 @@ export class Cactus {
|
|
|
11
11
|
private readonly hybridCactus =
|
|
12
12
|
NitroModules.createHybridObject<CactusSpec>('Cactus');
|
|
13
13
|
|
|
14
|
-
public init(
|
|
15
|
-
|
|
14
|
+
public init(
|
|
15
|
+
modelPath: string,
|
|
16
|
+
contextSize: number,
|
|
17
|
+
corpusDir?: string
|
|
18
|
+
): Promise<void> {
|
|
19
|
+
return this.hybridCactus.init(modelPath, contextSize, corpusDir);
|
|
16
20
|
}
|
|
17
21
|
|
|
18
22
|
public async complete(
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import type { HybridObject } from 'react-native-nitro-modules';
|
|
2
2
|
|
|
3
3
|
export interface Cactus extends HybridObject<{ ios: 'c++'; android: 'c++' }> {
|
|
4
|
-
init(
|
|
4
|
+
init(
|
|
5
|
+
modelPath: string,
|
|
6
|
+
contextSize: number,
|
|
7
|
+
corpusDir?: string
|
|
8
|
+
): Promise<void>;
|
|
5
9
|
complete(
|
|
6
10
|
messagesJson: string,
|
|
7
11
|
responseBufferSize: number,
|
package/src/types/CactusLM.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export interface CactusLMParams {
|
|
2
2
|
model?: string;
|
|
3
3
|
contextSize?: number;
|
|
4
|
+
corpusDir?: string;
|
|
4
5
|
}
|
|
5
6
|
|
|
6
7
|
export interface CactusLMDownloadParams {
|
|
@@ -9,7 +10,8 @@ export interface CactusLMDownloadParams {
|
|
|
9
10
|
|
|
10
11
|
export interface Message {
|
|
11
12
|
role: 'user' | 'assistant' | 'system';
|
|
12
|
-
content
|
|
13
|
+
content?: string;
|
|
14
|
+
images?: string[];
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
export interface Options {
|