cui-llama.rn 1.6.0 → 1.7.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.
- package/README.md +35 -7
- package/android/src/main/CMakeLists.txt +22 -11
- package/android/src/main/java/com/rnllama/LlamaContext.java +42 -6
- package/android/src/main/java/com/rnllama/RNLlama.java +139 -4
- package/android/src/main/jni.cpp +173 -18
- package/android/src/main/jniLibs/arm64-v8a/librnllama.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/librnllama_v8.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_dotprod.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_dotprod_i8mm.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_i8mm.so +0 -0
- package/android/src/main/jniLibs/x86_64/librnllama.so +0 -0
- package/android/src/main/jniLibs/x86_64/librnllama_x86_64.so +0 -0
- package/android/src/newarch/java/com/rnllama/RNLlamaModule.java +24 -4
- package/android/src/oldarch/java/com/rnllama/RNLlamaModule.java +22 -2
- package/cpp/LICENSE +21 -0
- package/cpp/chat.cpp +129 -107
- package/cpp/chat.h +2 -0
- package/cpp/common.cpp +58 -78
- package/cpp/common.h +29 -21
- package/cpp/ggml-alloc.c +4 -1
- package/cpp/ggml-backend.cpp +9 -5
- package/cpp/ggml-backend.h +4 -4
- package/cpp/ggml-cpp.h +1 -1
- package/cpp/ggml-cpu/amx/amx.cpp +221 -0
- package/cpp/ggml-cpu/amx/amx.h +8 -0
- package/cpp/ggml-cpu/amx/common.h +91 -0
- package/cpp/ggml-cpu/amx/mmq.cpp +2511 -0
- package/cpp/ggml-cpu/amx/mmq.h +10 -0
- package/{ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers → cpp/ggml-cpu}/binary-ops.h +1 -1
- package/cpp/ggml-cpu/common.h +72 -0
- package/cpp/{ggml-cpu-aarch64.cpp → ggml-cpu/ggml-cpu-aarch64.cpp} +809 -103
- package/cpp/{ggml-cpu-quants.c → ggml-cpu/ggml-cpu-quants.c} +306 -6
- package/cpp/{ggml-cpu.c → ggml-cpu/ggml-cpu.c} +114 -55
- package/cpp/{ggml-cpu.cpp → ggml-cpu/ggml-cpu.cpp} +32 -16
- package/cpp/{ops.cpp → ggml-cpu/ops.cpp} +353 -173
- package/{ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers → cpp/ggml-cpu}/ops.h +2 -20
- package/cpp/{sgemm.cpp → ggml-cpu/sgemm.cpp} +501 -0
- package/{ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers → cpp/ggml-cpu}/simd-mappings.h +7 -3
- package/{ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers → cpp/ggml-cpu}/unary-ops.h +1 -1
- package/cpp/{vec.cpp → ggml-cpu/vec.cpp} +0 -6
- package/{ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers → cpp/ggml-cpu}/vec.h +16 -0
- package/cpp/ggml-cpu.h +5 -0
- package/cpp/ggml-impl.h +16 -9
- package/cpp/ggml-llama-sim.metallib +0 -0
- package/cpp/ggml-llama.metallib +0 -0
- package/cpp/ggml-metal-impl.h +36 -11
- package/cpp/ggml-metal.m +810 -176
- package/cpp/ggml-opt.cpp +373 -190
- package/cpp/ggml-opt.h +49 -28
- package/cpp/ggml-quants.c +0 -6
- package/cpp/ggml.c +227 -282
- package/cpp/ggml.h +82 -101
- package/cpp/gguf.cpp +33 -33
- package/cpp/json-schema-to-grammar.cpp +3 -0
- package/cpp/llama-adapter.cpp +6 -0
- package/cpp/llama-arch.cpp +49 -17
- package/cpp/llama-arch.h +9 -0
- package/cpp/llama-batch.cpp +8 -2
- package/cpp/llama-batch.h +2 -1
- package/cpp/llama-chat.cpp +39 -16
- package/cpp/llama-chat.h +4 -2
- package/cpp/llama-context.cpp +440 -611
- package/cpp/llama-context.h +44 -33
- package/cpp/llama-cparams.h +1 -0
- package/cpp/llama-graph.cpp +214 -291
- package/cpp/llama-graph.h +69 -21
- package/cpp/llama-hparams.cpp +17 -1
- package/cpp/llama-hparams.h +39 -5
- package/cpp/llama-kv-cache.cpp +2067 -620
- package/cpp/llama-kv-cache.h +410 -108
- package/cpp/llama-memory.h +12 -1
- package/cpp/llama-model-loader.cpp +24 -15
- package/cpp/llama-model-saver.cpp +281 -0
- package/cpp/llama-model-saver.h +37 -0
- package/cpp/llama-model.cpp +1089 -359
- package/cpp/llama-model.h +19 -3
- package/cpp/llama-sampling.cpp +20 -7
- package/cpp/llama-vocab.cpp +54 -9
- package/cpp/llama-vocab.h +6 -0
- package/cpp/llama.cpp +14 -0
- package/cpp/llama.h +86 -142
- package/cpp/minja/chat-template.hpp +9 -5
- package/cpp/minja/minja.hpp +69 -36
- package/cpp/rn-llama.cpp +602 -190
- package/cpp/rn-llama.h +34 -8
- package/cpp/sampling.cpp +57 -50
- package/cpp/tools/mtmd/clip-impl.h +462 -0
- package/cpp/tools/mtmd/clip.cpp +4024 -0
- package/cpp/tools/mtmd/clip.h +101 -0
- package/cpp/tools/mtmd/miniaudio.h +93468 -0
- package/cpp/tools/mtmd/mtmd-audio.cpp +855 -0
- package/cpp/tools/mtmd/mtmd-audio.h +62 -0
- package/cpp/tools/mtmd/mtmd-helper.cpp +297 -0
- package/cpp/tools/mtmd/mtmd.cpp +942 -0
- package/cpp/tools/mtmd/mtmd.h +362 -0
- package/cpp/tools/mtmd/stb_image.h +7988 -0
- package/ios/CMakeLists.txt +20 -10
- package/ios/RNLlama.h +6 -0
- package/ios/RNLlama.mm +82 -3
- package/ios/RNLlamaContext.h +5 -1
- package/ios/RNLlamaContext.mm +131 -38
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/chat.h +2 -0
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/common.h +29 -21
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-backend.h +4 -4
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpp.h +1 -1
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpu.h +5 -0
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-impl.h +16 -9
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-metal-impl.h +36 -11
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-opt.h +49 -28
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml.h +82 -101
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-arch.h +9 -0
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-batch.h +2 -1
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-chat.h +4 -2
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-context.h +44 -33
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-cparams.h +1 -0
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-graph.h +69 -21
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-hparams.h +39 -5
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-kv-cache.h +410 -108
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-memory.h +12 -1
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-model-saver.h +37 -0
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-model.h +19 -3
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-vocab.h +6 -0
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama.h +86 -142
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/minja/chat-template.hpp +9 -5
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/minja/minja.hpp +69 -36
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/rn-llama.h +34 -8
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Info.plist +0 -0
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/ggml-llama.metallib +0 -0
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/rnllama +0 -0
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/chat.h +2 -0
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/common.h +29 -21
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-backend.h +4 -4
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpp.h +1 -1
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu.h +5 -0
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-impl.h +16 -9
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-metal-impl.h +36 -11
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-opt.h +49 -28
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml.h +82 -101
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-arch.h +9 -0
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-batch.h +2 -1
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-chat.h +4 -2
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-context.h +44 -33
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-cparams.h +1 -0
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-graph.h +69 -21
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-hparams.h +39 -5
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-kv-cache.h +410 -108
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-memory.h +12 -1
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-model-saver.h +37 -0
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-model.h +19 -3
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-vocab.h +6 -0
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama.h +86 -142
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/minja/chat-template.hpp +9 -5
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/minja/minja.hpp +69 -36
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/rn-llama.h +34 -8
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Info.plist +0 -0
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/_CodeSignature/CodeResources +1 -1
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/ggml-llama-sim.metallib +0 -0
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/rnllama +0 -0
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/chat.h +2 -0
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/common.h +29 -21
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-backend.h +4 -4
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpp.h +1 -1
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpu.h +5 -0
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-impl.h +16 -9
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-metal-impl.h +36 -11
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-opt.h +49 -28
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml.h +82 -101
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-arch.h +9 -0
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-batch.h +2 -1
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-chat.h +4 -2
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-context.h +44 -33
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-cparams.h +1 -0
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-graph.h +69 -21
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-hparams.h +39 -5
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-kv-cache.h +410 -108
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-memory.h +12 -1
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-model-saver.h +37 -0
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-model.h +19 -3
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-vocab.h +6 -0
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama.h +86 -142
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/minja/chat-template.hpp +9 -5
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/minja/minja.hpp +69 -36
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/rn-llama.h +34 -8
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Info.plist +0 -0
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/ggml-llama.metallib +0 -0
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/rnllama +0 -0
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/chat.h +2 -0
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/common.h +29 -21
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-backend.h +4 -4
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpp.h +1 -1
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu.h +5 -0
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-impl.h +16 -9
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-metal-impl.h +36 -11
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-opt.h +49 -28
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml.h +82 -101
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-arch.h +9 -0
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-batch.h +2 -1
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-chat.h +4 -2
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-context.h +44 -33
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-cparams.h +1 -0
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-graph.h +69 -21
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-hparams.h +39 -5
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-kv-cache.h +410 -108
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-memory.h +12 -1
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-model-saver.h +37 -0
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-model.h +19 -3
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-vocab.h +6 -0
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama.h +86 -142
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/minja/chat-template.hpp +9 -5
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/minja/minja.hpp +69 -36
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/rn-llama.h +34 -8
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Info.plist +0 -0
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/_CodeSignature/CodeResources +1 -1
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/ggml-llama-sim.metallib +0 -0
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/rnllama +0 -0
- package/jest/mock.js +33 -7
- package/lib/commonjs/NativeRNLlama.js.map +1 -1
- package/lib/commonjs/index.js +153 -21
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/NativeRNLlama.js.map +1 -1
- package/lib/module/index.js +152 -20
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/NativeRNLlama.d.ts +54 -4
- package/lib/typescript/NativeRNLlama.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +72 -6
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/NativeRNLlama.ts +72 -4
- package/src/index.ts +212 -38
- package/cpp/binary-ops.h +0 -16
- package/cpp/ops.h +0 -128
- package/cpp/simd-mappings.h +0 -888
- package/cpp/unary-ops.h +0 -28
- package/cpp/vec.h +0 -802
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/binary-ops.h +0 -16
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpu-aarch64.h +0 -8
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpu-impl.h +0 -512
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpu-quants.h +0 -63
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpu-traits.h +0 -38
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ops.h +0 -128
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/sgemm.h +0 -14
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/simd-mappings.h +0 -888
- package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/vec.h +0 -802
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-aarch64.h +0 -8
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-impl.h +0 -512
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-quants.h +0 -63
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-traits.h +0 -38
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/sgemm.h +0 -14
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/unary-ops.h +0 -28
- package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/vec.h +0 -802
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/binary-ops.h +0 -16
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpu-aarch64.h +0 -8
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpu-impl.h +0 -512
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpu-quants.h +0 -63
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpu-traits.h +0 -38
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ops.h +0 -128
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/sgemm.h +0 -14
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/simd-mappings.h +0 -888
- package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/unary-ops.h +0 -28
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/binary-ops.h +0 -16
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-aarch64.h +0 -8
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-impl.h +0 -512
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-quants.h +0 -63
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-traits.h +0 -38
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ops.h +0 -128
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/sgemm.h +0 -14
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/simd-mappings.h +0 -888
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/unary-ops.h +0 -28
- package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/vec.h +0 -802
- package/lib/commonjs/chat.js +0 -37
- package/lib/commonjs/chat.js.map +0 -1
- package/lib/module/chat.js +0 -33
- package/lib/module/chat.js.map +0 -1
- package/lib/typescript/chat.d.ts +0 -10
- package/lib/typescript/chat.d.ts.map +0 -1
- package/src/chat.ts +0 -44
- /package/cpp/{binary-ops.cpp → ggml-cpu/binary-ops.cpp} +0 -0
- /package/cpp/{ggml-cpu-aarch64.h → ggml-cpu/ggml-cpu-aarch64.h} +0 -0
- /package/cpp/{ggml-cpu-impl.h → ggml-cpu/ggml-cpu-impl.h} +0 -0
- /package/cpp/{ggml-cpu-quants.h → ggml-cpu/ggml-cpu-quants.h} +0 -0
- /package/cpp/{ggml-cpu-traits.cpp → ggml-cpu/ggml-cpu-traits.cpp} +0 -0
- /package/cpp/{ggml-cpu-traits.h → ggml-cpu/ggml-cpu-traits.h} +0 -0
- /package/cpp/{sgemm.h → ggml-cpu/sgemm.h} +0 -0
- /package/cpp/{unary-ops.cpp → ggml-cpu/unary-ops.cpp} +0 -0
package/README.md
CHANGED
@@ -123,22 +123,50 @@ console.log('Result:', textResult.text)
|
|
123
123
|
console.log('Timings:', textResult.timings)
|
124
124
|
```
|
125
125
|
|
126
|
-
The binding’s deisgn inspired by [server.cpp](https://github.com/ggerganov/llama.cpp/tree/master/examples/server) example in llama.cpp
|
126
|
+
The binding’s deisgn inspired by [server.cpp](https://github.com/ggerganov/llama.cpp/tree/master/examples/server) example in llama.cpp:
|
127
127
|
|
128
128
|
- `/completion` and `/chat/completions`: `context.completion(params, partialCompletionCallback)`
|
129
129
|
- `/tokenize`: `context.tokenize(content)`
|
130
130
|
- `/detokenize`: `context.detokenize(tokens)`
|
131
131
|
- `/embedding`: `context.embedding(content)`
|
132
|
-
- Other methods
|
133
|
-
- `context.loadSession(path)`
|
134
|
-
- `context.saveSession(path)`
|
135
|
-
- `context.stopCompletion()`
|
136
|
-
- `context.release()`
|
132
|
+
- ... Other methods
|
137
133
|
|
138
134
|
Please visit the [Documentation](docs/API) for more details.
|
139
135
|
|
140
136
|
You can also visit the [example](example) to see how to use it.
|
141
137
|
|
138
|
+
## Session (State)
|
139
|
+
|
140
|
+
The session file is a binary file that contains the state of the context, it can saves time of prompt processing.
|
141
|
+
|
142
|
+
```js
|
143
|
+
const context = await initLlama({ ...params })
|
144
|
+
|
145
|
+
// After prompt processing or completion ...
|
146
|
+
|
147
|
+
// Save the session
|
148
|
+
await context.saveSession('<path to save session>')
|
149
|
+
|
150
|
+
// Load the session
|
151
|
+
await context.loadSession('<path to load session>')
|
152
|
+
```
|
153
|
+
|
154
|
+
## Embedding
|
155
|
+
|
156
|
+
The embedding API is used to get the embedding of a text.
|
157
|
+
|
158
|
+
```js
|
159
|
+
const context = await initLlama({
|
160
|
+
...params,
|
161
|
+
embedding: true,
|
162
|
+
})
|
163
|
+
|
164
|
+
const { embedding } = await context.embedding('Hello, world!')
|
165
|
+
```
|
166
|
+
|
167
|
+
- You can use model like [nomic-ai/nomic-embed-text-v1.5-GGUF](https://huggingface.co/nomic-ai/nomic-embed-text-v1.5-GGUF) for better embedding quality.
|
168
|
+
- You can use DB like [op-sqlite](https://github.com/OP-Engineering/op-sqlite) with sqlite-vec support to store and search embeddings.
|
169
|
+
|
142
170
|
## Tool Calling
|
143
171
|
|
144
172
|
`llama.rn` has universal tool call support by using [minja](https://github.com/google/minja) (as Jinja template parser) and [chat.cpp](https://github.com/ggerganov/llama.cpp/blob/master/common/chat.cpp) in llama.cpp.
|
@@ -273,7 +301,7 @@ jest.mock('llama.rn', () => require('llama.rn/jest/mock'))
|
|
273
301
|
|
274
302
|
iOS:
|
275
303
|
|
276
|
-
- The [Extended Virtual Addressing](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_kernel_extended-virtual-addressing)
|
304
|
+
- The [Extended Virtual Addressing](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_kernel_extended-virtual-addressing) and [Increased Memory Limit](https://developer.apple.com/documentation/bundleresources/entitlements/com.apple.developer.kernel.increased-memory-limit?language=objc) capabilities are recommended to enable on iOS project.
|
277
305
|
- Metal:
|
278
306
|
- We have tested to know some devices is not able to use Metal (GPU) due to llama.cpp used SIMD-scoped operation, you can check if your device is supported in [Metal feature set tables](https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf), Apple7 GPU will be the minimum requirement.
|
279
307
|
- It's also not supported in iOS simulator due to [this limitation](https://developer.apple.com/documentation/metal/developing_metal_apps_that_run_in_simulator#3241609), we used constant buffers more than 14.
|
@@ -11,7 +11,11 @@ endif(CCACHE_FOUND)
|
|
11
11
|
set(CMAKE_CXX_STANDARD 17)
|
12
12
|
set(RNLLAMA_LIB_DIR ${CMAKE_SOURCE_DIR}/../../../cpp)
|
13
13
|
|
14
|
-
include_directories(
|
14
|
+
include_directories(
|
15
|
+
${RNLLAMA_LIB_DIR}
|
16
|
+
${RNLLAMA_LIB_DIR}/ggml-cpu
|
17
|
+
${RNLLAMA_LIB_DIR}/tools/mtmd
|
18
|
+
)
|
15
19
|
|
16
20
|
set(
|
17
21
|
SOURCE_FILES
|
@@ -19,21 +23,29 @@ set(
|
|
19
23
|
${RNLLAMA_LIB_DIR}/ggml-alloc.c
|
20
24
|
${RNLLAMA_LIB_DIR}/ggml-backend.cpp
|
21
25
|
${RNLLAMA_LIB_DIR}/ggml-backend-reg.cpp
|
22
|
-
${RNLLAMA_LIB_DIR}/
|
23
|
-
${RNLLAMA_LIB_DIR}/
|
24
|
-
${RNLLAMA_LIB_DIR}/
|
25
|
-
${RNLLAMA_LIB_DIR}/
|
26
|
-
${RNLLAMA_LIB_DIR}/ggml-cpu.
|
27
|
-
${RNLLAMA_LIB_DIR}/ggml-cpu.
|
28
|
-
${RNLLAMA_LIB_DIR}/ggml-cpu-
|
29
|
-
${RNLLAMA_LIB_DIR}/ggml-cpu-
|
30
|
-
${RNLLAMA_LIB_DIR}/ggml-cpu-
|
26
|
+
${RNLLAMA_LIB_DIR}/ggml-cpu/amx/amx.cpp
|
27
|
+
${RNLLAMA_LIB_DIR}/ggml-cpu/amx/mmq.cpp
|
28
|
+
${RNLLAMA_LIB_DIR}/ggml-cpu/ggml-cpu.c
|
29
|
+
${RNLLAMA_LIB_DIR}/ggml-cpu/ggml-cpu.cpp
|
30
|
+
${RNLLAMA_LIB_DIR}/ggml-cpu/ggml-cpu-aarch64.cpp
|
31
|
+
${RNLLAMA_LIB_DIR}/ggml-cpu/ggml-cpu-quants.c
|
32
|
+
${RNLLAMA_LIB_DIR}/ggml-cpu/ggml-cpu-traits.cpp
|
33
|
+
${RNLLAMA_LIB_DIR}/ggml-cpu/unary-ops.cpp
|
34
|
+
${RNLLAMA_LIB_DIR}/ggml-cpu/binary-ops.cpp
|
35
|
+
${RNLLAMA_LIB_DIR}/ggml-cpu/sgemm.cpp
|
36
|
+
${RNLLAMA_LIB_DIR}/ggml-cpu/vec.cpp
|
37
|
+
${RNLLAMA_LIB_DIR}/ggml-cpu/ops.cpp
|
31
38
|
${RNLLAMA_LIB_DIR}/ggml-opt.cpp
|
32
39
|
${RNLLAMA_LIB_DIR}/ggml-threading.cpp
|
33
40
|
${RNLLAMA_LIB_DIR}/ggml-quants.c
|
34
41
|
${RNLLAMA_LIB_DIR}/gguf.cpp
|
35
42
|
${RNLLAMA_LIB_DIR}/log.cpp
|
36
43
|
${RNLLAMA_LIB_DIR}/llama-impl.cpp
|
44
|
+
# Multimodal support
|
45
|
+
${RNLLAMA_LIB_DIR}/tools/mtmd/mtmd.cpp
|
46
|
+
${RNLLAMA_LIB_DIR}/tools/mtmd/mtmd-audio.cpp
|
47
|
+
${RNLLAMA_LIB_DIR}/tools/mtmd/clip.cpp
|
48
|
+
${RNLLAMA_LIB_DIR}/tools/mtmd/mtmd-helper.cpp
|
37
49
|
${RNLLAMA_LIB_DIR}/llama-grammar.cpp
|
38
50
|
${RNLLAMA_LIB_DIR}/llama-sampling.cpp
|
39
51
|
${RNLLAMA_LIB_DIR}/llama-vocab.cpp
|
@@ -56,7 +68,6 @@ set(
|
|
56
68
|
${RNLLAMA_LIB_DIR}/sampling.cpp
|
57
69
|
${RNLLAMA_LIB_DIR}/unicode-data.cpp
|
58
70
|
${RNLLAMA_LIB_DIR}/unicode.cpp
|
59
|
-
${RNLLAMA_LIB_DIR}/sgemm.cpp
|
60
71
|
${RNLLAMA_LIB_DIR}/common.cpp
|
61
72
|
${RNLLAMA_LIB_DIR}/chat.cpp
|
62
73
|
${RNLLAMA_LIB_DIR}/json-schema-to-grammar.cpp
|
@@ -170,6 +170,8 @@ public class LlamaContext {
|
|
170
170
|
params.hasKey("rope_freq_scale") ? (float) params.getDouble("rope_freq_scale") : 0.0f,
|
171
171
|
// int pooling_type,
|
172
172
|
params.hasKey("pooling_type") ? params.getInt("pooling_type") : -1,
|
173
|
+
// boolean ctx_shift,
|
174
|
+
params.hasKey("ctx_shift") ? params.getBoolean("ctx_shift") : true,
|
173
175
|
// LoadProgressCallback load_progress_callback
|
174
176
|
params.hasKey("use_progress_callback") ? new LoadProgressCallback(this) : null
|
175
177
|
);
|
@@ -367,6 +369,8 @@ public class LlamaContext {
|
|
367
369
|
params.hasKey("top_n_sigma") ? (float) params.getDouble("top_n_sigma") : -1.0f,
|
368
370
|
// String[] dry_sequence_breakers, when undef, we use the default definition from common.h
|
369
371
|
params.hasKey("dry_sequence_breakers") ? params.getArray("dry_sequence_breakers").toArrayList().toArray(new String[0]) : new String[]{"\n", ":", "\"", "*"},
|
372
|
+
// String[] media_paths
|
373
|
+
params.hasKey("media_paths") ? params.getArray("media_paths").toArrayList().toArray(new String[0]) : new String[0],
|
370
374
|
// PartialCompletionCallback partial_completion_callback
|
371
375
|
new PartialCompletionCallback(
|
372
376
|
this,
|
@@ -387,10 +391,8 @@ public class LlamaContext {
|
|
387
391
|
return isPredicting(this.context);
|
388
392
|
}
|
389
393
|
|
390
|
-
public WritableMap tokenize(String text) {
|
391
|
-
|
392
|
-
result.putArray("tokens", tokenize(this.context, text));
|
393
|
-
return result;
|
394
|
+
public WritableMap tokenize(String text, ReadableArray media_paths) {
|
395
|
+
return tokenize(this.context, text, media_paths == null ? new String[0] : media_paths.toArrayList().toArray(new String[0]));
|
394
396
|
}
|
395
397
|
|
396
398
|
public String detokenize(ReadableArray tokens) {
|
@@ -437,6 +439,34 @@ public class LlamaContext {
|
|
437
439
|
return getLoadedLoraAdapters(this.context);
|
438
440
|
}
|
439
441
|
|
442
|
+
public boolean initMultimodal(ReadableMap params) {
|
443
|
+
String mmprojPath = params.getString("path");
|
444
|
+
boolean mmprojUseGpu = params.hasKey("use_gpu") ? params.getBoolean("use_gpu") : true;
|
445
|
+
if (mmprojPath == null || mmprojPath.isEmpty()) {
|
446
|
+
throw new IllegalArgumentException("mmproj_path is empty");
|
447
|
+
}
|
448
|
+
File file = new File(mmprojPath);
|
449
|
+
if (!file.exists()) {
|
450
|
+
throw new IllegalArgumentException("mmproj file does not exist: " + mmprojPath);
|
451
|
+
}
|
452
|
+
return initMultimodal(this.context, mmprojPath, mmprojUseGpu);
|
453
|
+
}
|
454
|
+
|
455
|
+
public boolean isMultimodalEnabled() {
|
456
|
+
return isMultimodalEnabled(this.context);
|
457
|
+
}
|
458
|
+
|
459
|
+
public WritableMap getMultimodalSupport() {
|
460
|
+
if (!isMultimodalEnabled()) {
|
461
|
+
throw new IllegalStateException("Multimodal is not enabled");
|
462
|
+
}
|
463
|
+
return getMultimodalSupport(this.context);
|
464
|
+
}
|
465
|
+
|
466
|
+
public void releaseMultimodal() {
|
467
|
+
releaseMultimodal(this.context);
|
468
|
+
}
|
469
|
+
|
440
470
|
public void release() {
|
441
471
|
freeContext(context);
|
442
472
|
}
|
@@ -536,7 +566,7 @@ public class LlamaContext {
|
|
536
566
|
String[] skip
|
537
567
|
);
|
538
568
|
protected static native long initContext(
|
539
|
-
String
|
569
|
+
String model_path,
|
540
570
|
String chat_template,
|
541
571
|
String reasoning_format,
|
542
572
|
boolean embedding,
|
@@ -558,8 +588,12 @@ public class LlamaContext {
|
|
558
588
|
float rope_freq_base,
|
559
589
|
float rope_freq_scale,
|
560
590
|
int pooling_type,
|
591
|
+
boolean ctx_shift,
|
561
592
|
LoadProgressCallback load_progress_callback
|
562
593
|
);
|
594
|
+
protected static native boolean initMultimodal(long contextPtr, String mmproj_path, boolean MMPROJ_USE_GPU);
|
595
|
+
protected static native boolean isMultimodalEnabled(long contextPtr);
|
596
|
+
protected static native WritableMap getMultimodalSupport(long contextPtr);
|
563
597
|
protected static native void interruptLoad(long contextPtr);
|
564
598
|
protected static native WritableMap loadModelDetails(
|
565
599
|
long contextPtr
|
@@ -623,11 +657,12 @@ public class LlamaContext {
|
|
623
657
|
int dry_penalty_last_n,
|
624
658
|
float top_n_sigma,
|
625
659
|
String[] dry_sequence_breakers,
|
660
|
+
String[] media_paths,
|
626
661
|
PartialCompletionCallback partial_completion_callback
|
627
662
|
);
|
628
663
|
protected static native void stopCompletion(long contextPtr);
|
629
664
|
protected static native boolean isPredicting(long contextPtr);
|
630
|
-
protected static native
|
665
|
+
protected static native WritableMap tokenize(long contextPtr, String text, String[] media_paths);
|
631
666
|
protected static native String detokenize(long contextPtr, int[] tokens);
|
632
667
|
protected static native boolean isEmbeddingEnabled(long contextPtr);
|
633
668
|
protected static native WritableMap embedding(
|
@@ -642,4 +677,5 @@ public class LlamaContext {
|
|
642
677
|
protected static native void freeContext(long contextPtr);
|
643
678
|
protected static native void setupLog(NativeLogCallback logCallback);
|
644
679
|
protected static native void unsetLog();
|
680
|
+
protected static native void releaseMultimodal(long contextPtr);
|
645
681
|
}
|
@@ -322,7 +322,7 @@ public class RNLlama implements LifecycleEventListener {
|
|
322
322
|
tasks.put(task, "stopCompletion-" + contextId);
|
323
323
|
}
|
324
324
|
|
325
|
-
public void tokenizeAsync(double id, final String text, final Promise promise) {
|
325
|
+
public void tokenizeAsync(double id, final String text, final ReadableArray media_paths, final Promise promise) {
|
326
326
|
final int contextId = (int) id;
|
327
327
|
AsyncTask task = new AsyncTask<Void, Void, WritableMap>() {
|
328
328
|
private Exception exception;
|
@@ -334,7 +334,7 @@ public class RNLlama implements LifecycleEventListener {
|
|
334
334
|
if (context == null) {
|
335
335
|
throw new Exception("Context not found");
|
336
336
|
}
|
337
|
-
return context.tokenize(text);
|
337
|
+
return context.tokenize(text, media_paths);
|
338
338
|
} catch (Exception e) {
|
339
339
|
exception = e;
|
340
340
|
}
|
@@ -354,13 +354,13 @@ public class RNLlama implements LifecycleEventListener {
|
|
354
354
|
tasks.put(task, "tokenize-" + contextId);
|
355
355
|
}
|
356
356
|
|
357
|
-
public WritableMap tokenizeSync(double id, final String text) {
|
357
|
+
public WritableMap tokenizeSync(double id, final String text, final ReadableArray image_paths) {
|
358
358
|
int contextId = (int) id;
|
359
359
|
LlamaContext context = contexts.get(contextId);
|
360
360
|
if (context == null) {
|
361
361
|
return Arguments.createMap();
|
362
362
|
}
|
363
|
-
return context.tokenize(text);
|
363
|
+
return context.tokenize(text, image_paths);
|
364
364
|
}
|
365
365
|
|
366
366
|
public void getCpuFeatures(Promise promise) {
|
@@ -597,6 +597,141 @@ public class RNLlama implements LifecycleEventListener {
|
|
597
597
|
tasks.put(task, "getLoadedLoraAdapters-" + contextId);
|
598
598
|
}
|
599
599
|
|
600
|
+
public void initMultimodal(double id, final ReadableMap params, final Promise promise) {
|
601
|
+
final int contextId = (int) id;
|
602
|
+
AsyncTask task = new AsyncTask<Void, Void, Boolean>() {
|
603
|
+
private Exception exception;
|
604
|
+
|
605
|
+
@Override
|
606
|
+
protected Boolean doInBackground(Void... voids) {
|
607
|
+
try {
|
608
|
+
LlamaContext context = contexts.get(contextId);
|
609
|
+
if (context == null) {
|
610
|
+
throw new Exception("Context not found");
|
611
|
+
}
|
612
|
+
if (context.isPredicting()) {
|
613
|
+
throw new Exception("Context is busy");
|
614
|
+
}
|
615
|
+
return context.initMultimodal(params);
|
616
|
+
} catch (Exception e) {
|
617
|
+
exception = e;
|
618
|
+
}
|
619
|
+
return false;
|
620
|
+
}
|
621
|
+
|
622
|
+
@Override
|
623
|
+
protected void onPostExecute(Boolean result) {
|
624
|
+
if (exception != null) {
|
625
|
+
promise.reject(exception);
|
626
|
+
return;
|
627
|
+
}
|
628
|
+
promise.resolve(result);
|
629
|
+
tasks.remove(this);
|
630
|
+
}
|
631
|
+
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
632
|
+
tasks.put(task, "initMultimodal-" + contextId);
|
633
|
+
}
|
634
|
+
|
635
|
+
public void isMultimodalEnabled(double id, final Promise promise) {
|
636
|
+
final int contextId = (int) id;
|
637
|
+
AsyncTask task = new AsyncTask<Void, Void, Boolean>() {
|
638
|
+
private Exception exception;
|
639
|
+
|
640
|
+
@Override
|
641
|
+
protected Boolean doInBackground(Void... voids) {
|
642
|
+
try {
|
643
|
+
LlamaContext context = contexts.get(contextId);
|
644
|
+
if (context == null) {
|
645
|
+
throw new Exception("Context not found");
|
646
|
+
}
|
647
|
+
return context.isMultimodalEnabled();
|
648
|
+
} catch (Exception e) {
|
649
|
+
exception = e;
|
650
|
+
}
|
651
|
+
return false;
|
652
|
+
}
|
653
|
+
|
654
|
+
@Override
|
655
|
+
protected void onPostExecute(Boolean result) {
|
656
|
+
if (exception != null) {
|
657
|
+
promise.reject(exception);
|
658
|
+
return;
|
659
|
+
}
|
660
|
+
promise.resolve(result);
|
661
|
+
tasks.remove(this);
|
662
|
+
}
|
663
|
+
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
664
|
+
tasks.put(task, "isMultimodalEnabled" + contextId);
|
665
|
+
}
|
666
|
+
|
667
|
+
public void getMultimodalSupport(double id, final Promise promise) {
|
668
|
+
final int contextId = (int) id;
|
669
|
+
AsyncTask task = new AsyncTask<Void, Void, WritableMap>() {
|
670
|
+
private Exception exception;
|
671
|
+
|
672
|
+
@Override
|
673
|
+
protected WritableMap doInBackground(Void... voids) {
|
674
|
+
try {
|
675
|
+
LlamaContext context = contexts.get(contextId);
|
676
|
+
if (context == null) {
|
677
|
+
throw new Exception("Context not found");
|
678
|
+
}
|
679
|
+
if (!context.isMultimodalEnabled()) {
|
680
|
+
throw new Exception("Multimodal is not enabled");
|
681
|
+
}
|
682
|
+
return context.getMultimodalSupport();
|
683
|
+
} catch (Exception e) {
|
684
|
+
exception = e;
|
685
|
+
}
|
686
|
+
return null;
|
687
|
+
}
|
688
|
+
|
689
|
+
@Override
|
690
|
+
protected void onPostExecute(WritableMap result) {
|
691
|
+
if (exception != null) {
|
692
|
+
promise.reject(exception);
|
693
|
+
return;
|
694
|
+
}
|
695
|
+
promise.resolve(result);
|
696
|
+
tasks.remove(this);
|
697
|
+
}
|
698
|
+
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
699
|
+
tasks.put(task, "getMultimodalSupport-" + contextId);
|
700
|
+
}
|
701
|
+
|
702
|
+
@ReactMethod
|
703
|
+
public void releaseMultimodal(double id, final Promise promise) {
|
704
|
+
final int contextId = (int) id;
|
705
|
+
AsyncTask task = new AsyncTask<Void, Void, Void>() {
|
706
|
+
private Exception exception;
|
707
|
+
|
708
|
+
@Override
|
709
|
+
protected Void doInBackground(Void... voids) {
|
710
|
+
try {
|
711
|
+
LlamaContext context = contexts.get(contextId);
|
712
|
+
if (context == null) {
|
713
|
+
throw new Exception("Context not found");
|
714
|
+
}
|
715
|
+
context.releaseMultimodal();
|
716
|
+
} catch (Exception e) {
|
717
|
+
exception = e;
|
718
|
+
}
|
719
|
+
return null;
|
720
|
+
}
|
721
|
+
|
722
|
+
@Override
|
723
|
+
protected void onPostExecute(Void result) {
|
724
|
+
if (exception != null) {
|
725
|
+
promise.reject(exception);
|
726
|
+
return;
|
727
|
+
}
|
728
|
+
promise.resolve(null);
|
729
|
+
tasks.remove(this);
|
730
|
+
}
|
731
|
+
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
732
|
+
tasks.put(task, "releaseMultimodal" + id);
|
733
|
+
}
|
734
|
+
|
600
735
|
public void releaseContext(double id, Promise promise) {
|
601
736
|
final int contextId = (int) id;
|
602
737
|
AsyncTask task = new AsyncTask<Void, Void, Void>() {
|