Реализация AI-Copilot для заполнения форм в мобильном приложении
Длинные формы в мобильных приложениях — основная точка потери пользователей. Анкета на 20 полей при ипотечной заявке или форма медицинского страхования с терминологией, непонятной неспециалисту — пользователь просто закрывает приложение. AI-Copilot для заполнения форм не упрощает форму, а помогает её заполнить: объясняет поля, предлагает значения, автозаполняет из контекста.
Три режима работы Copilot с формами
Объяснение полей. Пользователь нажимает на поле «ИНН» и спрашивает, где его найти. Copilot даёт контекстный ответ с учётом того, что пользователь — физическое лицо в приложении российского банка, а не юрлицо.
Автозаполнение из естественного языка. Пользователь голосом или текстом: «хочу перевести пять тысяч рублей Ивану Петрову за ноябрь» — Copilot заполняет поля суммы, получателя и назначения платежа.
Валидация с объяснением. Вместо «Поле обязательно» — «Для платежа за рубеж нужен БИК банка-получателя, он указан в реквизитах в банковском приложении получателя».
Реализация автозаполнения через LLM Structured Output
LLM возвращает заполненные поля формы в виде JSON со строгой схемой — через Structured Outputs (OpenAI) или JSON mode:
// Android — Kotlin
data class PaymentFormData(
val amount: Double?,
val recipientName: String?,
val recipientPhone: String?,
val purpose: String?,
val scheduledDate: String? // ISO8601 или null
)
suspend fun parseUserInputToForm(userMessage: String, formContext: String): PaymentFormData {
val systemPrompt = """
Ты помощник по заполнению формы платежа.
Контекст формы: $formContext
Извлеки данные из сообщения пользователя и верни JSON.
Поля, о которых не сказано — оставь null.
""".trimIndent()
val response = openAIClient.chatCompletions.create(
model = "gpt-4o-mini",
messages = listOf(
Message(role = "system", content = systemPrompt),
Message(role = "user", content = userMessage)
),
responseFormat = ResponseFormat(type = "json_object"),
temperature = 0.0
)
return gson.fromJson(response.choices[0].message.content, PaymentFormData::class.java)
}
После парсинга заполняем поля программно и показываем пользователю превью для подтверждения — Copilot не отправляет форму самостоятельно.
Интеграция с данными пользователя
Copilot работает значительно лучше, когда знает контекст: список сохранённых получателей, историю платежей, профиль пользователя. Этот контекст инжектируется в системный промпт:
// iOS — Swift
func buildFormCopilotContext(user: User, formType: FormType) -> String {
var context = "Форма: \(formType.displayName).\n"
if formType == .payment {
let recentRecipients = user.recentRecipients.prefix(5)
.map { "\($0.name): \($0.phone)" }
.joined(separator: ", ")
context += "Частые получатели: \(recentRecipients).\n"
}
return context
}
Голосовой ввод как триггер
На мобильных устройствах голосовой ввод снимает главное трение при заполнении форм. Пользователь не набирает «Иванов Иван Иванович», а просто говорит. Связка: SpeechRecognizer (iOS Speech Framework / Android SpeechRecognizer API) → транскрипция → LLM extraction → заполнение полей.
Ориентиры по срокам
Базовое автозаполнение из текста через LLM + Structured Output — 3–5 дней. Полный Copilot с контекстом пользователя, голосовым вводом и валидацией с объяснениями — 1–2 недели.







