| """extract_subgraph — strukturált adatkinyerés egy doksiból. |
| |
| A `prototype-agentic` extract.py minta egyszerűsített LangGraph megfelelője. |
| |
| Topológia: |
| |
| START |
| → extract_node (regex/LLM extract → flatten_universal) |
| → END |
| |
| A quote_validator_node külön a parent pipeline_graph-ban fut, a Send fan-in |
| UTÁN, hogy az összes doksi extracted-jét együtt látjuk és risk-eket tudjunk |
| generálni. |
| |
| A vision/chunked/single_call routing-ot a Fázis 5-ben bővítjük (ott jön a Claude |
| `with_structured_output` integráció). A Fázis 3-as dummy-extractor ezeket |
| egyetlen szinkron path-on csinálja. |
| """ |
|
|
| from __future__ import annotations |
|
|
| from typing import TypedDict |
|
|
| from langgraph.graph import END, START, StateGraph |
|
|
| from graph.states.pipeline_state import ( |
| Classification, |
| ExtractedData, |
| IngestedDocument, |
| ) |
| from nodes.extract.extract_node import extract_node |
|
|
|
|
| class ExtractState(TypedDict, total=False): |
| """A extract subgraph belső state-je.""" |
|
|
| ingested: IngestedDocument |
| classification: Classification |
| extracted: ExtractedData |
| documents: list |
|
|
|
|
| def build_extract_subgraph(): |
| """Compile-olt subgraph egyetlen doksi extract-jére.""" |
| graph = StateGraph(ExtractState) |
| graph.add_node("extract", extract_node) |
| graph.add_edge(START, "extract") |
| graph.add_edge("extract", END) |
| return graph.compile() |
|
|