react-native-executorch 0.5.6 → 0.5.8
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/android/libs/classes.jar +0 -0
- package/android/src/main/cpp/CMakeLists.txt +23 -14
- package/common/rnexecutorch/RnExecutorchInstaller.cpp +4 -21
- package/common/rnexecutorch/host_objects/ModelHostObject.h +67 -51
- package/common/rnexecutorch/models/llm/LLM.cpp +24 -1
- package/common/rnexecutorch/models/llm/LLM.h +4 -1
- package/common/rnexecutorch/threads/GlobalThreadPool.h +79 -0
- package/common/rnexecutorch/threads/HighPerformanceThreadPool.h +364 -0
- package/common/rnexecutorch/threads/utils/ThreadUtils.h +29 -0
- package/common/runner/runner.cpp +9 -3
- package/common/runner/runner.h +4 -3
- package/common/runner/text_token_generator.h +28 -10
- package/lib/Error.js +53 -0
- package/lib/ThreadPool.d.ts +10 -0
- package/lib/ThreadPool.js +28 -0
- package/lib/common/Logger.d.ts +8 -0
- package/lib/common/Logger.js +19 -0
- package/lib/constants/directories.js +2 -0
- package/lib/constants/llmDefaults.d.ts +6 -0
- package/lib/constants/llmDefaults.js +16 -0
- package/lib/constants/modelUrls.d.ts +223 -0
- package/lib/constants/modelUrls.js +322 -0
- package/lib/constants/ocr/models.d.ts +882 -0
- package/lib/constants/ocr/models.js +182 -0
- package/lib/constants/ocr/symbols.js +139 -0
- package/lib/constants/sttDefaults.d.ts +28 -0
- package/lib/constants/sttDefaults.js +68 -0
- package/lib/controllers/LLMController.d.ts +47 -0
- package/lib/controllers/LLMController.js +213 -0
- package/lib/controllers/OCRController.js +67 -0
- package/lib/controllers/SpeechToTextController.d.ts +56 -0
- package/lib/controllers/SpeechToTextController.js +349 -0
- package/lib/controllers/VerticalOCRController.js +70 -0
- package/lib/hooks/computer_vision/useClassification.d.ts +15 -0
- package/lib/hooks/computer_vision/useClassification.js +7 -0
- package/lib/hooks/computer_vision/useImageEmbeddings.d.ts +15 -0
- package/lib/hooks/computer_vision/useImageEmbeddings.js +7 -0
- package/lib/hooks/computer_vision/useImageSegmentation.d.ts +38 -0
- package/lib/hooks/computer_vision/useImageSegmentation.js +7 -0
- package/lib/hooks/computer_vision/useOCR.d.ts +20 -0
- package/lib/hooks/computer_vision/useOCR.js +41 -0
- package/lib/hooks/computer_vision/useObjectDetection.d.ts +15 -0
- package/lib/hooks/computer_vision/useObjectDetection.js +7 -0
- package/lib/hooks/computer_vision/useStyleTransfer.d.ts +15 -0
- package/lib/hooks/computer_vision/useStyleTransfer.js +7 -0
- package/lib/hooks/computer_vision/useVerticalOCR.d.ts +21 -0
- package/lib/hooks/computer_vision/useVerticalOCR.js +43 -0
- package/lib/hooks/general/useExecutorchModule.d.ts +13 -0
- package/lib/hooks/general/useExecutorchModule.js +7 -0
- package/lib/hooks/natural_language_processing/useLLM.d.ts +10 -0
- package/lib/hooks/natural_language_processing/useLLM.js +78 -0
- package/lib/hooks/natural_language_processing/useSpeechToText.d.ts +27 -0
- package/lib/hooks/natural_language_processing/useSpeechToText.js +49 -0
- package/lib/hooks/natural_language_processing/useTextEmbeddings.d.ts +16 -0
- package/lib/hooks/natural_language_processing/useTextEmbeddings.js +7 -0
- package/lib/hooks/natural_language_processing/useTokenizer.d.ts +17 -0
- package/lib/hooks/natural_language_processing/useTokenizer.js +52 -0
- package/lib/hooks/useModule.js +45 -0
- package/lib/hooks/useNonStaticModule.d.ts +20 -0
- package/lib/hooks/useNonStaticModule.js +49 -0
- package/lib/index.d.ts +48 -0
- package/lib/index.js +58 -0
- package/lib/module/controllers/LLMController.js +21 -2
- package/lib/module/controllers/LLMController.js.map +1 -1
- package/lib/module/hooks/natural_language_processing/useLLM.js +6 -2
- package/lib/module/hooks/natural_language_processing/useLLM.js.map +1 -1
- package/lib/module/modules/natural_language_processing/LLMModule.js +7 -2
- package/lib/module/modules/natural_language_processing/LLMModule.js.map +1 -1
- package/lib/module/types/llm.js.map +1 -1
- package/lib/modules/BaseModule.js +25 -0
- package/lib/modules/BaseNonStaticModule.js +14 -0
- package/lib/modules/computer_vision/ClassificationModule.d.ts +8 -0
- package/lib/modules/computer_vision/ClassificationModule.js +17 -0
- package/lib/modules/computer_vision/ImageEmbeddingsModule.d.ts +8 -0
- package/lib/modules/computer_vision/ImageEmbeddingsModule.js +17 -0
- package/lib/modules/computer_vision/ImageSegmentationModule.d.ts +11 -0
- package/lib/modules/computer_vision/ImageSegmentationModule.js +27 -0
- package/lib/modules/computer_vision/OCRModule.d.ts +14 -0
- package/lib/modules/computer_vision/OCRModule.js +17 -0
- package/lib/modules/computer_vision/ObjectDetectionModule.d.ts +9 -0
- package/lib/modules/computer_vision/ObjectDetectionModule.js +17 -0
- package/lib/modules/computer_vision/StyleTransferModule.d.ts +8 -0
- package/lib/modules/computer_vision/StyleTransferModule.js +17 -0
- package/lib/modules/computer_vision/VerticalOCRModule.d.ts +14 -0
- package/lib/modules/computer_vision/VerticalOCRModule.js +19 -0
- package/lib/modules/general/ExecutorchModule.d.ts +7 -0
- package/lib/modules/general/ExecutorchModule.js +14 -0
- package/lib/modules/natural_language_processing/LLMModule.d.ts +28 -0
- package/lib/modules/natural_language_processing/LLMModule.js +45 -0
- package/lib/modules/natural_language_processing/SpeechToTextModule.d.ts +24 -0
- package/lib/modules/natural_language_processing/SpeechToTextModule.js +36 -0
- package/lib/modules/natural_language_processing/TextEmbeddingsModule.d.ts +9 -0
- package/lib/modules/natural_language_processing/TextEmbeddingsModule.js +21 -0
- package/lib/modules/natural_language_processing/TokenizerModule.d.ts +12 -0
- package/lib/modules/natural_language_processing/TokenizerModule.js +30 -0
- package/lib/native/NativeETInstaller.js +2 -0
- package/lib/native/NativeOCR.js +2 -0
- package/lib/native/NativeVerticalOCR.js +2 -0
- package/lib/native/RnExecutorchModules.d.ts +7 -0
- package/lib/native/RnExecutorchModules.js +18 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/lib/types/common.d.ts +32 -0
- package/lib/types/common.js +25 -0
- package/lib/types/imageSegmentation.js +26 -0
- package/lib/types/llm.d.ts +46 -0
- package/lib/types/llm.js +9 -0
- package/lib/types/objectDetection.js +94 -0
- package/lib/types/ocr.js +1 -0
- package/lib/types/stt.d.ts +94 -0
- package/lib/types/stt.js +85 -0
- package/lib/typescript/controllers/LLMController.d.ts +4 -2
- package/lib/typescript/controllers/LLMController.d.ts.map +1 -1
- package/lib/typescript/hooks/natural_language_processing/useLLM.d.ts.map +1 -1
- package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts +4 -2
- package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts.map +1 -1
- package/lib/typescript/types/llm.d.ts +7 -1
- package/lib/typescript/types/llm.d.ts.map +1 -1
- package/lib/utils/ResourceFetcher.d.ts +24 -0
- package/lib/utils/ResourceFetcher.js +305 -0
- package/lib/utils/ResourceFetcherUtils.d.ts +54 -0
- package/lib/utils/ResourceFetcherUtils.js +127 -0
- package/lib/utils/llm.d.ts +6 -0
- package/lib/utils/llm.js +72 -0
- package/lib/utils/stt.js +21 -0
- package/package.json +3 -1
- package/react-native-executorch.podspec +12 -31
- package/src/controllers/LLMController.ts +29 -5
- package/src/hooks/natural_language_processing/useLLM.ts +15 -1
- package/src/modules/natural_language_processing/LLMModule.ts +14 -2
- package/src/types/llm.ts +8 -0
- package/third-party/android/libs/cpuinfo/arm64-v8a/libcpuinfo.so +0 -0
- package/third-party/android/libs/executorch/arm64-v8a/libexecutorch.so +0 -0
- package/third-party/android/libs/executorch/x86_64/libexecutorch.so +0 -0
- package/third-party/android/libs/pthreadpool/arm64-v8a/libpthreadpool.so +0 -0
- package/third-party/android/libs/tokenizers-cpp/arm64-v8a/libsentencepiece.a +0 -0
- package/third-party/android/libs/tokenizers-cpp/arm64-v8a/libtokenizers_c.a +0 -0
- package/third-party/android/libs/tokenizers-cpp/arm64-v8a/libtokenizers_cpp.a +0 -0
- package/third-party/android/libs/tokenizers-cpp/x86_64/libsentencepiece.a +0 -0
- package/third-party/android/libs/tokenizers-cpp/x86_64/libtokenizers_c.a +0 -0
- package/third-party/android/libs/tokenizers-cpp/x86_64/libtokenizers_cpp.a +0 -0
- package/third-party/include/c10/macros/Export.h +2 -86
- package/third-party/include/c10/macros/Macros.h +28 -5
- package/third-party/include/c10/util/BFloat16-inl.h +1 -4
- package/third-party/include/c10/util/BFloat16.h +5 -8
- package/third-party/include/c10/util/Half.h +5 -0
- package/third-party/include/c10/util/bit_cast.h +1 -1
- package/third-party/include/c10/util/complex.h +639 -0
- package/third-party/include/c10/util/complex_math.h +399 -0
- package/third-party/include/c10/util/complex_utils.h +41 -0
- package/third-party/include/c10/util/irange.h +2 -2
- package/third-party/include/c10/util/overflows.h +95 -0
- package/third-party/include/executorch/ExecuTorchError.h +75 -0
- package/third-party/include/executorch/ExecuTorchModule.h +115 -11
- package/third-party/include/executorch/ExecuTorchTensor.h +731 -51
- package/third-party/include/executorch/ExecuTorchValue.h +61 -9
- package/third-party/include/executorch/extension/kernel_util/make_boxed_from_unboxed_functor.h +181 -0
- package/third-party/include/executorch/extension/kernel_util/meta_programming.h +108 -0
- package/third-party/include/executorch/extension/kernel_util/type_list.h +137 -0
- package/third-party/include/executorch/extension/module/bundled_module.h +131 -0
- package/third-party/include/executorch/extension/module/module.h +46 -20
- package/third-party/include/executorch/extension/threadpool/cpuinfo_utils.h +1 -3
- package/third-party/include/executorch/extension/threadpool/threadpool.h +1 -3
- package/third-party/include/executorch/extension/threadpool/threadpool_guard.h +35 -0
- package/third-party/include/executorch/runtime/backend/backend_execution_context.h +3 -3
- package/third-party/include/executorch/runtime/backend/backend_init_context.h +12 -6
- package/third-party/include/executorch/runtime/backend/backend_option_context.h +34 -0
- package/third-party/include/executorch/runtime/backend/interface.h +70 -9
- package/third-party/include/executorch/runtime/backend/options.h +206 -0
- package/third-party/include/executorch/runtime/core/evalue.h +19 -25
- package/third-party/include/executorch/runtime/core/event_tracer.h +32 -17
- package/third-party/include/executorch/runtime/core/event_tracer_hooks.h +23 -14
- package/third-party/include/executorch/runtime/core/exec_aten/exec_aten.h +32 -9
- package/third-party/include/executorch/runtime/core/exec_aten/util/dim_order_util.h +3 -2
- package/third-party/include/executorch/runtime/core/exec_aten/util/scalar_type_util.h +43 -75
- package/third-party/include/executorch/runtime/core/exec_aten/util/tensor_util.h +88 -87
- package/third-party/include/executorch/runtime/core/function_ref.h +100 -0
- package/third-party/include/executorch/runtime/core/named_data_map.h +14 -14
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/macros/Export.h +2 -86
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/macros/Macros.h +28 -5
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/BFloat16-inl.h +1 -4
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/BFloat16.h +5 -8
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/Half.h +5 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/bit_cast.h +1 -1
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/complex.h +639 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/complex_math.h +399 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/complex_utils.h +41 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/irange.h +2 -2
- package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/overflows.h +95 -0
- package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/macros/Export.h +88 -0
- package/third-party/include/executorch/runtime/core/portable_type/complex.h +6 -29
- package/third-party/include/executorch/runtime/core/portable_type/tensor_impl.h +20 -0
- package/third-party/include/executorch/runtime/core/span.h +4 -0
- package/third-party/include/executorch/runtime/core/tag.h +19 -0
- package/third-party/include/executorch/runtime/core/tensor_layout.h +2 -2
- package/third-party/include/executorch/runtime/executor/method.h +15 -3
- package/third-party/include/executorch/runtime/executor/method_meta.h +34 -5
- package/third-party/include/executorch/runtime/executor/program.h +3 -4
- package/third-party/include/executorch/runtime/executor/pte_data_map.h +9 -8
- package/third-party/include/executorch/runtime/executor/tensor_parser.h +14 -13
- package/third-party/include/executorch/runtime/kernel/kernel_runtime_context.h +5 -5
- package/third-party/include/executorch/runtime/kernel/operator_registry.h +21 -19
- package/third-party/include/executorch/runtime/platform/compiler.h +8 -0
- package/third-party/include/executorch/runtime/platform/platform.h +126 -0
- package/third-party/include/headeronly/macros/Export.h +88 -0
- package/third-party/include/tokenizers-cpp/tokenizers_c.h +61 -0
- package/third-party/include/torch/headeronly/macros/Export.h +88 -0
- package/third-party/ios/ExecutorchLib.xcframework/Info.plist +43 -0
- package/third-party/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/ExecutorchLib +0 -0
- package/third-party/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Info.plist +0 -0
- package/third-party/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/ExecutorchLib +0 -0
- package/third-party/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Info.plist +0 -0
- package/third-party/ios/libs/cpuinfo/libcpuinfo.a +0 -0
- package/third-party/ios/libs/pthreadpool/physical-arm64-release/libpthreadpool.a +0 -0
- package/third-party/ios/libs/pthreadpool/simulator-arm64-debug/libpthreadpool.a +0 -0
- package/ios/libs/executorch/libbackend_coreml_ios.a +0 -0
- package/ios/libs/executorch/libbackend_coreml_simulator.a +0 -0
- package/ios/libs/executorch/libbackend_mps_ios.a +0 -0
- package/ios/libs/executorch/libbackend_mps_simulator.a +0 -0
- package/ios/libs/executorch/libbackend_xnnpack_ios.a +0 -0
- package/ios/libs/executorch/libbackend_xnnpack_simulator.a +0 -0
- package/ios/libs/executorch/libexecutorch_ios.a +0 -0
- package/ios/libs/executorch/libexecutorch_simulator.a +0 -0
- package/ios/libs/executorch/libkernels_custom_ios.a +0 -0
- package/ios/libs/executorch/libkernels_custom_simulator.a +0 -0
- package/ios/libs/executorch/libkernels_optimized_ios.a +0 -0
- package/ios/libs/executorch/libkernels_optimized_simulator.a +0 -0
- package/ios/libs/executorch/libkernels_portable_ios.a +0 -0
- package/ios/libs/executorch/libkernels_portable_simulator.a +0 -0
- package/ios/libs/executorch/libkernels_quantized_ios.a +0 -0
- package/ios/libs/executorch/libkernels_quantized_simulator.a +0 -0
- package/third-party/ios/ios.toolchain.cmake +0 -1122
- /package/{ios → third-party/ios}/libs/tokenizers-cpp/physical-arm64-release/libsentencepiece.a +0 -0
- /package/{ios → third-party/ios}/libs/tokenizers-cpp/physical-arm64-release/libtokenizers_c.a +0 -0
- /package/{ios → third-party/ios}/libs/tokenizers-cpp/physical-arm64-release/libtokenizers_cpp.a +0 -0
- /package/{ios → third-party/ios}/libs/tokenizers-cpp/simulator-arm64-debug/libsentencepiece.a +0 -0
- /package/{ios → third-party/ios}/libs/tokenizers-cpp/simulator-arm64-debug/libtokenizers_c.a +0 -0
- /package/{ios → third-party/ios}/libs/tokenizers-cpp/simulator-arm64-debug/libtokenizers_cpp.a +0 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { symbols } from '../constants/ocr/symbols';
|
|
2
|
+
import { ETError, getError } from '../Error';
|
|
3
|
+
import { VerticalOCRNativeModule } from '../native/RnExecutorchModules';
|
|
4
|
+
import { ResourceFetcher } from '../utils/ResourceFetcher';
|
|
5
|
+
export class VerticalOCRController {
|
|
6
|
+
ocrNativeModule;
|
|
7
|
+
isReady = false;
|
|
8
|
+
isGenerating = false;
|
|
9
|
+
error = null;
|
|
10
|
+
modelDownloadProgressCallback;
|
|
11
|
+
isReadyCallback;
|
|
12
|
+
isGeneratingCallback;
|
|
13
|
+
errorCallback;
|
|
14
|
+
constructor({ modelDownloadProgressCallback = (_downloadProgress) => { }, isReadyCallback = (_isReady) => { }, isGeneratingCallback = (_isGenerating) => { }, errorCallback = (_error) => { }, }) {
|
|
15
|
+
this.ocrNativeModule = VerticalOCRNativeModule;
|
|
16
|
+
this.modelDownloadProgressCallback = modelDownloadProgressCallback;
|
|
17
|
+
this.isReadyCallback = isReadyCallback;
|
|
18
|
+
this.isGeneratingCallback = isGeneratingCallback;
|
|
19
|
+
this.errorCallback = errorCallback;
|
|
20
|
+
}
|
|
21
|
+
loadModel = async (detectorSources, recognizerSources, language, independentCharacters) => {
|
|
22
|
+
try {
|
|
23
|
+
if (Object.keys(detectorSources).length !== 2 ||
|
|
24
|
+
Object.keys(recognizerSources).length !== 2)
|
|
25
|
+
return;
|
|
26
|
+
if (!symbols[language]) {
|
|
27
|
+
throw new Error(getError(ETError.LanguageNotSupported));
|
|
28
|
+
}
|
|
29
|
+
this.isReady = false;
|
|
30
|
+
this.isReadyCallback(this.isReady);
|
|
31
|
+
const paths = await ResourceFetcher.fetch(this.modelDownloadProgressCallback, detectorSources.detectorLarge, detectorSources.detectorNarrow, independentCharacters
|
|
32
|
+
? recognizerSources.recognizerSmall
|
|
33
|
+
: recognizerSources.recognizerLarge);
|
|
34
|
+
if (paths === null || paths.length < 3) {
|
|
35
|
+
throw new Error('Download interrupted');
|
|
36
|
+
}
|
|
37
|
+
await this.ocrNativeModule.loadModule(paths[0], paths[1], paths[2], symbols[language], independentCharacters);
|
|
38
|
+
this.isReady = true;
|
|
39
|
+
this.isReadyCallback(this.isReady);
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
if (this.errorCallback) {
|
|
43
|
+
this.errorCallback(getError(e));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
throw new Error(getError(e));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
forward = async (input) => {
|
|
51
|
+
if (!this.isReady) {
|
|
52
|
+
throw new Error(getError(ETError.ModuleNotLoaded));
|
|
53
|
+
}
|
|
54
|
+
if (this.isGenerating) {
|
|
55
|
+
throw new Error(getError(ETError.ModelGenerating));
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
this.isGenerating = true;
|
|
59
|
+
this.isGeneratingCallback(this.isGenerating);
|
|
60
|
+
return await this.ocrNativeModule.forward(input);
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
throw new Error(getError(e));
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
this.isGenerating = false;
|
|
67
|
+
this.isGeneratingCallback(this.isGenerating);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ResourceSource } from '../../types/common';
|
|
2
|
+
interface Props {
|
|
3
|
+
model: {
|
|
4
|
+
modelSource: ResourceSource;
|
|
5
|
+
};
|
|
6
|
+
preventLoad?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const useClassification: ({ model, preventLoad }: Props) => {
|
|
9
|
+
error: string | null;
|
|
10
|
+
isReady: boolean;
|
|
11
|
+
isGenerating: boolean;
|
|
12
|
+
downloadProgress: number;
|
|
13
|
+
forward: (imageSource: string) => Promise<any>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { useNonStaticModule } from '../useNonStaticModule';
|
|
2
|
+
import { ClassificationModule } from '../../modules/computer_vision/ClassificationModule';
|
|
3
|
+
export const useClassification = ({ model, preventLoad = false }) => useNonStaticModule({
|
|
4
|
+
module: ClassificationModule,
|
|
5
|
+
model,
|
|
6
|
+
preventLoad: preventLoad,
|
|
7
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ResourceSource } from '../../types/common';
|
|
2
|
+
interface Props {
|
|
3
|
+
model: {
|
|
4
|
+
modelSource: ResourceSource;
|
|
5
|
+
};
|
|
6
|
+
preventLoad?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const useImageEmbeddings: ({ model, preventLoad }: Props) => {
|
|
9
|
+
error: string | null;
|
|
10
|
+
isReady: boolean;
|
|
11
|
+
isGenerating: boolean;
|
|
12
|
+
downloadProgress: number;
|
|
13
|
+
forward: (imageSource: string) => Promise<Float32Array<ArrayBufferLike>>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ImageEmbeddingsModule } from '../../modules/computer_vision/ImageEmbeddingsModule';
|
|
2
|
+
import { useNonStaticModule } from '../useNonStaticModule';
|
|
3
|
+
export const useImageEmbeddings = ({ model, preventLoad = false }) => useNonStaticModule({
|
|
4
|
+
module: ImageEmbeddingsModule,
|
|
5
|
+
model,
|
|
6
|
+
preventLoad,
|
|
7
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ResourceSource } from '../../types/common';
|
|
2
|
+
interface Props {
|
|
3
|
+
model: {
|
|
4
|
+
modelSource: ResourceSource;
|
|
5
|
+
};
|
|
6
|
+
preventLoad?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const useImageSegmentation: ({ model, preventLoad }: Props) => {
|
|
9
|
+
error: string | null;
|
|
10
|
+
isReady: boolean;
|
|
11
|
+
isGenerating: boolean;
|
|
12
|
+
downloadProgress: number;
|
|
13
|
+
forward: (imageSource: string, classesOfInterest?: import("../..").DeeplabLabel[] | undefined, resize?: boolean | undefined) => Promise<{
|
|
14
|
+
0?: number[] | undefined;
|
|
15
|
+
1?: number[] | undefined;
|
|
16
|
+
2?: number[] | undefined;
|
|
17
|
+
3?: number[] | undefined;
|
|
18
|
+
4?: number[] | undefined;
|
|
19
|
+
5?: number[] | undefined;
|
|
20
|
+
6?: number[] | undefined;
|
|
21
|
+
7?: number[] | undefined;
|
|
22
|
+
8?: number[] | undefined;
|
|
23
|
+
9?: number[] | undefined;
|
|
24
|
+
10?: number[] | undefined;
|
|
25
|
+
11?: number[] | undefined;
|
|
26
|
+
12?: number[] | undefined;
|
|
27
|
+
13?: number[] | undefined;
|
|
28
|
+
14?: number[] | undefined;
|
|
29
|
+
15?: number[] | undefined;
|
|
30
|
+
16?: number[] | undefined;
|
|
31
|
+
17?: number[] | undefined;
|
|
32
|
+
18?: number[] | undefined;
|
|
33
|
+
19?: number[] | undefined;
|
|
34
|
+
20?: number[] | undefined;
|
|
35
|
+
21?: number[] | undefined;
|
|
36
|
+
}>;
|
|
37
|
+
};
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { useNonStaticModule } from '../useNonStaticModule';
|
|
2
|
+
import { ImageSegmentationModule } from '../../modules/computer_vision/ImageSegmentationModule';
|
|
3
|
+
export const useImageSegmentation = ({ model, preventLoad = false }) => useNonStaticModule({
|
|
4
|
+
module: ImageSegmentationModule,
|
|
5
|
+
model,
|
|
6
|
+
preventLoad,
|
|
7
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ResourceSource } from '../../types/common';
|
|
2
|
+
import { OCRDetection, OCRLanguage } from '../../types/ocr';
|
|
3
|
+
interface OCRModule {
|
|
4
|
+
error: string | null;
|
|
5
|
+
isReady: boolean;
|
|
6
|
+
isGenerating: boolean;
|
|
7
|
+
forward: (input: string) => Promise<OCRDetection[]>;
|
|
8
|
+
downloadProgress: number;
|
|
9
|
+
}
|
|
10
|
+
export declare const useOCR: ({ model, preventLoad, }: {
|
|
11
|
+
model: {
|
|
12
|
+
detectorSource: ResourceSource;
|
|
13
|
+
recognizerLarge: ResourceSource;
|
|
14
|
+
recognizerMedium: ResourceSource;
|
|
15
|
+
recognizerSmall: ResourceSource;
|
|
16
|
+
language: OCRLanguage;
|
|
17
|
+
};
|
|
18
|
+
preventLoad?: boolean;
|
|
19
|
+
}) => OCRModule;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
2
|
+
import { OCRController } from '../../controllers/OCRController';
|
|
3
|
+
export const useOCR = ({ model, preventLoad = false, }) => {
|
|
4
|
+
const [error, setError] = useState(null);
|
|
5
|
+
const [isReady, setIsReady] = useState(false);
|
|
6
|
+
const [isGenerating, setIsGenerating] = useState(false);
|
|
7
|
+
const [downloadProgress, setDownloadProgress] = useState(0);
|
|
8
|
+
const controllerInstance = useMemo(() => new OCRController({
|
|
9
|
+
modelDownloadProgressCallback: setDownloadProgress,
|
|
10
|
+
isReadyCallback: setIsReady,
|
|
11
|
+
isGeneratingCallback: setIsGenerating,
|
|
12
|
+
errorCallback: setError,
|
|
13
|
+
}), []);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
const loadModel = async () => {
|
|
16
|
+
await controllerInstance.loadModel(model.detectorSource, {
|
|
17
|
+
recognizerLarge: model.recognizerLarge,
|
|
18
|
+
recognizerMedium: model.recognizerMedium,
|
|
19
|
+
recognizerSmall: model.recognizerSmall,
|
|
20
|
+
}, model.language);
|
|
21
|
+
};
|
|
22
|
+
if (!preventLoad) {
|
|
23
|
+
loadModel();
|
|
24
|
+
}
|
|
25
|
+
}, [
|
|
26
|
+
controllerInstance,
|
|
27
|
+
model.detectorSource,
|
|
28
|
+
model.recognizerLarge,
|
|
29
|
+
model.recognizerMedium,
|
|
30
|
+
model.recognizerSmall,
|
|
31
|
+
model.language,
|
|
32
|
+
preventLoad,
|
|
33
|
+
]);
|
|
34
|
+
return {
|
|
35
|
+
error,
|
|
36
|
+
isReady,
|
|
37
|
+
isGenerating,
|
|
38
|
+
forward: controllerInstance.forward,
|
|
39
|
+
downloadProgress,
|
|
40
|
+
};
|
|
41
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ResourceSource } from '../../types/common';
|
|
2
|
+
interface Props {
|
|
3
|
+
model: {
|
|
4
|
+
modelSource: ResourceSource;
|
|
5
|
+
};
|
|
6
|
+
preventLoad?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const useObjectDetection: ({ model, preventLoad }: Props) => {
|
|
9
|
+
error: string | null;
|
|
10
|
+
isReady: boolean;
|
|
11
|
+
isGenerating: boolean;
|
|
12
|
+
downloadProgress: number;
|
|
13
|
+
forward: (imageSource: string, detectionThreshold?: number | undefined) => Promise<import("../..").Detection[]>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { useNonStaticModule } from '../useNonStaticModule';
|
|
2
|
+
import { ObjectDetectionModule } from '../../modules/computer_vision/ObjectDetectionModule';
|
|
3
|
+
export const useObjectDetection = ({ model, preventLoad = false }) => useNonStaticModule({
|
|
4
|
+
module: ObjectDetectionModule,
|
|
5
|
+
model,
|
|
6
|
+
preventLoad: preventLoad,
|
|
7
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ResourceSource } from '../../types/common';
|
|
2
|
+
interface Props {
|
|
3
|
+
model: {
|
|
4
|
+
modelSource: ResourceSource;
|
|
5
|
+
};
|
|
6
|
+
preventLoad?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const useStyleTransfer: ({ model, preventLoad }: Props) => {
|
|
9
|
+
error: string | null;
|
|
10
|
+
isReady: boolean;
|
|
11
|
+
isGenerating: boolean;
|
|
12
|
+
downloadProgress: number;
|
|
13
|
+
forward: (imageSource: string) => Promise<string>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { useNonStaticModule } from '../useNonStaticModule';
|
|
2
|
+
import { StyleTransferModule } from '../../modules/computer_vision/StyleTransferModule';
|
|
3
|
+
export const useStyleTransfer = ({ model, preventLoad = false }) => useNonStaticModule({
|
|
4
|
+
module: StyleTransferModule,
|
|
5
|
+
model,
|
|
6
|
+
preventLoad: preventLoad,
|
|
7
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ResourceSource } from '../../types/common';
|
|
2
|
+
import { OCRDetection, OCRLanguage } from '../../types/ocr';
|
|
3
|
+
interface OCRModule {
|
|
4
|
+
error: string | null;
|
|
5
|
+
isReady: boolean;
|
|
6
|
+
isGenerating: boolean;
|
|
7
|
+
forward: (input: string) => Promise<OCRDetection[]>;
|
|
8
|
+
downloadProgress: number;
|
|
9
|
+
}
|
|
10
|
+
export declare const useVerticalOCR: ({ model, independentCharacters, preventLoad, }: {
|
|
11
|
+
model: {
|
|
12
|
+
detectorLarge: ResourceSource;
|
|
13
|
+
detectorNarrow: ResourceSource;
|
|
14
|
+
recognizerLarge: ResourceSource;
|
|
15
|
+
recognizerSmall: ResourceSource;
|
|
16
|
+
language: OCRLanguage;
|
|
17
|
+
};
|
|
18
|
+
independentCharacters?: boolean;
|
|
19
|
+
preventLoad?: boolean;
|
|
20
|
+
}) => OCRModule;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
2
|
+
import { VerticalOCRController } from '../../controllers/VerticalOCRController';
|
|
3
|
+
export const useVerticalOCR = ({ model, independentCharacters = false, preventLoad = false, }) => {
|
|
4
|
+
const [error, setError] = useState(null);
|
|
5
|
+
const [isReady, setIsReady] = useState(false);
|
|
6
|
+
const [isGenerating, setIsGenerating] = useState(false);
|
|
7
|
+
const [downloadProgress, setDownloadProgress] = useState(0);
|
|
8
|
+
const controllerInstance = useMemo(() => new VerticalOCRController({
|
|
9
|
+
modelDownloadProgressCallback: setDownloadProgress,
|
|
10
|
+
isReadyCallback: setIsReady,
|
|
11
|
+
isGeneratingCallback: setIsGenerating,
|
|
12
|
+
errorCallback: setError,
|
|
13
|
+
}), []);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
if (preventLoad)
|
|
16
|
+
return;
|
|
17
|
+
(async () => {
|
|
18
|
+
await controllerInstance.loadModel({
|
|
19
|
+
detectorLarge: model.detectorLarge,
|
|
20
|
+
detectorNarrow: model.detectorNarrow,
|
|
21
|
+
}, {
|
|
22
|
+
recognizerLarge: model.recognizerLarge,
|
|
23
|
+
recognizerSmall: model.recognizerSmall,
|
|
24
|
+
}, model.language, independentCharacters);
|
|
25
|
+
})();
|
|
26
|
+
}, [
|
|
27
|
+
controllerInstance,
|
|
28
|
+
model.detectorLarge,
|
|
29
|
+
model.detectorNarrow,
|
|
30
|
+
model.recognizerLarge,
|
|
31
|
+
model.recognizerSmall,
|
|
32
|
+
model.language,
|
|
33
|
+
independentCharacters,
|
|
34
|
+
preventLoad,
|
|
35
|
+
]);
|
|
36
|
+
return {
|
|
37
|
+
error,
|
|
38
|
+
isReady,
|
|
39
|
+
isGenerating,
|
|
40
|
+
forward: controllerInstance.forward,
|
|
41
|
+
downloadProgress,
|
|
42
|
+
};
|
|
43
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ResourceSource } from '../../types/common';
|
|
2
|
+
interface Props {
|
|
3
|
+
modelSource: ResourceSource;
|
|
4
|
+
preventLoad?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const useExecutorchModule: ({ modelSource, preventLoad, }: Props) => {
|
|
7
|
+
error: string | null;
|
|
8
|
+
isReady: boolean;
|
|
9
|
+
isGenerating: boolean;
|
|
10
|
+
downloadProgress: number;
|
|
11
|
+
forward: (inputTensor: import("../../types/common").TensorPtr[]) => Promise<import("../../types/common").TensorPtr[]>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ExecutorchModule } from '../../modules/general/ExecutorchModule';
|
|
2
|
+
import { useNonStaticModule } from '../useNonStaticModule';
|
|
3
|
+
export const useExecutorchModule = ({ modelSource, preventLoad = false, }) => useNonStaticModule({
|
|
4
|
+
module: ExecutorchModule,
|
|
5
|
+
model: { modelSource },
|
|
6
|
+
preventLoad,
|
|
7
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ResourceSource } from '../../types/common';
|
|
2
|
+
import { LLMType } from '../../types/llm';
|
|
3
|
+
export declare const useLLM: ({ model, preventLoad, }: {
|
|
4
|
+
model: {
|
|
5
|
+
modelSource: ResourceSource;
|
|
6
|
+
tokenizerSource: ResourceSource;
|
|
7
|
+
tokenizerConfigSource: ResourceSource;
|
|
8
|
+
};
|
|
9
|
+
preventLoad?: boolean;
|
|
10
|
+
}) => LLMType;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
2
|
+
import { LLMController } from '../../controllers/LLMController';
|
|
3
|
+
/*
|
|
4
|
+
Hook version of LLMModule
|
|
5
|
+
*/
|
|
6
|
+
export const useLLM = ({ model, preventLoad = false, }) => {
|
|
7
|
+
const [token, setToken] = useState('');
|
|
8
|
+
const [response, setResponse] = useState('');
|
|
9
|
+
const [messageHistory, setMessageHistory] = useState([]);
|
|
10
|
+
const [isReady, setIsReady] = useState(false);
|
|
11
|
+
const [isGenerating, setIsGenerating] = useState(false);
|
|
12
|
+
const [downloadProgress, setDownloadProgress] = useState(0);
|
|
13
|
+
const [error, setError] = useState(null);
|
|
14
|
+
const tokenCallback = useCallback((newToken) => {
|
|
15
|
+
setToken(newToken);
|
|
16
|
+
setResponse((prevResponse) => prevResponse + newToken);
|
|
17
|
+
}, []);
|
|
18
|
+
const controllerInstance = useMemo(() => new LLMController({
|
|
19
|
+
tokenCallback: tokenCallback,
|
|
20
|
+
messageHistoryCallback: setMessageHistory,
|
|
21
|
+
isReadyCallback: setIsReady,
|
|
22
|
+
isGeneratingCallback: setIsGenerating,
|
|
23
|
+
}), [tokenCallback]);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
setDownloadProgress(0);
|
|
26
|
+
setError(null);
|
|
27
|
+
if (preventLoad)
|
|
28
|
+
return;
|
|
29
|
+
(async () => {
|
|
30
|
+
try {
|
|
31
|
+
await controllerInstance.load({
|
|
32
|
+
modelSource: model.modelSource,
|
|
33
|
+
tokenizerSource: model.tokenizerSource,
|
|
34
|
+
tokenizerConfigSource: model.tokenizerConfigSource,
|
|
35
|
+
onDownloadProgressCallback: setDownloadProgress,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
setError(e);
|
|
40
|
+
}
|
|
41
|
+
})();
|
|
42
|
+
return () => {
|
|
43
|
+
controllerInstance.delete();
|
|
44
|
+
};
|
|
45
|
+
}, [
|
|
46
|
+
controllerInstance,
|
|
47
|
+
model.modelSource,
|
|
48
|
+
model.tokenizerSource,
|
|
49
|
+
model.tokenizerConfigSource,
|
|
50
|
+
preventLoad,
|
|
51
|
+
]);
|
|
52
|
+
// memoization of returned functions
|
|
53
|
+
const configure = useCallback(({ chatConfig, toolsConfig, }) => controllerInstance.configure({ chatConfig, toolsConfig }), [controllerInstance]);
|
|
54
|
+
const generate = useCallback((messages, tools) => {
|
|
55
|
+
setResponse('');
|
|
56
|
+
return controllerInstance.generate(messages, tools);
|
|
57
|
+
}, [controllerInstance]);
|
|
58
|
+
const sendMessage = useCallback((message) => {
|
|
59
|
+
setResponse('');
|
|
60
|
+
return controllerInstance.sendMessage(message);
|
|
61
|
+
}, [controllerInstance]);
|
|
62
|
+
const deleteMessage = useCallback((index) => controllerInstance.deleteMessage(index), [controllerInstance]);
|
|
63
|
+
const interrupt = useCallback(() => controllerInstance.interrupt(), [controllerInstance]);
|
|
64
|
+
return {
|
|
65
|
+
messageHistory,
|
|
66
|
+
response,
|
|
67
|
+
token,
|
|
68
|
+
isReady,
|
|
69
|
+
isGenerating,
|
|
70
|
+
downloadProgress,
|
|
71
|
+
error,
|
|
72
|
+
configure: configure,
|
|
73
|
+
generate: generate,
|
|
74
|
+
sendMessage: sendMessage,
|
|
75
|
+
deleteMessage: deleteMessage,
|
|
76
|
+
interrupt: interrupt,
|
|
77
|
+
};
|
|
78
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { SpeechToTextController } from '../../controllers/SpeechToTextController';
|
|
2
|
+
import { ResourceSource } from '../../types/common';
|
|
3
|
+
import { STREAMING_ACTION } from '../../constants/sttDefaults';
|
|
4
|
+
import { AvailableModels, SpeechToTextLanguage } from '../../types/stt';
|
|
5
|
+
interface SpeechToTextModule {
|
|
6
|
+
isReady: boolean;
|
|
7
|
+
isGenerating: boolean;
|
|
8
|
+
sequence: string;
|
|
9
|
+
downloadProgress: number;
|
|
10
|
+
configureStreaming: SpeechToTextController['configureStreaming'];
|
|
11
|
+
error: Error | undefined;
|
|
12
|
+
transcribe: (input: number[], audioLanguage?: SpeechToTextLanguage) => ReturnType<SpeechToTextController['transcribe']>;
|
|
13
|
+
streamingTranscribe: (streamAction: STREAMING_ACTION, input?: number[], audioLanguage?: SpeechToTextLanguage) => ReturnType<SpeechToTextController['streamingTranscribe']>;
|
|
14
|
+
}
|
|
15
|
+
export declare const useSpeechToText: ({ model, overlapSeconds, windowSize, streamingConfig, preventLoad, }: {
|
|
16
|
+
model: {
|
|
17
|
+
modelName: AvailableModels;
|
|
18
|
+
encoderSource: ResourceSource;
|
|
19
|
+
decoderSource: ResourceSource;
|
|
20
|
+
tokenizerSource: ResourceSource;
|
|
21
|
+
};
|
|
22
|
+
overlapSeconds?: ConstructorParameters<typeof SpeechToTextController>["0"]["overlapSeconds"];
|
|
23
|
+
windowSize?: ConstructorParameters<typeof SpeechToTextController>["0"]["windowSize"];
|
|
24
|
+
streamingConfig?: ConstructorParameters<typeof SpeechToTextController>["0"]["streamingConfig"];
|
|
25
|
+
preventLoad?: boolean;
|
|
26
|
+
}) => SpeechToTextModule;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
2
|
+
import { SpeechToTextController } from '../../controllers/SpeechToTextController';
|
|
3
|
+
export const useSpeechToText = ({ model, overlapSeconds, windowSize, streamingConfig, preventLoad = false, }) => {
|
|
4
|
+
const [sequence, setSequence] = useState('');
|
|
5
|
+
const [isReady, setIsReady] = useState(false);
|
|
6
|
+
const [downloadProgress, setDownloadProgress] = useState(0);
|
|
7
|
+
const [isGenerating, setIsGenerating] = useState(false);
|
|
8
|
+
const [error, setError] = useState();
|
|
9
|
+
const controllerInstance = useMemo(() => new SpeechToTextController({
|
|
10
|
+
transcribeCallback: setSequence,
|
|
11
|
+
isReadyCallback: setIsReady,
|
|
12
|
+
isGeneratingCallback: setIsGenerating,
|
|
13
|
+
onErrorCallback: setError,
|
|
14
|
+
}), []);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
controllerInstance.configureStreaming(overlapSeconds, windowSize, streamingConfig);
|
|
17
|
+
}, [controllerInstance, overlapSeconds, windowSize, streamingConfig]);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
const loadModel = async () => {
|
|
20
|
+
await controllerInstance.load({
|
|
21
|
+
modelName: model.modelName,
|
|
22
|
+
encoderSource: model.encoderSource,
|
|
23
|
+
decoderSource: model.decoderSource,
|
|
24
|
+
tokenizerSource: model.tokenizerSource,
|
|
25
|
+
onDownloadProgressCallback: setDownloadProgress,
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
if (!preventLoad) {
|
|
29
|
+
loadModel();
|
|
30
|
+
}
|
|
31
|
+
}, [
|
|
32
|
+
controllerInstance,
|
|
33
|
+
model.modelName,
|
|
34
|
+
model.encoderSource,
|
|
35
|
+
model.decoderSource,
|
|
36
|
+
model.tokenizerSource,
|
|
37
|
+
preventLoad,
|
|
38
|
+
]);
|
|
39
|
+
return {
|
|
40
|
+
isReady,
|
|
41
|
+
isGenerating,
|
|
42
|
+
downloadProgress,
|
|
43
|
+
configureStreaming: controllerInstance.configureStreaming,
|
|
44
|
+
sequence,
|
|
45
|
+
error,
|
|
46
|
+
transcribe: (waveform, audioLanguage) => controllerInstance.transcribe(waveform, audioLanguage),
|
|
47
|
+
streamingTranscribe: (streamAction, waveform, audioLanguage) => controllerInstance.streamingTranscribe(streamAction, waveform, audioLanguage),
|
|
48
|
+
};
|
|
49
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ResourceSource } from '../../types/common';
|
|
2
|
+
interface Props {
|
|
3
|
+
model: {
|
|
4
|
+
modelSource: ResourceSource;
|
|
5
|
+
tokenizerSource: ResourceSource;
|
|
6
|
+
};
|
|
7
|
+
preventLoad?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const useTextEmbeddings: ({ model, preventLoad }: Props) => {
|
|
10
|
+
error: string | null;
|
|
11
|
+
isReady: boolean;
|
|
12
|
+
isGenerating: boolean;
|
|
13
|
+
downloadProgress: number;
|
|
14
|
+
forward: (input: string) => Promise<Float32Array<ArrayBufferLike>>;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { TextEmbeddingsModule } from '../../modules/natural_language_processing/TextEmbeddingsModule';
|
|
2
|
+
import { useNonStaticModule } from '../useNonStaticModule';
|
|
3
|
+
export const useTextEmbeddings = ({ model, preventLoad = false }) => useNonStaticModule({
|
|
4
|
+
module: TextEmbeddingsModule,
|
|
5
|
+
model,
|
|
6
|
+
preventLoad,
|
|
7
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ResourceSource } from '../../types/common';
|
|
2
|
+
export declare const useTokenizer: ({ tokenizer, preventLoad, }: {
|
|
3
|
+
tokenizer: {
|
|
4
|
+
tokenizerSource: ResourceSource;
|
|
5
|
+
};
|
|
6
|
+
preventLoad?: boolean;
|
|
7
|
+
}) => {
|
|
8
|
+
error: string | null;
|
|
9
|
+
isReady: boolean;
|
|
10
|
+
isGenerating: boolean;
|
|
11
|
+
downloadProgress: number;
|
|
12
|
+
decode: (tokens: number[], skipSpecialTokens?: boolean | undefined) => Promise<Promise<any>>;
|
|
13
|
+
encode: (s: string) => Promise<Promise<any>>;
|
|
14
|
+
getVocabSize: () => Promise<Promise<number>>;
|
|
15
|
+
idToToken: (tokenId: number) => Promise<Promise<string>>;
|
|
16
|
+
tokenToId: (token: string) => Promise<Promise<number>>;
|
|
17
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
2
|
+
import { TokenizerModule } from '../../modules/natural_language_processing/TokenizerModule';
|
|
3
|
+
import { ETError, getError } from '../../Error';
|
|
4
|
+
export const useTokenizer = ({ tokenizer, preventLoad = false, }) => {
|
|
5
|
+
const [error, setError] = useState(null);
|
|
6
|
+
const [isReady, setIsReady] = useState(false);
|
|
7
|
+
const [isGenerating, setIsGenerating] = useState(false);
|
|
8
|
+
const [downloadProgress, setDownloadProgress] = useState(0);
|
|
9
|
+
const _tokenizer = useMemo(() => new TokenizerModule(), []);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
if (preventLoad)
|
|
12
|
+
return;
|
|
13
|
+
(async () => {
|
|
14
|
+
setDownloadProgress(0);
|
|
15
|
+
setError(null);
|
|
16
|
+
try {
|
|
17
|
+
setIsReady(false);
|
|
18
|
+
await _tokenizer.load({ tokenizerSource: tokenizer.tokenizerSource }, setDownloadProgress);
|
|
19
|
+
setIsReady(true);
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
setError(err.message);
|
|
23
|
+
}
|
|
24
|
+
})();
|
|
25
|
+
}, [_tokenizer, tokenizer.tokenizerSource, preventLoad]);
|
|
26
|
+
const stateWrapper = (fn) => {
|
|
27
|
+
return (...args) => {
|
|
28
|
+
if (!isReady)
|
|
29
|
+
throw new Error(getError(ETError.ModuleNotLoaded));
|
|
30
|
+
if (isGenerating)
|
|
31
|
+
throw new Error(getError(ETError.ModelGenerating));
|
|
32
|
+
try {
|
|
33
|
+
setIsGenerating(true);
|
|
34
|
+
return fn.apply(_tokenizer, args);
|
|
35
|
+
}
|
|
36
|
+
finally {
|
|
37
|
+
setIsGenerating(false);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
return {
|
|
42
|
+
error,
|
|
43
|
+
isReady,
|
|
44
|
+
isGenerating,
|
|
45
|
+
downloadProgress,
|
|
46
|
+
decode: stateWrapper(TokenizerModule.prototype.decode),
|
|
47
|
+
encode: stateWrapper(TokenizerModule.prototype.encode),
|
|
48
|
+
getVocabSize: stateWrapper(TokenizerModule.prototype.getVocabSize),
|
|
49
|
+
idToToken: stateWrapper(TokenizerModule.prototype.idToToken),
|
|
50
|
+
tokenToId: stateWrapper(TokenizerModule.prototype.tokenToId),
|
|
51
|
+
};
|
|
52
|
+
};
|