0Pricing
AI Agents · Урок

Создание надёжного агента для заполнения форм

Практический пример: войдите на портал, заполните многостраничную форму и проверьте отправленные данные

«Создание надёжного агента для заполнения форм» — бесплатный урок AI Agents на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Реалистичный проект

Агент «заполните эту многостраничную форму». Мы объединим Playwright, планирование с помощью LLM, повторные попытки и резервный вариант с визуальным анализом.

Архитектура

  1. LLM читает требования к полям из спецификации JSON
  2. Playwright открывает форму
  3. Для каждого поля найдите селектор и значение, заполните поле и проверьте его
  4. Если поле трудно найти через DOM, используйте визуальный анализ как резервный вариант
  5. Отправьте форму и проверьте успешность операции

Step 1: Define the Task

TASK = {
    'url': 'https://example.com/apply',
    'login': {'user': 'alice', 'pass': '...'},
    'fields': {
        'first_name': 'Alice',
        'last_name': 'Smith',
        'email': 'alice@example.com',
        'role': 'Senior Engineer'
    }
}

Step 2: Login

page.goto(TASK['url'])
if page.locator('input[name="username"]').is_visible():
    page.fill('input[name="username"]', TASK['login']['user'])
    page.fill('input[name="password"]', TASK['login']['pass'])
    page.click('button[type="submit"]')
    page.wait_for_load_state('networkidle')

Step 3: Field Filler

def fill_field(page, field_name, value):
    for selector in [
        f'input[name="{field_name}"]',
        f'input[aria-label="{field_name}"]',
        f'input[placeholder*="{field_name}"]',
        f'label:has-text("{field_name}") + input'
    ]:
        if page.locator(selector).count() > 0:
            page.fill(selector, value)
            return True
    return False

# --- demo ---
class _FakeLocator:
    def __init__(self, found):
        self._found = found
    def count(self):
        return 1 if self._found else 0

class _FakePage:
    """Only the 3rd selector (placeholder) matches, to show the fallback loop."""
    def locator(self, selector):
        return _FakeLocator(found='placeholder*=' in selector)
    def fill(self, selector, value):
        print(f'Filled via selector: {selector} -> {value!r}')

page = _FakePage()
ok = fill_field(page, 'email', 'alice@example.com')
print(f'fill_field succeeded: {ok}')

Step 4: Локатор с поддержкой LLM

Если стандартные селекторы не сработали, попросите LLM определить поле:

def ask_llm_for_selector(html, field_name):
    prompt = f'Find the input element for "{field_name}" in this HTML and return a CSS selector. HTML:\n{html[:5000]}'
    return llm.invoke(prompt).content.strip()

Step 5: Резервный вариант с визуальным анализом

Если даже LLM не может найти селектор, сделайте снимок экрана и используйте визуальный анализ:

if not filled:
    screenshot = page.screenshot()
    coordinate = vision_llm_locate(screenshot, field_name)
    page.mouse.click(coordinate.x, coordinate.y)
    page.keyboard.type(value)

Step 6: Проверяйте каждый шаг

После заполнения прочитайте значение обратно:

actual = page.input_value(selector)
assert actual == expected_value, f'Expected {expected_value}, got {actual}'

Step 7: Submit and Verify

page.click('button[type="submit"]')
page.wait_for_load_state('networkidle')
if page.locator('text=Thank you').count() == 0:
    raise SubmissionFailed('Success page not detected')

Step 8: Логика повторных попыток

Формы иногда дают сбои. Повторяйте попытку с проверками идемпотентности:

@retry(stop=stop_after_attempt(3), wait=wait_fixed(2))
def fill_and_submit(page, task):
    ...

Step 9: Обработка капчи

Если в форме есть reCAPTCHA, используйте сервис решения капч (2Captcha, Anti-Captcha) — либо корректно завершите операцию с ошибкой и попросите человека вмешаться.

Step 10: Журналирование и воспроизведение

Сохраняйте каждое действие и снимок экрана. Если что-то не сработает, вы сможете воспроизвести трассировку для отладки:

context.tracing.stop(path=f'trace-{task_id}.zip')
# View with: playwright show-trace trace-abc.zip

Особенности параллельного выполнения

Чтобы параллельно обрабатывать формы многих пользователей, создавайте по одному контексту браузера на задачу. Ограничивайте количество параллельных операций, чтобы не перегрузить целевой сайт.

Уважайте целевой ресурс

  • Делайте паузы между действиями (люди не печатают со скоростью 200 знаков в секунду)
  • Соблюдайте robots.txt и условия использования
  • Используйте меняющиеся IP-адреса только там, где это разрешено
  • Избегайте злоупотреблений — трафик агента не должен превращаться в массовый сбор данных

Стратегия обеспечения устойчивости

Какова самая надёжная стратегия заполнения форм с непредсказуемым HTML?

Итоги

Playwright + селекторы с поддержкой LLM + резервный вариант с визуальным анализом + проверка каждого шага + повторные попытки + журналы трассировки. Рецепт надёжного заполнения форм.

Часто задаваемые вопросы

Урок «Создание надёжного агента для заполнения форм» бесплатный?

Да — полный текст урока «Создание надёжного агента для заполнения форм» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «Создание надёжного агента для заполнения форм»?

Практический пример: войдите на портал, заполните многостраничную форму и проверьте отправленные данные Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Создание надёжного агента для заполнения форм»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Автоматизация браузера с Playwright
  2. Модели компьютерного зрения для понимания экрана
  3. Шаблоны использования компьютера (Anthropic Computer-Use)
  4. Создание надёжного агента для заполнения форм
← Назад к AI Agents