Создание надёжного агента для заполнения форм
Практический пример: войдите на портал, заполните многостраничную форму и проверьте отправленные данные
«Создание надёжного агента для заполнения форм» — бесплатный урок AI Agents на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Реалистичный проект
Агент «заполните эту многостраничную форму». Мы объединим Playwright, планирование с помощью LLM, повторные попытки и резервный вариант с визуальным анализом.
Архитектура
- LLM читает требования к полям из спецификации JSON
- Playwright открывает форму
- Для каждого поля найдите селектор и значение, заполните поле и проверьте его
- Если поле трудно найти через DOM, используйте визуальный анализ как резервный вариант
- Отправьте форму и проверьте успешность операции
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 — локальная установка не требуется.
Все уроки этого курса
- Автоматизация браузера с Playwright
- Модели компьютерного зрения для понимания экрана
- Шаблоны использования компьютера (Anthropic Computer-Use)
- Создание надёжного агента для заполнения форм