Budowanie niezawodnego agenta do wypełniania formularzy
Praktyczne studium przypadku: zaloguj się do portalu, wypełnij wielostronicowy formularz i zweryfikuj jego przesłanie.
Budowanie niezawodnego agenta do wypełniania formularzy to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
Realistyczny projekt
Agent „wypełnij ten wielostronicowy formularz”. Połączymy Playwright, planowanie z użyciem LLM, ponawianie prób i awaryjne użycie wizji.
Architektura
- LLM odczytuje wymagania pól ze specyfikacji JSON
- Playwright otwiera formularz
- Dla każdego pola znajduje selektor i wartość, wypełnia je oraz sprawdza poprawność
- Jeśli trudno znaleźć pole za pomocą DOM, następuje przełączenie na wizję
- Formularz zostaje wysłany, a powodzenie operacji zweryfikowane
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}')
Krok 4: Lokalizator wspomagany przez LLM
Jeśli standardowe selektory zawiodą, należy poprosić LLM o zidentyfikowanie pola:
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()Krok 5: Awaryjne użycie wizji
Jeśli nawet LLM nie potrafi znaleźć selektora, należy wykonać zrzut ekranu i użyć wizji:
if not filled:
screenshot = page.screenshot()
coordinate = vision_llm_locate(screenshot, field_name)
page.mouse.click(coordinate.x, coordinate.y)
page.keyboard.type(value)Krok 6: Sprawdzaj poprawność każdego kroku
Po wypełnieniu pola należy ponownie odczytać jego wartość:
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')Krok 8: Logika ponawiania prób
Formularze czasami działają nieprawidłowo. Należy ponawiać próbę, sprawdzając idempotencję:
@retry(stop=stop_after_attempt(3), wait=wait_fixed(2))
def fill_and_submit(page, task):
...Krok 9: Obsługa CAPTCHA
Jeśli formularz zawiera reCAPTCHA, należy użyć usługi rozwiązującej CAPTCHA (2Captcha, Anti-Captcha) — albo prawidłowo zakończyć działanie i poprosić o pomoc człowieka.
Krok 10: Rejestrowanie i odtwarzanie
Należy zapisywać każde działanie i każdy zrzut ekranu. Gdy coś zawiedzie, można odtworzyć ślad, aby przeprowadzić debugowanie:
context.tracing.stop(path=f'trace-{task_id}.zip')
# View with: playwright show-trace trace-abc.zipKwestie współbieżności
Aby równolegle obsługiwać formularze wielu użytkowników, należy uruchamiać jeden kontekst przeglądarki na zadanie. Współbieżność należy ograniczyć, aby nie przeciążać docelowej witryny.
Poszanowanie docelowej witryny
- Należy ograniczać tempo między działaniami (ludzie nie piszą z szybkością 200 znaków/s)
- Należy przestrzegać robots.txt i warunków korzystania z usługi (ToS)
- Rotacyjnych adresów IP należy używać tylko wtedy, gdy jest to dozwolone
- Należy unikać nadużyć — ruch agenta ≠ masowe skrobanie
Strategia zapewniająca niezawodność
Jaka jest najbardziej niezawodna strategia wypełniania formularzy z nieprzewidywalnym kodem HTML?
Podsumowanie
Playwright + selektory wspomagane przez LLM + awaryjne użycie wizji + sprawdzanie poprawności każdego kroku + ponawianie prób + rejestrowanie śladów. To przepis na niezawodne wypełnianie formularzy.
Często zadawane pytania
Czy lekcja „Budowanie niezawodnego agenta do wypełniania formularzy” jest bezpłatna?
Tak — pełny tekst „Budowanie niezawodnego agenta do wypełniania formularzy” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „Budowanie niezawodnego agenta do wypełniania formularzy”?
Praktyczne studium przypadku: zaloguj się do portalu, wypełnij wielostronicowy formularz i zweryfikuj jego przesłanie. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Budowanie niezawodnego agenta do wypełniania formularzy”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Automatyzacja przeglądarki za pomocą Playwright
- Modele wizyjne do rozumienia ekranu
- Wzorce użycia komputera (Anthropic Computer-Use)
- Budowanie niezawodnego agenta do wypełniania formularzy