From bc44ef67047f80e3c4cd92db41441f21279972ba Mon Sep 17 00:00:00 2001 From: Mengwei Liu Date: Tue, 24 Jun 2025 21:39:24 -0700 Subject: [PATCH 1/2] [llm] Route generate_from_pos() JNI API to native llm runner API --- extension/android/jni/jni_layer_llama.cpp | 30 ++++++++++++++++------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/extension/android/jni/jni_layer_llama.cpp b/extension/android/jni/jni_layer_llama.cpp index ad1c77a92b9..06a81eb078f 100644 --- a/extension/android/jni/jni_layer_llama.cpp +++ b/extension/android/jni/jni_layer_llama.cpp @@ -297,16 +297,28 @@ class ExecuTorchLlmJni : public facebook::jni::HybridClass { jlong start_pos, facebook::jni::alias_ref callback, jboolean echo) { - if (model_type_category_ != MODEL_TYPE_CATEGORY_MULTIMODAL) { - return static_cast(Error::NotSupported); + if (model_type_category_ == MODEL_TYPE_CATEGORY_MULTIMODAL) { + + return static_cast(multi_modal_runner_->generate_from_pos( + prompt->toStdString(), + seq_len, + start_pos, + [callback](const std::string& result) { callback->onResult(result); }, + [callback](const llm::Stats& stats) { callback->onStats(stats); }, + echo)); + } else if (model_type_category_ == MODEL_TYPE_CATEGORY_LLM) { + executorch::extension::llm::GenerationConfig config{ + .echo = static_cast(echo), + .seq_len = seq_len, + .temperature = temperature_, + }; + runner_->generate_from_pos( + prompt->toStdString(), + start_pos, + config, + [callback](std::string result) { callback->onResult(result); }, + [callback](const llm::Stats& stats) { callback->onStats(stats); }); } - return static_cast(multi_modal_runner_->generate_from_pos( - prompt->toStdString(), - seq_len, - start_pos, - [callback](const std::string& result) { callback->onResult(result); }, - [callback](const llm::Stats& stats) { callback->onStats(stats); }, - echo)); } void stop() { From f311962db142d3a2df21788e77bb76e9ea8ca436 Mon Sep 17 00:00:00 2001 From: Mengwei Liu Date: Thu, 26 Jun 2025 10:58:49 -0700 Subject: [PATCH 2/2] Lint --- extension/android/jni/jni_layer_llama.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/extension/android/jni/jni_layer_llama.cpp b/extension/android/jni/jni_layer_llama.cpp index 06a81eb078f..12a04ea7a13 100644 --- a/extension/android/jni/jni_layer_llama.cpp +++ b/extension/android/jni/jni_layer_llama.cpp @@ -298,7 +298,6 @@ class ExecuTorchLlmJni : public facebook::jni::HybridClass { facebook::jni::alias_ref callback, jboolean echo) { if (model_type_category_ == MODEL_TYPE_CATEGORY_MULTIMODAL) { - return static_cast(multi_modal_runner_->generate_from_pos( prompt->toStdString(), seq_len,