AI-Передбачувальний ввід даних для мобільних форм
Передбачувальний ввід—це не автокоректор iOS/Android. Це контекстне передбачення значень полів на основі історії користувача, поточного контексту та паттернів. Користувач починає вводити ім'я одержувача—додаток вже знає, що у п'ятницю ввечері він зазвичай переводить одній і тій же людині.
Джерела передбачення
Історія користувача. Найпотужніший сигнал. Частих одержувачів, типових сум за днями тижня, повторювальні назви платежів—усі паттерни витягнені з локальної або серверної історії.
Контекст сесії. Якщо користувач прийшов з push-сповіщення "пора оплатити комунальні", перше поле форми платежу розумно попередньо заповнити реквізитами управляючої компанії.
LLM-генерація на основі часткового вводу. Користувач набрав "за аренд"—модель передбачує "за аренду офісу, листопад 2025". Реалізується через streaming completions малою, швидкою моделлю (gpt-4o-mini) з низькою затримкою.
Реалізація передбачення з debounce
Запит до LLM при кожному натиску клавіші—розточлива. Стандартний підхід: debounce 300–500ms, запит відправляється тільки коли користувач робить паузу.
// iOS — Swift, SwiftUI
class PredictiveInputViewModel: ObservableObject {
@Published var suggestions: [String] = []
private var debounceTask: Task<Void, Never>?
func onTextChange(_ text: String, fieldType: FormFieldType, context: FormContext) {
debounceTask?.cancel()
guard text.count >= 3 else { suggestions = []; return }
debounceTask = Task {
try? await Task.sleep(nanoseconds: 400_000_000) // 400ms debounce
guard !Task.isCancelled else { return }
let predictions = await fetchPredictions(text: text, fieldType: fieldType, context: context)
await MainActor.run { self.suggestions = predictions }
}
}
private func fetchPredictions(text: String, fieldType: FormFieldType, context: FormContext) async -> [String] {
// Спочатку шукаємо в локальній історії (швидко, без мережі)
let localMatches = userHistory.search(query: text, fieldType: fieldType)
if localMatches.count >= 3 { return Array(localMatches.prefix(3)) }
// Якщо недостатньо—запит до AI
return await aiSuggestionService.predict(text: text, fieldType: fieldType, context: context)
}
}
Локальний кеш vs серверні передбачення
Простих передбачення (часто використовувані одержувачі, типові суми)—зберігайте локально, не запитуйте мережу. SQLite + FTS5 для швидкого пошуку в історії дає затримку < 5ms.
Передбачення LLM виправдані тільки для складних текстових полів (призначення платежу, адреса, опис). Локальний пошук там не дасть якісних результатів.
UX передбачення
Передбачення показуються як chip-підказки під полем або inline-dropdown—не в системній suggest bar (контролюється ОС, не додатком). Торкання підказки миттєво заповнює поле без анімації. Критично: передбачення повинні працювати на повільних з'єднаннях, тому локальний кеш—не опція, а необхідність.
Орієнтири за часом
Передбачення з локальної історії—2–3 дні. Гібридна система з LLM для текстових полів та debounce—3–5 днів.







