diff --git a/app/src/main/assets/hints/find_ai_model.md b/app/src/main/assets/hints/find_ai_model.md new file mode 100644 index 0000000..3a29196 --- /dev/null +++ b/app/src/main/assets/hints/find_ai_model.md @@ -0,0 +1,87 @@ +# How to Scan for AI Models +# TODO REWRITE + +This guide explains how to use the **Scan** feature to discover and add AI models to your app. + +## How Scanning Works + +The scan feature searches for available AI models on your device or network. + +> **Note:** Results depend on your API key permissions. + +### Key Points + +- Only public models are shown by default +- Private models require additional setup +- Try again if no models are found + +## Why Some Models Are Missing + +Some models may not appear in the scan results due to: + +| Reason | Description | Icon | +|--------|-------------|------| +| Restricted access | Model requires special permissions | 🔒 | +| Not suitable | Model type not supported | ⚠️ | +| Text only | Only text-based models are supported | ✓ | + +### Model Tiers + +We recommend these tiers for optimal performance: + +- **Nano** - Fastest, for simple tasks +- **Mini** - Balanced speed and capability +- **Small** - Good for most tasks +- **Medium** - More capable, slower +- **Large** - Most capable, paid only + +## Tips for Success + +1. **Verify your API key** is active and has correct permissions +2. **Select the correct organization** from your account +3. **Type model names manually** if scanning doesn't find them +4. **Prefer instruct or chat models** for text generation + +```kotlin +// Example: Manual model addition +val model = Model( + name = "llama3.2", + type = ModelType.TEXT, + provider = "ollama" +) +``` + +## Visual Guide + +### Step 1: Initiate Scan + +Click the scan button to search for available models. + +### Step 2: Select Model Type + +Choose between different model categories: + +- **Text Chat** - For conversational AI +- **Instruct** - For direct instructions +- **Complete** - For text completion + +### Step 3: Add & Validate + +Add the selected model and validate it works correctly. + +--- + +## Can't Find Your Model? + +If your model doesn't appear in the scan results: + +1. Check if the model is running locally or accessible via API +2. Verify network connectivity +3. Try adding it manually by entering the model details + +> **Pro Tip:** You can always add models manually by clicking the "+" button in the models screen. + +--- + +*Last updated: 2024-01-15* +*For more help, visit our documentation website.* diff --git a/app/src/main/java/eu/gaudian/translator/utils/TranslationService.kt b/app/src/main/java/eu/gaudian/translator/utils/TranslationService.kt index 5741de6..a2c87a8 100644 --- a/app/src/main/java/eu/gaudian/translator/utils/TranslationService.kt +++ b/app/src/main/java/eu/gaudian/translator/utils/TranslationService.kt @@ -117,6 +117,7 @@ class TranslationService(private val context: Context) { } suspend fun translateSentence(sentence: String): Result = withContext(Dispatchers.IO) { + val statusMessageService = StatusMessageService val additionalInstructions = settingsRepository.customPromptTranslation.flow.first() val selectedSource = languageRepository.loadSelectedSourceLanguage().first() val sourceLangName = selectedSource?.englishName ?: "Auto" diff --git a/app/src/main/java/eu/gaudian/translator/viewmodel/TranslationViewModel.kt b/app/src/main/java/eu/gaudian/translator/viewmodel/TranslationViewModel.kt index 9c72af1..01ab571 100644 --- a/app/src/main/java/eu/gaudian/translator/viewmodel/TranslationViewModel.kt +++ b/app/src/main/java/eu/gaudian/translator/viewmodel/TranslationViewModel.kt @@ -15,6 +15,7 @@ import eu.gaudian.translator.model.repository.dataStore import eu.gaudian.translator.model.repository.loadObjectList import eu.gaudian.translator.model.repository.saveObjectList import eu.gaudian.translator.utils.Log +import eu.gaudian.translator.utils.StatusMessageService import eu.gaudian.translator.utils.TextToSpeechHelper import eu.gaudian.translator.utils.TranslationService import kotlinx.coroutines.flow.MutableStateFlow @@ -31,6 +32,9 @@ class TranslationViewModel @Inject constructor( val languageRepository: LanguageRepository ) : AndroidViewModel(application) { + private val statusMessageService = StatusMessageService + + // For back/forward navigation of history in the UI (like editors) private val _historyCursor = MutableStateFlow(-1) @@ -112,11 +116,13 @@ class TranslationViewModel @Inject constructor( fun translateSentence(sentence: String) { val sentenceToTranslate = sentence.ifEmpty { _inputText.value } if (sentenceToTranslate.isBlank()) { + statusMessageService.showSimpleMessage("Please enter a sentence to translate.") return } if (selectedTranslationModel.value == null) { Log.e("TranslationViewModel", "Cannot translate because no model is selected.") + statusMessageService.showSimpleMessage("Cannot translate because no model is selected.") return } @@ -151,6 +157,7 @@ class TranslationViewModel @Inject constructor( } .onFailure { exception -> Log.e("TranslationViewModel", "Translation failed: ${exception.message}") + statusMessageService.showErrorMessage("Translation failed: ${exception.message}") } _isTranslating.value = false