Реализация AI-автозаполнения форм на сайте

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Реализация AI-автозаполнения форм на сайте
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Реализация AI-автозаполнения форм на сайте

Автозаполнение форм через AI — это не браузерный autofill и не просто подсказки на основе истории. Речь о системе, которая анализирует контекст пользователя, данные из связанных источников и предлагает релевантные значения для полей в реальном времени.

Сценарии применения

B2B-порталы: при создании заявки на услугу AI заполняет реквизиты компании на основе ИНН (интеграция с ЕГРЮЛ/DADATA), предлагает типовые описания из предыдущих заявок, подтягивает контактное лицо из CRM.

Медицинские формы: автозаполнение диагнозов по МКБ-10 при вводе симптомов, подстановка схем лечения из протоколов. Требует строгой валидации и логирования.

Регистрация и профиль: предложение должности на основе введённой компании, автоматическое определение часового пояса по геолокации, подсказки для адресного поля.

Формы заказа: автозаполнение технических характеристик товара по артикулу, расчёт стоимости доставки на лету.

Архитектура

Компонент работает в двух режимах:

Триггер по полю — при уходе фокуса или изменении ключевого поля (например, ИНН) отправляется запрос к API, ответ заполняет зависимые поля.

Стриминговые подсказки — при наборе текста в поле "описание" или "комментарий" AI предлагает продолжение, как в IDE с Copilot. Реализуется через SSE или WebSocket.

// React-компонент с AI-подсказками
import { useState, useCallback, useRef } from "react";
import { useDebounce } from "@/hooks/useDebounce";

interface AutofillSuggestion {
  field: string;
  value: string;
  confidence: number;
}

function useAIAutofill(formData: Record<string, string>) {
  const [suggestions, setSuggestions] = useState<AutofillSuggestion[]>([]);
  const debouncedData = useDebounce(formData, 500);

  const fetchSuggestions = useCallback(async () => {
    const response = await fetch("/api/ai/autofill", {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({ fields: debouncedData }),
    });
    const data = await response.json();
    setSuggestions(data.suggestions);
  }, [debouncedData]);

  return { suggestions, fetchSuggestions };
}

Серверная часть: интеграция с LLM

from openai import OpenAI
import json

client = OpenAI()

FORM_CONTEXT = """Ты помощник для заполнения формы заявки на услуги IT-компании.
На основе уже заполненных полей предложи значения для незаполненных.
Верни JSON с полями: suggestions (массив объектов {field, value, confidence}).
Не придумывай данные — только логические выводы из имеющегося."""

def get_autofill_suggestions(filled_fields: dict, empty_fields: list[str]) -> list[dict]:
    user_prompt = f"""
Заполненные поля: {json.dumps(filled_fields, ensure_ascii=False)}
Пустые поля для заполнения: {empty_fields}
Предложи значения для пустых полей на основе заполненных.
"""
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": FORM_CONTEXT},
            {"role": "user", "content": user_prompt}
        ],
        response_format={"type": "json_object"},
        temperature=0.1
    )

    result = json.loads(response.choices[0].message.content)
    return result.get("suggestions", [])

Интеграция с внешними данными

Для реквизитов компании по ИНН — DADATA API:

import requests

def get_company_by_inn(inn: str) -> dict:
    url = "https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/party"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Token {DADATA_API_KEY}"
    }
    response = requests.post(url, json={"query": inn}, headers=headers)
    suggestions = response.json().get("suggestions", [])

    if not suggestions:
        return {}

    data = suggestions[0]["data"]
    return {
        "company_name": suggestions[0]["value"],
        "kpp": data.get("kpp", ""),
        "address": data.get("address", {}).get("value", ""),
        "director": data.get("management", {}).get("name", ""),
        "ogrn": data.get("ogrn", "")
    }

UX автозаполнения

Предложенные значения нужно показывать ненавязчиво. Три паттерна:

Ghost text — значение показывается бледным цветом прямо в поле. Нажатие Tab принимает подсказку. Работает для текстовых полей.

Inline badge — рядом с полем появляется кнопка "Заполнить автоматически" с предложенным значением. Пользователь подтверждает одним кликом.

Панель предложений — для группы полей (реквизиты компании, адрес доставки) показывается блок с набором значений и кнопкой "Применить всё".

Важно: всегда разрешать пользователю видеть и редактировать подставленные значения. AI ошибается, особенно в специфических случаях.

Валидация предложений

Не доверяйте LLM слепо. Для каждого поля определите правила валидации:

  • Email: regex + MX-запрос
  • ИНН: контрольная сумма
  • Телефон: нормализация через libphonenumber
  • Дата: проверка допустимого диапазона

Предложение с confidence < 0.7 лучше не подставлять автоматически, а только показывать как вариант.

Сроки

Базовое автозаполнение через LLM для 3–5 полей — 3–4 дня. Интеграция с DADATA + ghost text UX — плюс 2–3 дня. Стриминговые подсказки для текстовых полей — плюс 2 дня.