react-native-executorch 0.3.3 → 0.4.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.
Files changed (343) hide show
  1. package/README.md +30 -13
  2. package/android/build.gradle +1 -1
  3. package/android/src/main/java/com/swmansion/rnexecutorch/ETModule.kt +1 -2
  4. package/android/src/main/java/com/swmansion/rnexecutorch/ImageSegmentation.kt +58 -0
  5. package/android/src/main/java/com/swmansion/rnexecutorch/LLM.kt +13 -49
  6. package/android/src/main/java/com/swmansion/rnexecutorch/RnExecutorchPackage.kt +37 -0
  7. package/android/src/main/java/com/swmansion/rnexecutorch/StyleTransfer.kt +1 -1
  8. package/android/src/main/java/com/swmansion/rnexecutorch/TextEmbeddings.kt +51 -0
  9. package/android/src/main/java/com/swmansion/rnexecutorch/Tokenizer.kt +86 -0
  10. package/android/src/main/java/com/swmansion/rnexecutorch/models/BaseModel.kt +3 -4
  11. package/android/src/main/java/com/swmansion/rnexecutorch/models/TextEmbeddings/TextEmbeddingsModel.kt +48 -0
  12. package/android/src/main/java/com/swmansion/rnexecutorch/models/TextEmbeddings/TextEmbeddingsUtils.kt +37 -0
  13. package/android/src/main/java/com/swmansion/rnexecutorch/models/classification/ClassificationModel.kt +1 -0
  14. package/android/src/main/java/com/swmansion/rnexecutorch/models/imageSegmentation/Constants.kt +26 -0
  15. package/android/src/main/java/com/swmansion/rnexecutorch/models/imageSegmentation/ImageSegmentationModel.kt +142 -0
  16. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/RecognizerUtils.kt +3 -0
  17. package/android/src/main/java/com/swmansion/rnexecutorch/models/{StyleTransferModel.kt → styleTransfer/StyleTransferModel.kt} +2 -1
  18. package/android/src/main/java/com/swmansion/rnexecutorch/utils/ArrayUtils.kt +0 -8
  19. package/android/src/main/java/com/swmansion/rnexecutorch/{models/classification/Utils.kt → utils/Numerical.kt} +1 -1
  20. package/ios/ExecutorchLib.xcframework/Info.plist +4 -4
  21. package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/ExecutorchLib +0 -0
  22. package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Headers/HuggingFaceTokenizer.h +14 -0
  23. package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Headers/LLaMARunner.h +1 -23
  24. package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Info.plist +0 -0
  25. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/ExecutorchLib +0 -0
  26. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Headers/HuggingFaceTokenizer.h +14 -0
  27. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Headers/LLaMARunner.h +1 -23
  28. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Info.plist +0 -0
  29. package/ios/RnExecutorch/Classification.mm +15 -18
  30. package/ios/RnExecutorch/ETModule.mm +6 -5
  31. package/ios/RnExecutorch/ImageSegmentation.h +5 -0
  32. package/ios/RnExecutorch/ImageSegmentation.mm +60 -0
  33. package/ios/RnExecutorch/LLM.mm +12 -53
  34. package/ios/RnExecutorch/OCR.mm +39 -43
  35. package/ios/RnExecutorch/ObjectDetection.mm +20 -20
  36. package/ios/RnExecutorch/SpeechToText.mm +6 -7
  37. package/ios/RnExecutorch/StyleTransfer.mm +16 -19
  38. package/ios/RnExecutorch/TextEmbeddings.h +5 -0
  39. package/ios/RnExecutorch/TextEmbeddings.mm +62 -0
  40. package/ios/RnExecutorch/Tokenizer.h +5 -0
  41. package/ios/RnExecutorch/Tokenizer.mm +83 -0
  42. package/ios/RnExecutorch/VerticalOCR.mm +36 -36
  43. package/ios/RnExecutorch/models/BaseModel.h +2 -5
  44. package/ios/RnExecutorch/models/BaseModel.mm +5 -15
  45. package/ios/RnExecutorch/models/classification/ClassificationModel.mm +2 -3
  46. package/ios/RnExecutorch/models/classification/Constants.mm +0 -1
  47. package/ios/RnExecutorch/models/image_segmentation/Constants.h +4 -0
  48. package/ios/RnExecutorch/models/image_segmentation/Constants.mm +8 -0
  49. package/ios/RnExecutorch/models/image_segmentation/ImageSegmentationModel.h +10 -0
  50. package/ios/RnExecutorch/models/image_segmentation/ImageSegmentationModel.mm +146 -0
  51. package/ios/RnExecutorch/models/object_detection/SSDLiteLargeModel.mm +1 -2
  52. package/ios/RnExecutorch/models/ocr/Detector.h +0 -2
  53. package/ios/RnExecutorch/models/ocr/Detector.mm +2 -1
  54. package/ios/RnExecutorch/models/ocr/RecognitionHandler.h +5 -4
  55. package/ios/RnExecutorch/models/ocr/RecognitionHandler.mm +9 -26
  56. package/ios/RnExecutorch/models/ocr/Recognizer.mm +1 -2
  57. package/ios/RnExecutorch/models/ocr/VerticalDetector.h +0 -2
  58. package/ios/RnExecutorch/models/ocr/VerticalDetector.mm +2 -1
  59. package/ios/RnExecutorch/models/ocr/utils/OCRUtils.mm +0 -1
  60. package/ios/RnExecutorch/models/stt/Moonshine.mm +1 -6
  61. package/ios/RnExecutorch/models/stt/SpeechToTextBaseModel.mm +7 -11
  62. package/ios/RnExecutorch/models/stt/Whisper.mm +0 -5
  63. package/ios/RnExecutorch/models/{StyleTransferModel.h → style_transfer/StyleTransferModel.h} +1 -1
  64. package/ios/RnExecutorch/models/{StyleTransferModel.mm → style_transfer/StyleTransferModel.mm} +2 -3
  65. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsModel.h +15 -0
  66. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsModel.mm +45 -0
  67. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsUtils.h +8 -0
  68. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsUtils.mm +49 -0
  69. package/ios/RnExecutorch/utils/Conversions.h +15 -0
  70. package/ios/RnExecutorch/utils/ImageProcessor.h +0 -1
  71. package/ios/RnExecutorch/{models/classification/Utils.h → utils/Numerical.h} +0 -2
  72. package/ios/RnExecutorch/{models/classification/Utils.mm → utils/Numerical.mm} +0 -2
  73. package/ios/RnExecutorch/utils/ObjectDetectionUtils.mm +0 -2
  74. package/ios/RnExecutorch/utils/SFFT.mm +1 -1
  75. package/ios/RnExecutorch/utils/ScalarType.h +0 -2
  76. package/lib/module/Error.js +16 -2
  77. package/lib/module/Error.js.map +1 -1
  78. package/lib/module/constants/{llamaDefaults.js → llmDefaults.js} +7 -3
  79. package/lib/module/constants/llmDefaults.js.map +1 -0
  80. package/lib/module/constants/modelUrls.js +88 -27
  81. package/lib/module/constants/modelUrls.js.map +1 -1
  82. package/lib/module/constants/ocr/models.js +290 -0
  83. package/lib/module/constants/ocr/models.js.map +1 -0
  84. package/lib/module/constants/ocr/symbols.js +137 -2
  85. package/lib/module/constants/ocr/symbols.js.map +1 -1
  86. package/lib/module/constants/sttDefaults.js +50 -25
  87. package/lib/module/constants/sttDefaults.js.map +1 -1
  88. package/lib/module/controllers/LLMController.js +205 -0
  89. package/lib/module/controllers/LLMController.js.map +1 -0
  90. package/lib/module/controllers/OCRController.js +5 -10
  91. package/lib/module/controllers/OCRController.js.map +1 -1
  92. package/lib/module/controllers/SpeechToTextController.js +225 -122
  93. package/lib/module/controllers/SpeechToTextController.js.map +1 -1
  94. package/lib/module/controllers/VerticalOCRController.js +6 -10
  95. package/lib/module/controllers/VerticalOCRController.js.map +1 -1
  96. package/lib/module/hooks/computer_vision/useClassification.js +8 -23
  97. package/lib/module/hooks/computer_vision/useClassification.js.map +1 -1
  98. package/lib/module/hooks/computer_vision/useImageSegmentation.js +13 -0
  99. package/lib/module/hooks/computer_vision/useImageSegmentation.js.map +1 -0
  100. package/lib/module/hooks/computer_vision/useOCR.js +11 -6
  101. package/lib/module/hooks/computer_vision/useOCR.js.map +1 -1
  102. package/lib/module/hooks/computer_vision/useObjectDetection.js +8 -23
  103. package/lib/module/hooks/computer_vision/useObjectDetection.js.map +1 -1
  104. package/lib/module/hooks/computer_vision/useStyleTransfer.js +8 -23
  105. package/lib/module/hooks/computer_vision/useStyleTransfer.js.map +1 -1
  106. package/lib/module/hooks/computer_vision/useVerticalOCR.js +10 -7
  107. package/lib/module/hooks/computer_vision/useVerticalOCR.js.map +1 -1
  108. package/lib/module/hooks/general/useExecutorchModule.js +8 -36
  109. package/lib/module/hooks/general/useExecutorchModule.js.map +1 -1
  110. package/lib/module/hooks/natural_language_processing/useLLM.js +54 -63
  111. package/lib/module/hooks/natural_language_processing/useLLM.js.map +1 -1
  112. package/lib/module/hooks/natural_language_processing/useSpeechToText.js +15 -11
  113. package/lib/module/hooks/natural_language_processing/useSpeechToText.js.map +1 -1
  114. package/lib/module/hooks/natural_language_processing/useTextEmbeddings.js +14 -0
  115. package/lib/module/hooks/natural_language_processing/useTextEmbeddings.js.map +1 -0
  116. package/lib/module/hooks/natural_language_processing/useTokenizer.js +54 -0
  117. package/lib/module/hooks/natural_language_processing/useTokenizer.js.map +1 -0
  118. package/lib/module/hooks/useModule.js +18 -62
  119. package/lib/module/hooks/useModule.js.map +1 -1
  120. package/lib/module/index.js +16 -2
  121. package/lib/module/index.js.map +1 -1
  122. package/lib/module/modules/BaseModule.js +9 -10
  123. package/lib/module/modules/BaseModule.js.map +1 -1
  124. package/lib/module/modules/computer_vision/ClassificationModule.js +8 -5
  125. package/lib/module/modules/computer_vision/ClassificationModule.js.map +1 -1
  126. package/lib/module/modules/computer_vision/ImageSegmentationModule.js +28 -0
  127. package/lib/module/modules/computer_vision/ImageSegmentationModule.js.map +1 -0
  128. package/lib/module/modules/computer_vision/ObjectDetectionModule.js +8 -5
  129. package/lib/module/modules/computer_vision/ObjectDetectionModule.js.map +1 -1
  130. package/lib/module/modules/computer_vision/StyleTransferModule.js +8 -5
  131. package/lib/module/modules/computer_vision/StyleTransferModule.js.map +1 -1
  132. package/lib/module/modules/general/ExecutorchModule.js +8 -5
  133. package/lib/module/modules/general/ExecutorchModule.js.map +1 -1
  134. package/lib/module/modules/natural_language_processing/LLMModule.js +46 -27
  135. package/lib/module/modules/natural_language_processing/LLMModule.js.map +1 -1
  136. package/lib/module/modules/natural_language_processing/SpeechToTextModule.js +8 -5
  137. package/lib/module/modules/natural_language_processing/SpeechToTextModule.js.map +1 -1
  138. package/lib/module/modules/natural_language_processing/TextEmbeddingsModule.js +14 -0
  139. package/lib/module/modules/natural_language_processing/TextEmbeddingsModule.js.map +1 -0
  140. package/lib/module/modules/natural_language_processing/TokenizerModule.js +26 -0
  141. package/lib/module/modules/natural_language_processing/TokenizerModule.js.map +1 -0
  142. package/lib/module/native/NativeClassification.js.map +1 -1
  143. package/lib/module/native/NativeImageSegmentation.js +5 -0
  144. package/lib/module/native/NativeImageSegmentation.js.map +1 -0
  145. package/lib/module/native/NativeLLM.js.map +1 -1
  146. package/lib/module/native/NativeTextEmbeddings.js +5 -0
  147. package/lib/module/native/NativeTextEmbeddings.js.map +1 -0
  148. package/lib/module/native/NativeTokenizer.js +5 -0
  149. package/lib/module/native/NativeTokenizer.js.map +1 -0
  150. package/lib/module/native/RnExecutorchModules.js +18 -113
  151. package/lib/module/native/RnExecutorchModules.js.map +1 -1
  152. package/lib/module/types/common.js.map +1 -1
  153. package/lib/module/types/imageSegmentation.js +29 -0
  154. package/lib/module/types/imageSegmentation.js.map +1 -0
  155. package/lib/module/types/llm.js +7 -0
  156. package/lib/module/types/llm.js.map +1 -0
  157. package/lib/module/types/{object_detection.js → objectDetection.js} +1 -1
  158. package/lib/module/types/objectDetection.js.map +1 -0
  159. package/lib/module/types/ocr.js +2 -0
  160. package/lib/module/types/stt.js +82 -0
  161. package/lib/module/types/stt.js.map +1 -0
  162. package/lib/module/utils/ResourceFetcher.js +156 -0
  163. package/lib/module/utils/ResourceFetcher.js.map +1 -0
  164. package/lib/module/utils/llm.js +25 -0
  165. package/lib/module/utils/llm.js.map +1 -0
  166. package/lib/module/utils/stt.js +22 -0
  167. package/lib/module/utils/stt.js.map +1 -0
  168. package/lib/typescript/Error.d.ts +4 -1
  169. package/lib/typescript/Error.d.ts.map +1 -1
  170. package/lib/typescript/constants/{llamaDefaults.d.ts → llmDefaults.d.ts} +5 -5
  171. package/lib/typescript/constants/llmDefaults.d.ts.map +1 -0
  172. package/lib/typescript/constants/modelUrls.d.ts +74 -28
  173. package/lib/typescript/constants/modelUrls.d.ts.map +1 -1
  174. package/lib/typescript/constants/ocr/models.d.ts +285 -0
  175. package/lib/typescript/constants/ocr/models.d.ts.map +1 -0
  176. package/lib/typescript/constants/ocr/symbols.d.ts +73 -1
  177. package/lib/typescript/constants/ocr/symbols.d.ts.map +1 -1
  178. package/lib/typescript/constants/sttDefaults.d.ts +8 -13
  179. package/lib/typescript/constants/sttDefaults.d.ts.map +1 -1
  180. package/lib/typescript/controllers/LLMController.d.ts +46 -0
  181. package/lib/typescript/controllers/LLMController.d.ts.map +1 -0
  182. package/lib/typescript/controllers/OCRController.d.ts.map +1 -1
  183. package/lib/typescript/controllers/SpeechToTextController.d.ts +30 -16
  184. package/lib/typescript/controllers/SpeechToTextController.d.ts.map +1 -1
  185. package/lib/typescript/controllers/VerticalOCRController.d.ts +1 -1
  186. package/lib/typescript/controllers/VerticalOCRController.d.ts.map +1 -1
  187. package/lib/typescript/hooks/computer_vision/useClassification.d.ts +5 -5
  188. package/lib/typescript/hooks/computer_vision/useClassification.d.ts.map +1 -1
  189. package/lib/typescript/hooks/computer_vision/useImageSegmentation.d.ts +37 -0
  190. package/lib/typescript/hooks/computer_vision/useImageSegmentation.d.ts.map +1 -0
  191. package/lib/typescript/hooks/computer_vision/useOCR.d.ts +2 -1
  192. package/lib/typescript/hooks/computer_vision/useOCR.d.ts.map +1 -1
  193. package/lib/typescript/hooks/computer_vision/useObjectDetection.d.ts +5 -4
  194. package/lib/typescript/hooks/computer_vision/useObjectDetection.d.ts.map +1 -1
  195. package/lib/typescript/hooks/computer_vision/useStyleTransfer.d.ts +4 -2
  196. package/lib/typescript/hooks/computer_vision/useStyleTransfer.d.ts.map +1 -1
  197. package/lib/typescript/hooks/computer_vision/useVerticalOCR.d.ts +2 -1
  198. package/lib/typescript/hooks/computer_vision/useVerticalOCR.d.ts.map +1 -1
  199. package/lib/typescript/hooks/general/useExecutorchModule.d.ts +5 -6
  200. package/lib/typescript/hooks/general/useExecutorchModule.d.ts.map +1 -1
  201. package/lib/typescript/hooks/natural_language_processing/useLLM.d.ts +6 -6
  202. package/lib/typescript/hooks/natural_language_processing/useLLM.d.ts.map +1 -1
  203. package/lib/typescript/hooks/natural_language_processing/useSpeechToText.d.ts +7 -3
  204. package/lib/typescript/hooks/natural_language_processing/useSpeechToText.d.ts.map +1 -1
  205. package/lib/typescript/hooks/natural_language_processing/useTextEmbeddings.d.ts +13 -0
  206. package/lib/typescript/hooks/natural_language_processing/useTextEmbeddings.d.ts.map +1 -0
  207. package/lib/typescript/hooks/natural_language_processing/useTokenizer.d.ts +16 -0
  208. package/lib/typescript/hooks/natural_language_processing/useTokenizer.d.ts.map +1 -0
  209. package/lib/typescript/hooks/useModule.d.ts +11 -10
  210. package/lib/typescript/hooks/useModule.d.ts.map +1 -1
  211. package/lib/typescript/index.d.ts +15 -2
  212. package/lib/typescript/index.d.ts.map +1 -1
  213. package/lib/typescript/modules/BaseModule.d.ts +4 -5
  214. package/lib/typescript/modules/BaseModule.d.ts.map +1 -1
  215. package/lib/typescript/modules/computer_vision/ClassificationModule.d.ts +7 -7
  216. package/lib/typescript/modules/computer_vision/ClassificationModule.d.ts.map +1 -1
  217. package/lib/typescript/modules/computer_vision/ImageSegmentationModule.d.ts +32 -0
  218. package/lib/typescript/modules/computer_vision/ImageSegmentationModule.d.ts.map +1 -0
  219. package/lib/typescript/modules/computer_vision/ObjectDetectionModule.d.ts +6 -5
  220. package/lib/typescript/modules/computer_vision/ObjectDetectionModule.d.ts.map +1 -1
  221. package/lib/typescript/modules/computer_vision/StyleTransferModule.d.ts +6 -5
  222. package/lib/typescript/modules/computer_vision/StyleTransferModule.d.ts.map +1 -1
  223. package/lib/typescript/modules/general/ExecutorchModule.d.ts +4 -3
  224. package/lib/typescript/modules/general/ExecutorchModule.d.ts.map +1 -1
  225. package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts +19 -5
  226. package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts.map +1 -1
  227. package/lib/typescript/modules/natural_language_processing/SpeechToTextModule.d.ts +7 -4
  228. package/lib/typescript/modules/natural_language_processing/SpeechToTextModule.d.ts.map +1 -1
  229. package/lib/typescript/modules/natural_language_processing/TextEmbeddingsModule.d.ts +8 -0
  230. package/lib/typescript/modules/natural_language_processing/TextEmbeddingsModule.d.ts.map +1 -0
  231. package/lib/typescript/modules/natural_language_processing/TokenizerModule.d.ts +12 -0
  232. package/lib/typescript/modules/natural_language_processing/TokenizerModule.d.ts.map +1 -0
  233. package/lib/typescript/native/NativeClassification.d.ts.map +1 -1
  234. package/lib/typescript/native/NativeImageSegmentation.d.ts +10 -0
  235. package/lib/typescript/native/NativeImageSegmentation.d.ts.map +1 -0
  236. package/lib/typescript/native/NativeLLM.d.ts +3 -4
  237. package/lib/typescript/native/NativeLLM.d.ts.map +1 -1
  238. package/lib/typescript/native/NativeObjectDetection.d.ts +1 -1
  239. package/lib/typescript/native/NativeObjectDetection.d.ts.map +1 -1
  240. package/lib/typescript/native/NativeSpeechToText.d.ts +2 -2
  241. package/lib/typescript/native/NativeSpeechToText.d.ts.map +1 -1
  242. package/lib/typescript/native/NativeTextEmbeddings.d.ts +8 -0
  243. package/lib/typescript/native/NativeTextEmbeddings.d.ts.map +1 -0
  244. package/lib/typescript/native/NativeTokenizer.d.ts +12 -0
  245. package/lib/typescript/native/NativeTokenizer.d.ts.map +1 -0
  246. package/lib/typescript/native/RnExecutorchModules.d.ts +18 -41
  247. package/lib/typescript/native/RnExecutorchModules.d.ts.map +1 -1
  248. package/lib/typescript/types/common.d.ts +1 -26
  249. package/lib/typescript/types/common.d.ts.map +1 -1
  250. package/lib/typescript/types/imageSegmentation.d.ts +25 -0
  251. package/lib/typescript/types/imageSegmentation.d.ts.map +1 -0
  252. package/lib/typescript/types/llm.d.ts +38 -0
  253. package/lib/typescript/types/llm.d.ts.map +1 -0
  254. package/lib/typescript/types/{object_detection.d.ts → objectDetection.d.ts} +1 -1
  255. package/lib/typescript/types/objectDetection.d.ts.map +1 -0
  256. package/lib/typescript/types/ocr.d.ts +2 -1
  257. package/lib/typescript/types/ocr.d.ts.map +1 -1
  258. package/lib/typescript/types/stt.d.ts +91 -0
  259. package/lib/typescript/types/stt.d.ts.map +1 -0
  260. package/lib/typescript/utils/ResourceFetcher.d.ts +17 -0
  261. package/lib/typescript/utils/ResourceFetcher.d.ts.map +1 -0
  262. package/lib/typescript/utils/llm.d.ts +3 -0
  263. package/lib/typescript/utils/llm.d.ts.map +1 -0
  264. package/lib/typescript/utils/stt.d.ts +2 -0
  265. package/lib/typescript/utils/stt.d.ts.map +1 -0
  266. package/package.json +13 -49
  267. package/react-native-executorch.podspec +1 -1
  268. package/src/Error.ts +16 -3
  269. package/src/constants/llmDefaults.ts +14 -0
  270. package/src/constants/modelUrls.ts +146 -39
  271. package/src/constants/ocr/models.ts +453 -0
  272. package/src/constants/ocr/symbols.ts +147 -3
  273. package/src/constants/sttDefaults.ts +55 -37
  274. package/src/controllers/LLMController.ts +286 -0
  275. package/src/controllers/OCRController.ts +14 -28
  276. package/src/controllers/SpeechToTextController.ts +318 -180
  277. package/src/controllers/VerticalOCRController.ts +17 -32
  278. package/src/hooks/computer_vision/useClassification.ts +11 -26
  279. package/src/hooks/computer_vision/useImageSegmentation.ts +18 -0
  280. package/src/hooks/computer_vision/useOCR.ts +17 -5
  281. package/src/hooks/computer_vision/useObjectDetection.ts +10 -24
  282. package/src/hooks/computer_vision/useStyleTransfer.ts +9 -25
  283. package/src/hooks/computer_vision/useVerticalOCR.ts +11 -4
  284. package/src/hooks/general/useExecutorchModule.ts +10 -50
  285. package/src/hooks/natural_language_processing/useLLM.ts +80 -97
  286. package/src/hooks/natural_language_processing/useSpeechToText.ts +39 -12
  287. package/src/hooks/natural_language_processing/useTextEmbeddings.ts +18 -0
  288. package/src/hooks/natural_language_processing/useTokenizer.ts +61 -0
  289. package/src/hooks/useModule.ts +32 -92
  290. package/src/index.tsx +16 -2
  291. package/src/modules/BaseModule.ts +16 -26
  292. package/src/modules/computer_vision/ClassificationModule.ts +13 -8
  293. package/src/modules/computer_vision/ImageSegmentationModule.ts +39 -0
  294. package/src/modules/computer_vision/ObjectDetectionModule.ts +13 -8
  295. package/src/modules/computer_vision/StyleTransferModule.ts +13 -8
  296. package/src/modules/general/ExecutorchModule.ts +11 -6
  297. package/src/modules/natural_language_processing/LLMModule.ts +64 -51
  298. package/src/modules/natural_language_processing/SpeechToTextModule.ts +25 -10
  299. package/src/modules/natural_language_processing/TextEmbeddingsModule.ts +18 -0
  300. package/src/modules/natural_language_processing/TokenizerModule.ts +34 -0
  301. package/src/native/NativeClassification.ts +0 -1
  302. package/src/native/NativeImageSegmentation.ts +14 -0
  303. package/src/native/NativeLLM.ts +3 -10
  304. package/src/native/NativeObjectDetection.ts +1 -1
  305. package/src/native/NativeSpeechToText.ts +2 -2
  306. package/src/native/NativeTextEmbeddings.ts +9 -0
  307. package/src/native/NativeTokenizer.ts +13 -0
  308. package/src/native/RnExecutorchModules.ts +54 -234
  309. package/src/types/common.ts +1 -44
  310. package/src/types/imageSegmentation.ts +25 -0
  311. package/src/types/llm.ts +57 -0
  312. package/src/types/ocr.ts +3 -1
  313. package/src/types/stt.ts +93 -0
  314. package/src/utils/ResourceFetcher.ts +196 -0
  315. package/src/utils/llm.ts +34 -0
  316. package/src/utils/stt.ts +28 -0
  317. package/android/src/main/java/com/swmansion/rnexecutorch/utils/llms/ConversationManager.kt +0 -68
  318. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/_CodeSignature/CodeResources +0 -124
  319. package/ios/RnExecutorch/utils/llms/Constants.h +0 -6
  320. package/ios/RnExecutorch/utils/llms/Constants.mm +0 -23
  321. package/ios/RnExecutorch/utils/llms/ConversationManager.h +0 -26
  322. package/ios/RnExecutorch/utils/llms/ConversationManager.mm +0 -71
  323. package/lib/module/constants/llamaDefaults.js.map +0 -1
  324. package/lib/module/modules/computer_vision/BaseCVModule.js +0 -14
  325. package/lib/module/modules/computer_vision/BaseCVModule.js.map +0 -1
  326. package/lib/module/types/object_detection.js.map +0 -1
  327. package/lib/module/utils/fetchResource.js +0 -93
  328. package/lib/module/utils/fetchResource.js.map +0 -1
  329. package/lib/module/utils/listDownloadedResources.js +0 -13
  330. package/lib/module/utils/listDownloadedResources.js.map +0 -1
  331. package/lib/typescript/constants/llamaDefaults.d.ts.map +0 -1
  332. package/lib/typescript/modules/computer_vision/BaseCVModule.d.ts +0 -9
  333. package/lib/typescript/modules/computer_vision/BaseCVModule.d.ts.map +0 -1
  334. package/lib/typescript/types/object_detection.d.ts.map +0 -1
  335. package/lib/typescript/utils/fetchResource.d.ts +0 -3
  336. package/lib/typescript/utils/fetchResource.d.ts.map +0 -1
  337. package/lib/typescript/utils/listDownloadedResources.d.ts +0 -3
  338. package/lib/typescript/utils/listDownloadedResources.d.ts.map +0 -1
  339. package/src/constants/llamaDefaults.ts +0 -9
  340. package/src/modules/computer_vision/BaseCVModule.ts +0 -22
  341. package/src/utils/fetchResource.ts +0 -106
  342. package/src/utils/listDownloadedResources.ts +0 -12
  343. /package/src/types/{object_detection.ts → objectDetection.ts} +0 -0
