Grafy przestępczości finansowej z udziałem wielu agentów przy użyciu LangChain, LangGraph i LangSmith
Graf przestępstw finansowych z udziałem wielu agentów przy użyciu LangChain, LangGraph i LangSmith: routowanie przez nadzorcę, podgrafy, przerwy wprowadzane przez człowieka w procesie, ocena, zasady bezpieczeństwa.
Źródła: Building Multi-Agent Financial Crime Detection Systems with LangGraph, LangChain, and LangSmith
Problem w praktyce
Przegląd przestępstw finansowych nie polega na jednym prośbieniu. W poszczególnych przypadkach może być konieczne wzbogacenie danych KYC, sprawdzenie sankcji, analiza negatywnych doniesień w mediach, identyfikacja wzorców transakcji oraz przygotowanie opisu dla śledczych — każda z tych czynności wymaga innych narzędzi, standardów realizacji i sposobów radzenia sobie z awariami. Jedna, samodzielna sieć, która próbuje robić wszystko, staje się nieprzejrzysta, trudna do testowania i ryzykowna w przypadku awarii jakiegoś narzędzia.
Dlaczego kilka agentów jest lepsze niż jedna ogromna sieć
Specialistyczni agenci utrzymują prośby i narzędzia w skupieniu. Kierownik może kierować pracę lub ją rozdzielać. Awarie pozostają lokalne. Ludzka weryfikacja może kontrolować przejścia o wysokim ryzyku. Możliwość obserwacji pozwala przypisać koszty i błędy do poszczególnych ról, zamiast mieć jeden ogromny zapis działań.
Trzy warstwy: LangChain, LangGraph, LangSmith
LangChain dostarcza modele, narzędzia oraz mechanizmy obsługi wiadomości. LangGraph zarządza orkiestracją z pamięcią stanową – wspólnym stanem sprawy, krawędziami, persistencją oraz możliwością przerwania procesu. LangSmith obejmuje funkcje śledzenia, zarządzania zestawami danych oraz oceny wyników. Prosty agent z pętlą while może wywoływać narzędzia, ale rzadko zapewnia trwałą pamięć stanu sprawy, możliwość równoległych sprawdzeń, ponownego użycia podgrafów czy pełną integrację z systemem HITL.
Wspólny stan sprawy
Zacznij od jasno określonego schematu stanu: identyfikator sprawy, wiadomości, oceny, flagi, decyzje dotyczące kierunku działania oraz notatki śledczego.
from typing import TypedDict, Annotated, Literal
from langgraph.graph import StateGraph, END
from langgraph.graph.message import add_messages
from operator import add
class CaseState(TypedDict):
case_id: str
customer_id: str
transactions: list[dict]
messages: Annotated[list, add_messages]
kyc_flags: Annotated[list[str], add]
sanctions_hits: Annotated[list[dict], add]
risk_score: float
narrative: str
requires_human_review: bool
Jeden węzeł agenta z narzędziami
Połącz model z narzędziami specyficznymi dla danej dziedziny (np. wyszukiwanie sankcji, sprawdzanie list kontrolnych) i umożliwij węzłowi narzędzi wykonywanie odpowiednich wywołań.
from langchain_anthropic import ChatAnthropic
from langchain_core.tools import tool
@tool
def screen_ofac(name: str, dob: str | None = None) -> dict:
"""Screen an individual or entity name against the UK list."""
# In production: call a real screening API (e.g. UK100, Refinitiv)
return {"name": name, "match": False, "score": 0.02}
@tool
def screen_un_sanctions(name: str) -> dict:
"""Screen a name against the UN Consolidated Sanctions List."""
return {"name": name, "match": False, "score": 0.0}
llm = ChatAnthropic(model="claude-sonnet-4-6", temperature=0)
sanctions_llm = llm.bind_tools([screen_ofac, screen_un_sanctions])
def sanctions_agent(state: CaseState) -> dict:
response = sanctions_llm.invoke(state["messages"])
return {"messages": [response]}
Łączenie węzłów grafu
Połącz węzły agenta i narzędzi, użyj tools_condition (lub równoważnego elementu) aby tworzyć pętle, dopóki model nie przestanie wywoływać narzędzi, a następnie przejdź do kolejnego etapu.
from langgraph.prebuilt import ToolNode, tools_condition
graph = StateGraph(CaseState)
graph.add_node("kyc_agent", kyc_agent)
graph.add_node("sanctions_agent", sanctions_agent)
graph.add_node("sanctions_tools", ToolNode([screen_ofac, screen_un_sanctions]))
graph.add_node("tx_monitoring_agent", tx_monitoring_agent)
graph.add_node("narrative_agent", narrative_agent)
graph.set_entry_point("kyc_agent")
graph.add_edge("kyc_agent", "sanctions_agent")
# Conditional edge: loop back to tools if the LLM requested a tool call
graph.add_conditional_edges(
"sanctions_agent",
tools_condition,
{"tools": "sanctions_tools", END: "tx_monitoring_agent"},
)
graph.add_edge("sanctions_tools", "sanctions_agent")
graph.add_edge("tx_monitoring_agent", "narrative_agent")
graph.add_edge("narrative_agent", END)
app = graph.compile()
Przetestuj węzły o fałszywym stanie przed skompletowaniem pełnego grafu:
def test_sanctions_agent_flags_high_score_match():
fake_state = {
"messages": [HumanMessage(content="Screen: Igor Petrov, DOB 1978-03-11")],
}
result = sanctions_agent(fake_state)
assert "tool_calls" in result["messages"][-1].additional_kwargs
Ukierunkowanie przez nadzorcę
Klasa polecenia nadzorcy określa następnego specjalistę – KYC, sankcje, negatywne doniesienia w mediach – lub kończy się podsumowaniem.
from langchain_core.messages import SystemMessage
SUPERVISOR_PROMPT = """You are a financial crime case supervisor.
Route to exactly one of: kyc_agent, sanctions_agent, tx_monitoring_agent,
adverse_media_agent, narrative_agent, or FINISH if the case is fully investigated."""
def supervisor(state: CaseState) -> dict:
routing_llm = llm.with_structured_output(RouteDecision)
decision = routing_llm.invoke(
[SystemMessage(content=SUPERVISOR_PROMPT)] + state["messages"]
)
return {"next": decision.next_agent}
def route_next(state: CaseState) -> str:
return state["next"] if state["next"] != "FINISH" else END
graph.add_node("supervisor", supervisor)
for agent_name in ["kyc_agent", "sanctions_agent", "tx_monitoring_agent", "adverse_media_agent"]:
graph.add_edge(agent_name, "supervisor")
graph.add_conditional_edges("supervisor", route_next)
Rozgałęzianie równoległe
Niezależne sprawdzenia mogą być wykonywane po KYC bez konieczności sekwencjonowania wszystkiego:
graph.add_edge("kyc_agent", "sanctions_agent")
graph.add_edge("kyc_agent", "adverse_media_agent")
graph.add_edge("kyc_agent", "tx_monitoring_agent")
# Fan-in: all three must complete before scoring
graph.add_edge("sanctions_agent", "risk_scoring_agent")
graph.add_edge("adverse_media_agent", "risk_scoring_agent")
graph.add_edge("tx_monitoring_agent", "risk_scoring_agent")
Człowiek w łańcuchu
Zrób punkt kontrolny, przerwij działanie gdy ryzyko przekroczy ustalone zasady, przesyłaj częściowy stan do interfejsu użytkownika przypadku, a następnie kontynuuj z danymi od śledczego.
from langgraph.checkpoint.memory import MemorySaver
from langgraph.types import interrupt, Command
def compliance_review(state: CaseState) -> dict:
if state["risk_score"] > 0.7:
decision = interrupt({
"narrative": state["narrative"],
"risk_score": state["risk_score"],
"action_needed": "approve_or_reject_sar",
})
return {"requires_human_review": False, "human_decision": decision}
return {"requires_human_review": False}
checkpointer = MemorySaver()
app = graph.compile(checkpointer=checkpointer)
config = {"configurable": {"thread_id": "case-2026-00931"}}
result = app.invoke({"case_id": "case-2026-00931", ...}, config=config)
# Later, once a human reviews in your case management UI:
final = app.invoke(Command(resume={"approved": True, "reviewer": "j.smith"}), config=config)
for chunk in app.stream(
{"case_id": "case-2026-00931", ...},
config=config,
stream_mode="updates",
):
for node_name, node_output in chunk.items():
print(f"[{node_name}] emitted: {node_output}")
# push node_output to a websocket / case UI here
Podgrafy dla jednostek wielokrotnego użycia
Zapakuj rozwiązanie problemu KYC jako odrębny graf i umieść go jako węzeł, aby inne typy przypadków mogły korzystać z tej samej jednostki.
kyc_subgraph = StateGraph(CaseState)
kyc_subgraph.add_node("resolve_entity", resolve_entity_node)
kyc_subgraph.add_node("verify_documents", verify_documents_node)
kyc_subgraph.add_node("pep_check", pep_check_node)
kyc_subgraph.set_entry_point("resolve_entity")
kyc_subgraph.add_edge("resolve_entity", "verify_documents")
kyc_subgraph.add_edge("verify_documents", "pep_check")
kyc_subgraph.add_edge("pep_check", END)
compiled_kyc = kyc_subgraph.compile()
parent_graph = StateGraph(CaseState)
parent_graph.add_node("kyc_process", compiled_kyc) # subgraph as a node
Zobieralność za pomocą LangSmith
Włącz śledzenie i oznaczaj wykonywane operacje identyfikatorami przypadków oraz rolami agentów.
import os
os.environ["LANGSMITH_TRACING"] = "true"
os.environ["LANGSMITH_API_KEY"] = "ls__..."
os.environ["LANGSMITH_PROJECT"] = "financial-crime-agents"
result = app.invoke(
{"case_id": "case-2026-00931", ...},
config={
"configurable": {"thread_id": "case-2026-00931"},
"metadata": {"case_id": "case-2026-00931", "customer_tier": "high_risk"},
"tags": ["sar_pipeline", "prod"],
},
)
Iteracje oparte na ocenie
Zbiór danych służy do wykrywania regresji, gdy zmieniają się prompty lub narzędzia. LLM-as-judge może oceniać klarowność narracji w streszczeniach typu SAR – zawsze przy użyciu ludzkiej weryfikacji, gdy stawkę stanowi wysoka wartość.
from langsmith import Client
from langsmith.evaluation import evaluate
client = Client()
def correctness_evaluator(run, example) -> dict:
predicted_risk = run.outputs.get("risk_score", 0)
actual_risk = example.outputs.get("risk_score", 0)
return {
"key": "risk_score_accuracy",
"score": 1.0 if abs(predicted_risk - actual_risk) < 0.15 else 0.0,
}
results = evaluate(
lambda inputs: app.invoke(inputs, config={"configurable": {"thread_id": "eval"}}),
data="aml-labeled-cases-2026-h1",
evaluators=[correctness_evaluator],
experiment_prefix="sar-pipeline-v3",
)
from langsmith.evaluation import LangChainStringEvaluator
narrative_judge = LangChainStringEvaluator(
"criteria",
config={
"criteria": {
"cites_evidence": "Does the narrative cite specific transaction IDs and dates?",
"regulatory_tone": "Is the language neutral and factual, avoiding speculation?",
},
"llm": ChatAnthropic(model="claude-sonnet-4-6", temperature=0),
},
)
results = evaluate(
lambda inputs: app.invoke(inputs, config=config),
data="aml-labeled-cases-2026-h1",
evaluators=[correctness_evaluator, narrative_judge],
experiment_prefix="sar-narrative-v2",
)
Zasady bezpieczeństwa i radzenie sobie z awariami
Próbuj ponownie użyć niestabilnych węzłów narzędziowych, ogranicz rekurencję oraz natychmiast reaguj na awarie zamiast wymyślać jasny wynik.
from langgraph.pregel import RetryPolicy
graph.add_node(
"sanctions_tools",
ToolNode([screen_ofac, screen_un_sanctions]),
retry=RetryPolicy(max_attempts=3, backoff_factor=2.0),
)
result = app.invoke(initial_state, config={**config, "recursion_limit": 25})
Potknięcia w grafach AML w produkcji
Powiązane, zmienne globalne dane, niekontrolowane automatyczne przetwarzanie, brak ścieżki od oceny do dowodów oraz nadzorcy, którzy bez końca zadają te same pytania temu samemu agentowi. Ogranicz pętle, wymagaj odwołań do stanu i przechowuj operacje przetwarzania za HITL.
Kształt odniesienia
Praktyczna topologia: nadzorca w centrum, specjalistyczni agenci z pętlami narzędziowymi, opcjonalne gałęzie równoległe, węzeł łączenia/opisowy, brama przerwania, a następnie eksport – z wykorzystaniem powtarzalnych podgrafów tam, gdzie jednostki się powtarzają.
┌─────────────┐
│ Supervisor │◄───────────────-─┐
└──────┬──────┘ │
┌───────────────┼───────────────┐ │
▼ ▼ ▼ │
┌─────────┐ ┌──────────────┐ ┌───────────┐ │
│ KYC │ │ Sanctions │ │ TX Monitor│ │
│Subgraph │ │ Agent + Tools│ │ Agent │ │
└────┬────┘ └──────┬───────┘ └─────┬─────┘ │
└───────────────┴────────────────┘ │
▼ │
┌─────────────────┐ │
│ Risk Scoring │─────────────┘
└────────┬────────┘
▼
┌─────────────────┐ ┌──────────────┐
│ Narrative Agent │───────►│ Human Review │
└─────────────────┘ │ (interrupt) │
└──────┬───────┘
▼
SAR Filed / Closed
Koszt i opóźnienie
Rozgałęzianie się zużywa tokeny; używaj stałych profili KYC w pamięci cache; stosuj mniejsze modele do routingu, a większe do tworzenia narracji; przesyłaj aktualizacje interfejsu w czasie rzeczywistym, aby śledczy mogli zobaczyć postępy przed ostatecznym raportem.
Uwagi końcowe
Systemy do zwalczania przestępczości finansowej z wieloma agentami odnoszą sukces, gdy stan jest jasno określony, specjaliści są poddawalni testom, orkiestracja jest widoczna, a ludzie biorą udział w decyzjach dotyczących nieodwracalnych działań. LangGraph zapewnia warstwę sterowania, LangChain dostarcza narzędzia, a LangSmith tworzy pętlę zwrotną, która utrzymuje spójność grafu w miarę ewolucji typologii.
Rządy dotyczące zatwierdzonych agentów śledczych
Zespoły zajmujące się AML i oszustwami już teraz muszą dostosowywać się do ryzyka związanego z modelami oraz wymogów audytowych. Graf agentów musi generować ślady dowodowe, którymi mogą kierować się śledczy i organy regulacyjne: jakie narzędzia zostały użyte, które listy się pokrywały, jakie progi zostały przekroczone, kto zatwierdził wyjątek oraz która wersja modelu stworzyła opis zdarzenia. Należy przechowywać te dane w stanie sprawy i eksportować je razem z plikiem dokumentacyjnym, a nie tylko w dedykowanym interfejsie do śledzenia.
Zmiany w promptach i narzędziach powinny przechodzić przez ten sam proces zarządzania zmianami co silniki reguł. Należy przetestować nowe prompty nadzorczyce na podstawie historycznych przypadków, porównać rozkłady routingu i uzyskać zatwierdzenie przed ich wdrożeniem. Zbiory danych LangSmith pomagają, ale osoby odpowiedzialne za zarządzanie nadal potrzebują pisemnego potwierdzenia akceptacji.
Czynniki ludzkie są istotne. Jeśli przerwy występują zbyt często, badacze je ignorują; jeśli za rzadko, ryzyko umyka. Nastawiaj progi poprzez przeglądy próbek. Przekazywane w czasie rzeczywistym informacje o stanie pośrednim powinny podkreślać niepewność, a nie tylko pewne stwierdzenia, aby recenzenci wiedzieli, gdzie szukać.
Odporność na ataki stanowi część niezawodności: wyniki narzędzi mogą być zniekształcone lub zawierać szkodliwe treści (np. zatrute teksty w negatywnych mediach). Węzły walidacyjne powinny oczyszczać dane i podawać źródła. Nigdy nie pozwalaj, by pojedynczy zeskrobany akapit upoważniał do podjęcia działań bez dodatkowych weryfikacji.
Mierząc sukces, należy zrównoważyć stopień automatyzacji z jakością: odsetek spraw zamkniętych automatycznie, średni czas triażu, odsetek błędnych decyzji o zwolnieniu w przeglądanych audytach oraz koszt w dolarach za każdą sprawę. Wykresy, które oszczędzają czas analityków, ale powodują więcej błędnych decyzji, nie stanowią sukcesu. Zachowaj mechanizm awaryjny, który kieruje wszystko do ludzi, jeśli dostawcy narzędzi stracą jakość.
Takie praktyki przekształcają architekturę referencyjną z pomysłowego diagramu w działający system. Przykłady kodu powyżej stanowią jedynie szkielet; to model operacyjny sprawia, że agenci zajmujący się przestępczością finansową cieszą się zaufaniem.
Budowanie specjalistycznych promptów bez duplikacji
Każdy specjalistyczny agent powinien otrzymywać tylko tę część stanu sprawy, która jest mu potrzebna. Przekazywanie całej informacji z dochodzenia do każdego promptu marnuje zasoby i ujawnia nieistotne dane osobowe w narzędziach, które ich nie potrzebują. Należy zdefiniować funkcje wyświetlania: sanctions_view(state), kyc_view(state) i przeprowadzić ich testy jednostkowe. Nadzorcy widzą podsumowania routingu; autorzy – zestawy dowodów.
Klienci narzędzi współdzielonych powinny znajdować się w bibliotece z mechanizmami ponawiania prób i pomiarów. Agenci nie powinni samodzielnie implementować różnych czasów oczekiwania HTTP. Należy scentralizować dane uwierzytelniające dostawców list oraz mechanizmy ochronne, aby awaria w obszarze sankcji wpływała spójnie na całą sieć.
Łańcuch danych i magazyny cech
Cechy transakcyjne używane przez agenty do wykrywania wzorców powinny pochodzić z zarządzanych pipeline’ów, a nie z ad-hoc zapytań SQL wewnątrz narzędzia. Definiuj wersje definicji cech. Gdy analityk kwestionuje wynik, należy odtworzyć dane wejściowe. Wykresy, które nie potrafią wyjaśnić wyniku, nie przetrwają oceny ryzyka modelu.
Paralelizm i spójność
Gałęzie rozchodzące się muszą łączyć się w sposób deterministyczny. Zdefiniuj funkcje redukcyjne dla pól typu lista oraz zasady „ostatni piszący” dla wartości skalarowych. Przetestuj aktualizacje równoczesne. Jeśli zarówno negatywne media, jak i sankcje zapisują wartość risk_flags, użyj funkcji redukcyjnych z adnotacjami, aby flagi były łączone, a nie nadpisywane.
Integracja z pracą ludzką
Systemy zarządzania przypadkami (podobne do Jira, niestandardowe CRM) powinny obsługiwać przerwy. Wysyłajcie dane przerw jako zadania; po ich zakończeniu wywołujcie API do wznowienia działania z wynikiem zadania. Nie twórzcie jednorazowej strony do zatwierdzania, jeśli śledczy już korzystają z istniejącej konsoli — wgrajcie funkcje tam.
Red teaming grafu
Zsymulujcie zatruwanie narzędzi, wstrzykiwanie poleceń w notatkach klientów oraz niezgodne rozwiązywanie problemów związanych z entytetami. Upewnijcie się, że graf odrzuca zgłoszenia, gdy dowody są słabe. Zapisujcie te symulacje jako przypadki oceny. Narzędzia do walki z przestępczością finansową mają zastosowanie podwójne; atakujący będą próbować wymusić ich użycie do sfałszowania danych.
Rządy kosztami
Tag LangSmith (lub równoważny) działa z użyciem parametrów case_type, agent i model. Budżet przypisany do każdego typu sprawy. Alarmy przy wartościach wykraczających poza normę. Preferować należy reguły deterministyczne w przypadkach oczywistych decyzji o przyjęciu lub odrzuceniu, a modele LLM zachować na zadania wymagające interpretacji niejednoznacznych narracji. Systemy hybrydowe przewyższają czyste rozwiązania oparte na LLM pod względem kosztów i możliwości audytu.
Zasoby ludzkie i odpowiedzialności
Należy wyznaczyć osobę odpowiedzialną za koordynację, osobę zarządzającą narzędziami/danymi oraz osobę odpowiedzialną za zgodność z regulacjami. Niejednoznaczności w tym obszarze prowadzą do powstania skomplikowanych diagramów, których nikt nie może bezpiecznie zmienić. Należy planować wspólne przeglądy przy dodawaniu nowego specjalistycznego agenta – każdy nowy węzeł stanowi nowy obszar potencjalnych problemów.
Dzięki tym praktykom wzorzec multi-agentowy LangGraph staje się systemem operacyjnym do prowadzenia dochodzeń, a nie tylko demonstracją działającą tylko w jednym konkretnym przypadku.
Od pilotażu do pełnego wdrożenia
Piloci często pracują z niewielką liczbą syntetycznych przypadków. Aby usługa mogła zostać przyjęta przez poszczególne działy biznesowe, konieczna jest lokalizacja typologii, obsługa językowa narracji oraz integracja z istniejącymi systemami monitorowania czasu pracy i SLA. Planuj wprowadzanie usługi etapami, najpierw dla produktów o niskim ryzyku, a później dla tych o wyższym ryzyku. Zachowaj grupę kontrolną składającą się z przypadków sprawdzanych ręcznie, aby ocenić efektywność. Poinformuj, że praca z pomocą modeli nie oznacza pracy bez nadzoru. Szkolenia dla analityków powinny obejmować umiejętność interpretacji wykresów graficznych, jak przejąć kontrolę nad procesem oraz jak zgłaszać błędne dane pochodzące z narzędzi. Technologia bez takiego ludzkiego wsparcia sprawdza się słabo, nawet jeśli diagram architektury jest doskonały.
Oczekuj, że dostawcy oraz wewnętrzne zespoły zajmujące się danymi będą zmieniać API podczas używania usługi. Wymagane są wersjonowanie, wykorzystanie grafik typu canary oraz flag funkcjonalnych uruchamiane na żądanie. System do walki z przestępczością finansową oparty na wielu agentach to usługa dynamicznie rozwijająca się, a nie jednorazowa konwersja notatnika.
List kontrolny przed uruchomieniem w ruchu produkcyjnym
Schemat został przeanalizowany przez dział ds. zgodności; narzędzia są zabezpieczone mechanizmami autoryzacji i czasów wygaśnięcia; nadzorca ocenia przypadki historyczne jako pozytywne; ścieżka HITL została przetestowana od początku do końca; panele sterowania LangSmith (lub podobnych narzędzi) są aktywne; ustawione zostały limity rekurencji; dokumentowany jest mechanizm natychmiastowego wyłączenia; uruchomione są alarmy dotyczące budżetów kosztowych; uzgodniono system wersjonowania podgrafów; przetestowano narzędzia do łączenia danych równolegle; wymagane są cytaty opisowe; opublikowane zostały procedury postępowania w sytuacjach awaryjnych. Wykrywanie przestępstw finansowych za pomocą wielu agentów opiera się mniej na sprytnych instrukcjach, a bardziej na tych niepozornych elementach. Zaznacz je, a następnie ostrożnie zwiększ objętość przetwarzanych przypadków, obserwując co tydzień przykłady błędnych wyników w pierwszym kwartale.
Współpraca z śledczymi jako użytkownicy produktu
Badacze nie są elementem dodanym później w interfejsie. Spędzaj z nimi czas podczas testów pilotażowych. Obserwuj, gdzie nie ufają streszczeniom, gdzie potrzebują surowych danych z narzędzi oraz gdzie chcą możliwości szybkiego eskalowania. Zapisz te potrzeby jako pola stanu oraz treści przerywające transmisję danych. Grafik optymalizowany wyłącznie pod kątem szybkości automatyzacji zostanie obejrzany, a takie obejścia unicestwią korzyści z audytu, o których mówiłeś.
Wspólnie projektuj panele kontrolne, które pokazują, dlaczego w daną wtorek przełożony skierował sprawę na sankcje przed przeprowadzeniem procedury KYC. Transparentność sprzyja przyjęciu rozwiązania, a to z kolei umożliwia uzyskanie informacji zwrotnych, które ulepszają instrukcje i progi decyzyjne. Bez tego cyklu nawet doskonała architektura referencyjna zatrzymuje się po tygodniu uruchomienia.
Publikuj miesięczny raport jakości, w którego ocenie pomagają analitycy. Wspólne zarządzanie zapewnia, że system wielu agentów będzie skupiony na misji – zwalczaniu przestępczości finansowej – a nie tylko na wyłącznie metrykach demonstracyjnych. Jeśli będziesz to robić konsekwentnie, projekt LangGraph oparty na wielu agentach zyska zaufanie w jedyny istotny sposób w pracy nad przestępczością finansową: poprzez radzenie sobie z rzeczywistymi przypadkami, prawdziwymi śledczymi i rzeczywistymi audytami – a nie tylko dzięki eleganckiemu wyglądowi na diagramach referencyjnych. Najpierw wdroż kontrolery, które wydają się nudne; pozwól inteligentnemu routowaniu zyskać swoje miejsce dopiero wtedy, gdy kontrolery zadziałają poprawnie. Śledczy od razu zauważą różnicę. Zawsze projektuj z myślą o takiej wnikliwej ocenie – nic mniej nie wystarczy.
Literatura pokrewna
- Multi-Agent KAG na dynamicznych tabelach Snowflake z LangGraphem — Połączenie generacji wzbogaconej o wiedzę, dynamicznych tabel oraz routingu wieloagentowego z LangGraphem dla procesów typowych dla magazynów.
- Katalog LangGraph i agenci do wygenerowania rachunków z funkcją widoczności LangSmith — Routowanie wieloagentowe w stylu nadzorcy, możliwość przerwania przez człowieka, pamięć długoterminowa oraz pętle oceny, które utrzymują rzetelność w obliczu złożoności.
- Triaging żądań ubezpieczeniowych wieloagentowych na Microsoft Foundry — Koordynator wraz z specjalistami od ochrony ubezpieczeniowej, wykrywania oszustw i rozliczeń, korzystającymi z narzędzi, punktów kontrolnych, App Insights oraz Container Apps.