0Pricing
AI Agents · Lekcja

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

  1. LLM odczytuje wymagania pól ze specyfikacji JSON
  2. Playwright otwiera formularz
  3. Dla każdego pola znajduje selektor i wartość, wypełnia je oraz sprawdza poprawność
  4. Jeśli trudno znaleźć pole za pomocą DOM, następuje przełączenie na wizję
  5. 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.zip

Kwestie 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

  1. Automatyzacja przeglądarki za pomocą Playwright
  2. Modele wizyjne do rozumienia ekranu
  3. Wzorce użycia komputera (Anthropic Computer-Use)
  4. Budowanie niezawodnego agenta do wypełniania formularzy
← Powrót do AI Agents