@@ -1,15 +1,12 @@
1
1
  import { symbols } from '../constants/ocr/symbols';
2
2
  import { ETError, getError } from '../Error';
3
- import { _VerticalOCRModule } from '../native/RnExecutorchModules';
3
+ import { VerticalOCRNativeModule } from '../native/RnExecutorchModules';
4
4
  import { ResourceSource } from '../types/common';
5
5
  import { OCRLanguage } from '../types/ocr';
6
- import {
7
- fetchResource,
8
- calculateDownloadProgres,
9
- } from '../utils/fetchResource';
6
+ import { ResourceFetcher } from '../utils/ResourceFetcher';
10
7
 
11
8
  export class VerticalOCRController {
12
- private nativeModule: _VerticalOCRModule;
9
+ private ocrNativeModule: typeof VerticalOCRNativeModule;
13
10
  public isReady: boolean = false;
14
11
  public isGenerating: boolean = false;
15
12
  public error: string | null = null;
@@ -24,7 +21,7 @@ export class VerticalOCRController {
24
21
  isGeneratingCallback = (_isGenerating: boolean) => {},
25
22
  errorCallback = (_error: string) => {},
26
23
  }) {
27
- this.nativeModule = new _VerticalOCRModule();
24
+ this.ocrNativeModule = VerticalOCRNativeModule;
28
25
  this.modelDownloadProgressCallback = modelDownloadProgressCallback;
29
26
  this.isReadyCallback = isReadyCallback;
30
27
  this.isGeneratingCallback = isGeneratingCallback;
@@ -57,31 +54,19 @@ export class VerticalOCRController {
57
54
  this.isReady = false;
58
55
  this.isReadyCallback(this.isReady);
59
56
 
60
- const recognizerPath = independentCharacters
61
- ? await fetchResource(
62
- recognizerSources.recognizerSmall,
63
- calculateDownloadProgres(3, 0, this.modelDownloadProgressCallback)
64
- )
65
- : await fetchResource(
66
- recognizerSources.recognizerLarge,
67
- calculateDownloadProgres(3, 0, this.modelDownloadProgressCallback)
68
- );
69
-
70
- const detectorPaths = {
71
- detectorLarge: await fetchResource(
72
- detectorSources.detectorLarge,
73
- calculateDownloadProgres(3, 1, this.modelDownloadProgressCallback)
74
- ),
75
- detectorNarrow: await fetchResource(
76
- detectorSources.detectorNarrow,
77
- calculateDownloadProgres(3, 2, this.modelDownloadProgressCallback)
78
- ),
79
- };
57
+ const paths = await ResourceFetcher.fetchMultipleResources(
58
+ this.modelDownloadProgressCallback,
59
+ detectorSources.detectorLarge,
60
+ detectorSources.detectorNarrow,
61
+ independentCharacters
62
+ ? recognizerSources.recognizerSmall
63
+ : recognizerSources.recognizerLarge
64
+ );
80
65
 
81
- await this.nativeModule.loadModule(
82
- detectorPaths.detectorLarge,
83
- detectorPaths.detectorNarrow,
84
- recognizerPath,
66
+ await this.ocrNativeModule.loadModule(
67
+ paths[0]!,
68
+ paths[1]!,
69
+ paths[2]!,
85
70
  symbols[language],
86
71
  independentCharacters
87
72
  );
@@ -108,7 +93,7 @@ export class VerticalOCRController {
108
93
  try {
109
94
  this.isGenerating = true;
110
95
  this.isGeneratingCallback(this.isGenerating);
111
- return await this.nativeModule.forward(input);
96
+ return await this.ocrNativeModule.forward(input);
112
97
  } catch (e) {
113
98
  throw new Error(getError(e));
114
99
  } finally {
@@ -1,31 +1,16 @@
1
- import { useState } from 'react';
2
- import { _ClassificationModule } from '../../native/RnExecutorchModules';
1
+ import { ClassificationModule } from '../../modules/computer_vision/ClassificationModule';
2
+ import { ResourceSource } from '../../types/common';
3
3
  import { useModule } from '../useModule';
4
4
 
5
- interface Props {
6
- modelSource: string | number;
7
- }
8
-
9
5
  export const useClassification = ({
10
6
  modelSource,
11
- }: Props): {
12
- error: string | null;
13
- isReady: boolean;
14
- isGenerating: boolean;
15
- downloadProgress: number;
16
- forward: (input: string) => Promise<{ [category: string]: number }>;
17
- } => {
18
- const [module, _] = useState(() => new _ClassificationModule());
19
- const {
20
- error,
21
- isReady,
22
- isGenerating,
23
- downloadProgress,
24
- forwardImage: forward,
25
- } = useModule({
26
- modelSource,
27
- module,
7
+ preventLoad = false,
8
+ }: {
9
+ modelSource: ResourceSource;
10
+ preventLoad?: boolean;
11
+ }) =>
12
+ useModule({
13
+ module: ClassificationModule,
14
+ loadArgs: [modelSource],
15
+ preventLoad,
28
16
  });
29
-
30
- return { error, isReady, isGenerating, downloadProgress, forward };
31
- };
@@ -0,0 +1,18 @@
1
+ import { useModule } from '../useModule';
2
+ import { ImageSegmentationModule } from '../../modules/computer_vision/ImageSegmentationModule';
3
+ import { ResourceSource } from '../../types/common';
4
+
5
+ interface Props {
6
+ modelSource: ResourceSource;
7
+ preventLoad?: boolean;
8
+ }
9
+
10
+ export const useImageSegmentation = ({
11
+ modelSource,
12
+ preventLoad = false,
13
+ }: Props) =>
14
+ useModule({
15
+ module: ImageSegmentationModule,
16
+ loadArgs: [modelSource],
17
+ preventLoad,
18
+ });
@@ -1,4 +1,4 @@
1
- import { useEffect, useState } from 'react';
1
+ import { useEffect, useMemo, useState } from 'react';
2
2
  import { ResourceSource } from '../../types/common';
3
3
  import { OCRDetection, OCRLanguage } from '../../types/ocr';
4
4
  import { OCRController } from '../../controllers/OCRController';
@@ -15,6 +15,7 @@ export const useOCR = ({
15
15
  detectorSource,
16
16
  recognizerSources,
17
17
  language = 'en',
18
+ preventLoad = false,
18
19
  }: {
19
20
  detectorSource: ResourceSource;
20
21
  recognizerSources: {
@@ -23,20 +24,22 @@ export const useOCR = ({
23
24
  recognizerSmall: ResourceSource;
24
25
  };
25
26
  language?: OCRLanguage;
27
+ preventLoad?: boolean;
26
28
  }): OCRModule => {
27
29
  const [error, setError] = useState<string | null>(null);
28
30
  const [isReady, setIsReady] = useState(false);
29
31
  const [isGenerating, setIsGenerating] = useState(false);
30
32
  const [downloadProgress, setDownloadProgress] = useState(0);
31
33
 
32
- const [model, _] = useState(
34
+ const model = useMemo(
33
35
  () =>
34
36
  new OCRController({
35
37
  modelDownloadProgressCallback: setDownloadProgress,
36
38
  isReadyCallback: setIsReady,
37
39
  isGeneratingCallback: setIsGenerating,
38
40
  errorCallback: setError,
39
- })
41
+ }),
42
+ []
40
43
  );
41
44
 
42
45
  useEffect(() => {
@@ -44,9 +47,18 @@ export const useOCR = ({
44
47
  await model.loadModel(detectorSource, recognizerSources, language);
45
48
  };
46
49
 
47
- loadModel();
50
+ if (!preventLoad) {
51
+ loadModel();
52
+ }
48
53
  // eslint-disable-next-line react-hooks/exhaustive-deps
49
- }, [detectorSource, language, JSON.stringify(recognizerSources)]);
54
+ }, [
55
+ model,
56
+ detectorSource,
57
+ language,
58
+ // eslint-disable-next-line react-hooks/exhaustive-deps
59
+ JSON.stringify(recognizerSources),
60
+ preventLoad,
61
+ ]);
50
62
 
51
63
  return {
52
64
  error,
@@ -1,32 +1,18 @@
1
- import { useState } from 'react';
2
- import { _ObjectDetectionModule } from '../../native/RnExecutorchModules';
1
+ import { ResourceSource } from '../../types/common';
3
2
  import { useModule } from '../useModule';
4
- import { Detection } from '../../types/object_detection';
3
+ import { ObjectDetectionModule } from '../../modules/computer_vision/ObjectDetectionModule';
5
4
 
6
5
  interface Props {
7
- modelSource: string | number;
6
+ modelSource: ResourceSource;
7
+ preventLoad?: boolean;
8
8
  }
9
9
 
10
10
  export const useObjectDetection = ({
11
11
  modelSource,
12
- }: Props): {
13
- error: string | null;
14
- isReady: boolean;
15
- isGenerating: boolean;
16
- downloadProgress: number;
17
- forward: (input: string) => Promise<Detection[]>;
18
- } => {
19
- const [module, _] = useState(() => new _ObjectDetectionModule());
20
- const {
21
- error,
22
- isReady,
23
- isGenerating,
24
- downloadProgress,
25
- forwardImage: forward,
26
- } = useModule({
27
- modelSource,
28
- module,
12
+ preventLoad = false,
13
+ }: Props) =>
14
+ useModule({
15
+ module: ObjectDetectionModule,
16
+ loadArgs: [modelSource],
17
+ preventLoad,
29
18
  });
30
-
31
- return { error, isReady, isGenerating, downloadProgress, forward };
32
- };
@@ -1,31 +1,15 @@
1
- import { useState } from 'react';
2
- import { _StyleTransferModule } from '../../native/RnExecutorchModules';
1
+ import { ResourceSource } from '../../types/common';
3
2
  import { useModule } from '../useModule';
3
+ import { StyleTransferModule } from '../../modules/computer_vision/StyleTransferModule';
4
4
 
5
5
  interface Props {
6
- modelSource: string | number;
6
+ modelSource: ResourceSource;
7
+ preventLoad?: boolean;
7
8
  }
8
9
 
9
- export const useStyleTransfer = ({
10
- modelSource,
11
- }: Props): {
12
- error: string | null;
13
- isReady: boolean;
14
- isGenerating: boolean;
15
- downloadProgress: number;
16
- forward: (input: string) => Promise<string>;
17
- } => {
18
- const [module, _] = useState(() => new _StyleTransferModule());
19
- const {
20
- error,
21
- isReady,
22
- isGenerating,
23
- downloadProgress,
24
- forwardImage: forward,
25
- } = useModule({
26
- modelSource,
27
- module,
10
+ export const useStyleTransfer = ({ modelSource, preventLoad = false }: Props) =>
11
+ useModule({
12
+ module: StyleTransferModule,
13
+ loadArgs: [modelSource],
14
+ preventLoad,
28
15
  });
29
-
30
- return { error, isReady, isGenerating, downloadProgress, forward };
31
- };
@@ -1,4 +1,4 @@
1
- import { useEffect, useState } from 'react';
1
+ import { useEffect, useMemo, useState } from 'react';
2
2
  import { ResourceSource } from '../../types/common';
3
3
  import { OCRDetection, OCRLanguage } from '../../types/ocr';
4
4
  import { VerticalOCRController } from '../../controllers/VerticalOCRController';
@@ -16,6 +16,7 @@ export const useVerticalOCR = ({
16
16
  recognizerSources,
17
17
  language = 'en',
18
18
  independentCharacters = false,
19
+ preventLoad = false,
19
20
  }: {
20
21
  detectorSources: {
21
22
  detectorLarge: ResourceSource;
@@ -27,20 +28,22 @@ export const useVerticalOCR = ({
27
28
  };
28
29
  language?: OCRLanguage;
29
30
  independentCharacters?: boolean;
31
+ preventLoad?: boolean;
30
32
  }): OCRModule => {
31
33
  const [error, setError] = useState<string | null>(null);
32
34
  const [isReady, setIsReady] = useState(false);
33
35
  const [isGenerating, setIsGenerating] = useState(false);
34
36
  const [downloadProgress, setDownloadProgress] = useState(0);
35
37
 
36
- const [model, _] = useState(
38
+ const model = useMemo(
37
39
  () =>
38
40
  new VerticalOCRController({
39
41
  modelDownloadProgressCallback: setDownloadProgress,
40
42
  isReadyCallback: setIsReady,
41
43
  isGeneratingCallback: setIsGenerating,
42
44
  errorCallback: setError,
43
- })
45
+ }),
46
+ []
44
47
  );
45
48
 
46
49
  useEffect(() => {
@@ -53,15 +56,19 @@ export const useVerticalOCR = ({
53
56
  );
54
57
  };
55
58
 
56
- loadModel();
59
+ if (!preventLoad) {
60
+ loadModel();
61
+ }
57
62
  // eslint-disable-next-line react-hooks/exhaustive-deps
58
63
  }, [
64
+ model,
59
65
  // eslint-disable-next-line react-hooks/exhaustive-deps
60
66
  JSON.stringify(detectorSources),
61
67
  language,
62
68
  independentCharacters,
63
69
  // eslint-disable-next-line react-hooks/exhaustive-deps
64
70
  JSON.stringify(recognizerSources),
71
+ preventLoad,
65
72
  ]);
66
73
 
67
74
  return {
@@ -1,58 +1,18 @@
1
- import { useState } from 'react';
2
- import { _ETModule } from '../../native/RnExecutorchModules';
1
+ import { ExecutorchModule } from '../../modules/general/ExecutorchModule';
2
+ import { ResourceSource } from '../../types/common';
3
3
  import { useModule } from '../useModule';
4
- import { ETInput } from '../../types/common';
5
- import { getError } from '../../Error';
6
4
 
7
5
  interface Props {
8
- modelSource: string | number;
6
+ modelSource: ResourceSource;
7
+ preventLoad?: boolean;
9
8
  }
10
9
 
11
10
  export const useExecutorchModule = ({
12
11
  modelSource,
13
- }: Props): {
14
- error: string | null;
15
- isReady: boolean;
16
- isGenerating: boolean;
17
- downloadProgress: number;
18
- forward: (
19
- input: ETInput | ETInput[],
20
- shape: number[] | number[][]
21
- ) => Promise<number[][]>;
22
- loadMethod: (methodName: string) => Promise<void>;
23
- loadForward: () => Promise<void>;
24
- } => {
25
- const [module] = useState(() => new _ETModule());
26
- const {
27
- error,
28
- isReady,
29
- isGenerating,
30
- downloadProgress,
31
- forwardETInput: forward,
32
- } = useModule({
33
- modelSource,
34
- module,
12
+ preventLoad = false,
13
+ }: Props) =>
14
+ useModule({
15
+ module: ExecutorchModule,
16
+ loadArgs: [modelSource],
17
+ preventLoad,
35
18
  });
36
-
37
- const loadMethod = async (methodName: string) => {
38
- try {
39
- await module.loadMethod(methodName);
40
- } catch (e) {
41
- throw new Error(getError(e));
42
- }
43
- };
44
-
45
- const loadForward = async () => {
46
- await loadMethod('forward');
47
- };
48
-
49
- return {
50
- error,
51
- isReady,
52
- isGenerating,
53
- downloadProgress,
54
- forward,
55
- loadMethod,
56
- loadForward,
57
- };
58
- };
@@ -1,126 +1,109 @@
1
- import { useCallback, useEffect, useRef, useState } from 'react';
2
- import { EventSubscription } from 'react-native';
3
- import { LLM } from '../../native/RnExecutorchModules';
4
- import { fetchResource } from '../../utils/fetchResource';
5
- import { ResourceSource, Model, MessageType } from '../../types/common';
1
+ import { useCallback, useEffect, useMemo, useState } from 'react';
2
+ import { ResourceSource } from '../../types/common';
6
3
  import {
7
- DEFAULT_CONTEXT_WINDOW_LENGTH,
8
- DEFAULT_MESSAGE_HISTORY,
9
- DEFAULT_SYSTEM_PROMPT,
10
- EOT_TOKEN,
11
- } from '../../constants/llamaDefaults';
12
-
13
- const interrupt = () => {
14
- LLM.interrupt();
15
- };
4
+ ChatConfig,
5
+ LLMTool,
6
+ LLMType,
7
+ Message,
8
+ ToolsConfig,
9
+ } from '../../types/llm';
10
+ import { LLMController } from '../../controllers/LLMController';
16
11
 
12
+ /*
13
+ Hook version of LLMController
14
+ */
17
15
  export const useLLM = ({
18
16
  modelSource,
19
17
  tokenizerSource,
20
- systemPrompt = DEFAULT_SYSTEM_PROMPT,
21
- messageHistory = DEFAULT_MESSAGE_HISTORY,
22
- contextWindowLength = DEFAULT_CONTEXT_WINDOW_LENGTH,
18
+ tokenizerConfigSource,
19
+ preventLoad = false,
23
20
  }: {
24
21
  modelSource: ResourceSource;
25
22
  tokenizerSource: ResourceSource;
26
- systemPrompt?: string;
27
- messageHistory?: MessageType[];
28
- contextWindowLength?: number;
29
- }): Model => {
30
- const [error, setError] = useState<string | null>(null);
23
+ tokenizerConfigSource: ResourceSource;
24
+ preventLoad?: boolean;
25
+ }): LLMType => {
26
+ const [response, setResponse] = useState('');
27
+ const [messageHistory, setMessageHistory] = useState<Message[]>([]);
31
28
  const [isReady, setIsReady] = useState(false);
32
29
  const [isGenerating, setIsGenerating] = useState(false);
33
- const [response, setResponse] = useState('');
34
30
  const [downloadProgress, setDownloadProgress] = useState(0);
35
- const tokenGeneratedListener = useRef<null | EventSubscription>(null);
36
-
37
- useEffect(() => {
38
- const loadModel = async () => {
39
- try {
40
- setIsReady(false);
31
+ const [error, setError] = useState<any>(null);
41
32
 
42
- const tokenizerFileUri = await fetchResource(tokenizerSource);
43
- const modelFileUri = await fetchResource(
44
- modelSource,
45
- setDownloadProgress
46
- );
47
-
48
- await LLM.loadLLM(
49
- modelFileUri,
50
- tokenizerFileUri,
51
- systemPrompt,
52
- messageHistory,
53
- contextWindowLength
54
- );
33
+ const model = useMemo(
34
+ () =>
35
+ new LLMController({
36
+ responseCallback: setResponse,
37
+ messageHistoryCallback: setMessageHistory,
38
+ isReadyCallback: setIsReady,
39
+ isGeneratingCallback: setIsGenerating,
40
+ onDownloadProgressCallback: setDownloadProgress,
41
+ }),
42
+ []
43
+ );
55
44
 
56
- setIsReady(true);
45
+ useEffect(() => {
46
+ setDownloadProgress(0);
47
+ setError(null);
57
48
 
58
- tokenGeneratedListener.current = LLM.onToken(
59
- (data: string | undefined) => {
60
- if (!data) {
61
- return;
62
- }
63
- if (data !== EOT_TOKEN) {
64
- setResponse((prevResponse) => prevResponse + data);
65
- } else {
66
- setIsGenerating(false);
67
- }
68
- }
69
- );
70
- } catch (err) {
71
- const message = (err as Error).message;
72
- setIsReady(false);
73
- setError(message);
74
- } finally {
75
- setDownloadProgress(0);
49
+ if (!preventLoad) {
50
+ try {
51
+ (async () => {
52
+ await model.load({
53
+ modelSource,
54
+ tokenizerSource,
55
+ tokenizerConfigSource,
56
+ });
57
+ })();
58
+ } catch (e) {
59
+ setError(e);
76
60
  }
77
- };
78
-
79
- loadModel();
61
+ }
80
62
 
81
63
  return () => {
82
- tokenGeneratedListener.current?.remove();
83
- tokenGeneratedListener.current = null;
84
- LLM.deleteModule();
64
+ model.delete();
85
65
  };
86
- }, [
87
- modelSource,
88
- tokenizerSource,
89
- systemPrompt,
90
- messageHistory,
91
- contextWindowLength,
92
- ]);
66
+ }, [modelSource, tokenizerSource, tokenizerConfigSource, preventLoad, model]);
67
+
68
+ // memoization of returned functions
69
+ const configure = useCallback(
70
+ ({
71
+ chatConfig,
72
+ toolsConfig,
73
+ }: {
74
+ chatConfig?: Partial<ChatConfig>;
75
+ toolsConfig?: ToolsConfig;
76
+ }) => model.configure({ chatConfig, toolsConfig }),
77
+ [model]
78
+ );
93
79
 
94
80
  const generate = useCallback(
95
- async (input: string): Promise<void> => {
96
- if (!isReady) {
97
- throw new Error('Model is still loading');
98
- }
99
- if (error) {
100
- throw new Error(error);
101
- }
81
+ (messages: Message[], tools?: LLMTool[]) => model.generate(messages, tools),
82
+ [model]
83
+ );
102
84
 
103
- try {
104
- setResponse('');
105
- setIsGenerating(true);
106
- await LLM.runInference(input);
107
- } catch (err) {
108
- setIsGenerating(false);
109
- throw new Error((err as Error).message);
110
- }
111
- },
112
- [isReady, error]
85
+ const sendMessage = useCallback(
86
+ (message: string) => model.sendMessage(message),
87
+ [model]
113
88
  );
114
89
 
90
+ const deleteMessage = useCallback(
91
+ (index: number) => model.deleteMessage(index),
92
+ [model]
93
+ );
94
+ const interrupt = useCallback(() => model.interrupt(), [model]);
95
+
115
96
  return {
116
- generate,
117
- error,
97
+ messageHistory,
98
+ response,
118
99
  isReady,
119
100
  isGenerating,
120
- isModelReady: isReady,
121
- isModelGenerating: isGenerating,
122
- response,
123
101
  downloadProgress,
124
- interrupt,
102
+ error,
103
+ configure: configure,
104
+ generate: generate,
105
+ sendMessage: sendMessage,
106
+ deleteMessage: deleteMessage,
107
+ interrupt: interrupt,
125
108
  };
126
109
  };