Skip to content

Commit 3ebcb6e

Browse files
feat: make necessary methods and classes public
1 parent edb1306 commit 3ebcb6e

8 files changed

Lines changed: 33 additions & 0 deletions

File tree

.cspell-wordlist.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ microcontrollers
1919
notimestamps
2020
seqs
2121
smollm
22+
llms
2223
qwen
2324
XNNPACK
2425
EFFICIENTNET

packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,10 @@ template <typename Model> class ModelHostObject : public JsiHostObject {
112112
synchronousHostFunction<&Model::getPromptTokenCount>,
113113
"getPromptTokenCount"));
114114

115+
addFunctions(JSI_EXPORT_FUNCTION(
116+
ModelHostObject<Model>,
117+
synchronousHostFunction<&Model::countTextTokens>, "countTextTokens"));
118+
115119
addFunctions(
116120
JSI_EXPORT_FUNCTION(ModelHostObject<Model>,
117121
synchronousHostFunction<&Model::setCountInterval>,

packages/react-native-executorch/common/rnexecutorch/models/llm/LLM.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,15 @@ size_t LLM::getPromptTokenCount() const noexcept {
8686
return runner->stats_.num_prompt_tokens;
8787
}
8888

89+
size_t LLM::countTextTokens(std::string text) const {
90+
if (!runner || !runner->is_loaded()) {
91+
throw RnExecutorchError(
92+
RnExecutorchErrorCode::ModuleNotLoaded,
93+
"Can't count tokens from a model that's not loaded");
94+
}
95+
return runner->count_text_tokens(text);
96+
}
97+
8998
size_t LLM::getMemoryLowerBound() const noexcept {
9099
return memorySizeLowerBound;
91100
}

packages/react-native-executorch/common/rnexecutorch/models/llm/LLM.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class LLM : public BaseModel {
2525
void unload() noexcept;
2626
size_t getGeneratedTokenCount() const noexcept;
2727
size_t getPromptTokenCount() const noexcept;
28+
size_t countTextTokens(std::string text) const;
2829
size_t getMemoryLowerBound() const noexcept;
2930
void setCountInterval(size_t countInterval);
3031
void setTemperature(float temperature);

packages/react-native-executorch/common/runner/runner.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,4 +368,17 @@ int32_t Runner::resolve_max_new_tokens(int32_t num_prompt_tokens,
368368
return std::max(0, result);
369369
}
370370

371+
int32_t Runner::count_text_tokens(const std::string &text) const {
372+
auto encodeResult =
373+
tokenizer_->encode(text, numOfAddedBoSTokens, numOfAddedEoSTokens);
374+
375+
if (!encodeResult.ok()) {
376+
throw rnexecutorch::RnExecutorchError(
377+
rnexecutorch::RnExecutorchErrorCode::TokenizerError,
378+
"Encoding failed during token count check.");
379+
}
380+
381+
return static_cast<int32_t>(encodeResult.get().size());
382+
}
383+
371384
} // namespace example

packages/react-native-executorch/common/runner/runner.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ class Runner : public llm::IRunner {
5050
void set_time_interval(size_t time_interval);
5151
void set_temperature(float temperature) noexcept;
5252
void set_topp(float topp) noexcept;
53+
int32_t count_text_tokens(const std::string &text) const;
5354

5455
void stop() override;
5556
void reset() override;

packages/react-native-executorch/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ export * from './modules/general/ExecutorchModule';
114114
// utils
115115
export * from './utils/ResourceFetcher';
116116
export * from './utils/llm';
117+
export * from './utils/llms/context_strategy';
117118

118119
// types
119120
export * from './types/objectDetection';
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export { MessageCountContextStrategy } from './MessageCountContextStrategy';
2+
export { SlidingWindowContextStrategy } from './SlidingWindowContextStrategy';
3+
export { NaiveContextStrategy } from './NaiveContextStrategy';

0 commit comments

Comments
 (0)