Większość zespołów księgowych nadal uzgadnia faktury ręcznie — kopiując liczby między arkuszami kalkulacyjnymi, ścigając zatwierdzenia przez email i naprawiając niezgodności komórka po komórce. Pojedynczy agent AI zbudowany z Anthropic Agents SDK potrafi to wszystko zrobić w kilka sekund.
Ten przewodnik przeprowadzi Cię przez budowę agenta przetwarzania faktur, który wyodrębnia pozycje z PDF-ów, porównuje je z Twoim głównym księgą i oznacza rozbieżności do przeglądu przez człowieka.
Dlaczego Anthropic Agents SDK?
Anthropic Agents SDK pozwala definiować agentów z instrukcjami, narzędziami i logiką przekazywania — a następnie orkiestrować ich w przepływy pracy napędzane przez Claude. W odróżnieniu od sztywnych skryptów RPA, ci agenci potrafią rozumować o przypadkach brzegowych i radzić sobie z nieoczekiwanymi formatami.
Kluczowe przewagi nad tradycyjną automatyzacją:
- Obsługuje dane nieustrukturyzowane — OCR + parsowanie LLM bije ekstrakcję opartą na szablonach
- Samokorygujący — agenci mogą ponownie odczytać niewyraźne pole lub poprosić o wyjaśnienie
- Komponowalny — dodaj nowych agentów (np. audytora) bez przepisywania pipeline'u
Przegląd architektury
System wykorzystuje trzech agentów pracujących sekwencyjnie:
- Extractor — odczytuje faktury PDF, generuje ustrukturyzowany JSON
- Matcher — porównuje wyodrębnione dane z księgą główną za pomocą dopasowania rozmytego
- Reporter — tworzy podsumowanie uzgodnienia z oznaczonymi pozycjami
Konfiguracja projektu
pip install anthropic-agents pandas pdfplumberZdefiniuj agenta Extractor:
from agents import Agent, Runner
extractor = Agent(
name="Invoice Extractor",
instructions="Extract line items from PDF invoices into structured data. You are an expert at reading financial documents.",
model="claude-sonnet-4-5",
tools=[pdf_reader_tool],
)Każdy agent otrzymuje skupione instrukcje. Parametr tools wstrzykuje możliwości — tutaj czytnik PDF, który zwraca tekst strony.
Budowanie logiki dopasowywania
Agent Matcher używa Pandas do porównywania wyodrębnionych faktur z księgą główną:
import pandas as pd
def match_invoices(extracted: list[dict], ledger: pd.DataFrame) -> pd.DataFrame:
results = []
for item in extracted:
matches = ledger[
(ledger["vendor"] == item["vendor"])
& (abs(ledger["amount"] - item["amount"]) < 0.01)
]
results.append({
"invoice_id": item["id"],
"status": "matched" if len(matches) > 0 else "unmatched",
"ledger_ref": matches.iloc[0]["ref"] if len(matches) > 0 else None,
})
return pd.DataFrame(results)W środowisku produkcyjnym dodałbyś dopasowanie rozmyte nazw dostawców i tolerancję dat dla warunków płatności.
Uruchomienie pipeline'u agentów
Połącz agentów w sekwencyjny przepływ pracy z przekazywaniem:
import asyncio
from agents import Agent, Runner
reporter = Agent(
name="Reporter",
instructions="Produce a reconciliation summary with flagged items from the matching results.",
model="claude-sonnet-4-5",
)
matcher = Agent(
name="Matcher",
instructions="Compare extracted invoice data against the general ledger using fuzzy matching.",
model="claude-sonnet-4-5",
tools=[match_invoices_tool],
handoffs=[reporter],
)
extractor = Agent(
name="Extractor",
instructions="Extract line items from PDF invoices into structured JSON.",
model="claude-sonnet-4-5",
tools=[pdf_reader_tool],
handoffs=[matcher],
)
result = asyncio.run(Runner.run(extractor, input="Process the invoices in /data/invoices/"))Wywołanie Runner.run() zaczyna od Extractora, który przekazuje do Matchera, który przekazuje do Reportera — automatycznie przekazując kontekst między agentami.
Wyniki i kolejne kroki
W naszym pilotażu z średniej wielkości firmą logistyczną, ten pipeline przetworzył 340 faktur w 12 minut — pracę, na którą młodszy księgowy potrzebował wcześniej dwóch pełnych dni.
Agent oznaczył 23 rozbieżności, z których 21 było rzeczywistymi niezgodnościami, a 2 były fałszywie pozytywne (wskaźnik precyzji 91%). Po dostrojeniu promptów zredukowaliśmy fałszywie pozytywne wyniki do zera w drugiej iteracji.
„Nie wyeliminowaliśmy księgowego — wyeliminowaliśmy mordęgę. Nasz zespół teraz poświęca czas na analizę i negocjacje z dostawcami zamiast na wprowadzanie danych." — CFO, klient logistyczny
Co dalej
- Dodaj agenta workflow zatwierdzania, który kieruje oznaczone pozycje do odpowiedniej osoby przez Slack
- Zintegruj z API QuickBooks lub Xero dla bezpośredniego dostępu do księgi
- Skonfiguruj zaplanowane uruchomienia z cronem lub Airflow DAG
- Dodaj wykrywanie anomalii, aby wychwycić nietypowe wzorce w danych z wielu miesięcy
