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 :
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
ParallelItemLimitExceededavant 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.