flowchart TD A["Agriculture, sylviculture et pêche"] D01["Culture et production animale"] G011["Cultures non permanentes"] C0111["Culture de céréales"] A --> D01 --> G011 --> C0111
Classification automatique dans des nomenclatures statistiques par approche agentique
2 April 2026
NAF : Nomenclature statistique des Activités économiques
COICOP : Classification of Individual Consumption by Purpose
flowchart TD A["Agriculture, sylviculture et pêche"] D01["Culture et production animale"] G011["Cultures non permanentes"] C0111["Culture de céréales"] A --> D01 --> G011 --> C0111
graph TD ROOT["Root"] %% Sections J["CODE: J<br/>LEVEL: 1"] A["CODE: A<br/>LEVEL: 1"] %% Divisions J60["CODE: J60<br/>LEVEL: 2"] J61["CODE: J61<br/>LEVEL: 2"] A01["CODE: A01<br/>LEVEL: 2"] %% Groupes J60_1["CODE: J60.1<br/>LEVEL: 3"] J60_2["CODE: J60.2<br/>LEVEL: 3"] A01_1["CODE: A01.1<br/>LEVEL: 3"] %% Classes J60_11["CODE: J60.11<br/>LEVEL: 4"] J60_12["CODE: J60.12<br/>LEVEL: 4"] A01_11["CODE: A01.11<br/>LEVEL: 4"] %% Relations HAS_PARENT J -->|HAS_PARENT| ROOT A -->|HAS_PARENT| ROOT J60 -->|HAS_PARENT| J J61 -->|HAS_PARENT| J A01 -->|HAS_PARENT| A J60_1 -->|HAS_PARENT| J60 J60_2 -->|HAS_PARENT| J60 A01_1 -->|HAS_PARENT| A01 J60_11 -->|HAS_PARENT| J60_1 J60_12 -->|HAS_PARENT| J60_1 A01_11 -->|HAS_PARENT| A01_1
CodeChooser:
MatchVerifier:
class MatchVerifier(BaseAgent):
def __init__(self, graph: Graph):
super().__init__(graph)
def get_agent_name(self) -> str:
return "MatchVerifier Agent"
def get_instructions(self) -> str:
return """
Tu es un agent spécialisé dans la vérification de la validité d'une correspondance entre un libellé textuel et le code qui lui a été associé. Tu as accès à des outils pour interroger une base de données de nomenclature statistique structurée en graph database Neo4j.
"""
def get_output_type(self):
return MatchVerificationResult
def build_prompt(self, match_verification_input: MatchVerificationInput) -> str:
"""
Construire le prompt pour l'agent de vérification de correspondance.
"""
prompt = f"""
Vérifie si le code suivant correspond bien à l'activité décrite.
Activité : {match_verification_input.activity}
Code proposé : {match_verification_input.code}
Explication proposée : {match_verification_input.proposed_explanation}
Réponds en fournissant :
1. Un booléen indiquant si la correspondance est valide.
2. Un niveau de confiance entre 0 et 1.
3. Une explication concise de ta décision.
"""
return prompt