Aller au contenu principal
Version: 1.0.0

Traiter une liste en parallèle

Transformez un lot de tickets avec une cible typée, une concurrence bornée et un résultat ordonné. Ce premier parcours n'utilise ni modèle ni handler : il permet de vérifier la composition avant d'ajouter des effets externes.

1. Écrire le programme​

Créez batch.tb :

batch.tb
module examples.parallel_batch

strategy Label
takes ticket as Text
gives Text
do
give "Ticket: " ++ ticket

strategy Run
takes tickets as List of Text
gives List of Text
uses Label
do
parallel Label
each ticket in tickets
with ticket as ticket
max_concurrency 2
max_items 8
into labels
give labels

Run orchestre ; Label produit une valeur par entrée. Le groupe admet au plus huit tickets et exécute au plus deux branches simultanément.

2. Exécuter​

touba compile batch.tb --out batch.air.json
touba run batch.air.json \
--entry strategy:examples.parallel_batch/Run \
--inputs-json '{"tickets":["T-3","T-1","T-2"]}' \
--output result

Résultat attendu : ["Ticket: T-3","Ticket: T-1","Ticket: T-2"]. L'ordre correspond à l'entrée, même si les branches terminent dans un autre ordre. Cette petite transformation pure ne mesure pas un gain de performance.

3. Tester les bornes​

  • Avec {"tickets":[]}, le résultat est [].
  • Avec neuf tickets, le run refuse avec ParallelItemLimitExceeded avant le premier appel du groupe.
  • Avec une valeur non textuelle dans la liste, l'entrée est refusée.

Le guide des tests métier fournit un fichier de tests exécutable pour ce programme, avec les assertions de succès et de refus.

4. Conserver un point de reprise​

touba run batch.air.json \
--entry strategy:examples.parallel_batch/Run \
--inputs-json '{"tickets":["T-3","T-1"]}' \
--parallel-checkpoint-out progress.json \
--output result
touba run batch.air.json \
--entry strategy:examples.parallel_batch/Run \
--parallel-resume-checkpoint progress.json \
--output result

La seconde commande retrouve les résultats terminés sans rappeler les cibles. Conservez ce checkpoint comme une donnée privée : il peut contenir arguments et résultats métier. Ne modifiez pas son identité pour forcer la reprise d'un programme incompatible.

Passer à des agents ou des tools​

La cible peut devenir une skill, un agent ou un tool avec une signature de sortie explicite. Ajoutez ses autorisations et ses dépendances réelles ; le parallélisme ne les fournit pas. Le guide multi-agents montre cette composition, et le guide parallèle explique budgets, erreurs, mémoire partagée et pauses humaines.