> ## Documentation Index
> Fetch the complete documentation index at: https://doc.agent-l.integria.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Sociétés multi-agents

> Coordonnez plusieurs agents sans diluer leurs contrats ni leurs politiques.

Un programme peut regrouper plusieurs blocs `AGENT`. `Society` les ordonnance, distribue les messages et conserve une trace par agent.

## Un hôte par agent

La fonction `build()` de l’hôte renvoie des dictionnaires indexés par les noms déclarés :

```python society.py theme={"theme":{"light":"github-light","dark":"vesper"}}
from agentl import Host, MockLLM


def build():
    analyst = Host()
    responder = Host()

    # Enregistrez ici les capteurs et outils de chaque rôle.

    hosts = {
        "soc_analyst": analyst,
        "incident_responder": responder,
    }
    llms = {
        "soc_analyst": MockLLM(),
        "incident_responder": MockLLM(),
    }
    return hosts, llms
```

Un hôte fourni pour un nom absent du programme est refusé. Un agent sans hôte déclaré reste visible comme tel lors des inspections hors ligne.

## Communiquer

Les messages suivent les contrats du langage. Le runtime conserve l’émetteur, le destinataire et la charge utile dans la trace.

```text theme={"theme":{"light":"github-light","dark":"vesper"}}
SEND incident_report TO incident_responder {
    host = suspected_host
    confidence = P(credential_attack)
}
```

`RECEIVE` remet les messages en attente pendant le cycle de l’agent destinataire.

## Déléguer une capacité

`DELEGATE` n’est pas un raccourci autour des règles. Le sous-agent doit être déclaré comme un `TOOL`, autorisé par la politique et implémenté dans `host.subagents`.

```text theme={"theme":{"light":"github-light","dark":"vesper"}}
TOOL prober {
    INPUT  { }
    OUTPUT { probe_code: Number, evidence: String }
    RISK   LOW
}

POLICY {
    DEFAULT DENY
    ALLOW prober
}

DELEGATE prober {
    TASK "sonder l’endpoint de santé"
    EXPECT { probe_code, evidence }
}
```

## Exécuter une société

```bash theme={"theme":{"light":"github-light","dark":"vesper"}}
agentl check society.agent
agentl verify society.agent
agentl run society.agent
```

Le runtime affiche ensuite les traces, les messages et l’état partagé.

## Principes de conception

* donnez à chaque agent un objectif et une politique complets ;
* échangez des faits ou des demandes structurés, pas un prompt global partagé ;
* bornez les sorties de délégation par `EXPECT` ;
* testez l’absence, le retard et la contradiction des messages ;
* gardez les actions à risque sous la politique de l’agent qui les exécute.

<Tip>
  Le multi-agent ne remplace pas un plan. Créez plusieurs agents lorsque les rôles, capacités ou politiques diffèrent réellement, pas pour découper artificiellement une procédure linéaire.
</Tip>
