Parallélisme borné
Utilisez parallel pour traiter une liste d'entrées indépendantes. Le
programme déclare la cible, les arguments et les bornes ; le runtime organise
les branches sans donner plus de droits à leurs agents ou tools.
Forme d'un groupe
parallel ProcessTicket
each ticket in tickets
with ticket as ticket
max_concurrency 4
max_items 32
into results
Ce fragment se place dans le do d'une skill ou d'une stratégie, avec une
cible déclarée dans uses et une liste typée disponible. La cible peut être
une function, une skill, une stratégie, un agent ou un tool. Sa signature de
sortie doit être explicite : une sortie R produit une List of R.
Une fonction pure peut être la cible, mais ne contient pas cette orchestration.
Deux bornes différentes
| Borne | Effet |
|---|---|
max_items | Refuse le groupe avant son premier appel si la liste est trop longue. |
max_concurrency | Limite les branches exécutées simultanément. |
| Limites hôte | Peuvent resserrer la concurrence, les branches vivantes, les appels externes et la profondeur. |
| Budgets du run | Restent communs aux branches et aux appels descendants. |
Les deux bornes source sont des entiers positifs et
max_concurrency <= max_items. Il n'y a pas de troncature silencieuse.
Une liste vide produit une liste vide sans appeler la cible.
Résultats, erreurs et effets
Le résultat respecte l'ordre d'entrée, pas l'ordre de fin des branches. La jointure attend toutes les branches : aucun résultat partiel n'est publié comme un succès. Une erreur arrête les nouveaux départs et demande l'arrêt coopératif des branches actives. Elle n'annule pas rétroactivement un effet externe déjà engagé.
Les variables et observations sont isolées par invocation. Les accès aux mémoires communes restent contrôlés et les écritures sont sérialisées par des verrous du runtime ; cela ne remplace pas les transactions d'un backend partagé.
Pauses et reprise
Une validation humaine suspend le groupe de manière coordonnée. Le checkpoint conserve les continuations, résultats terminés et budgets consommés. La reprise revérifie l'autorité et ne redispatche pas les branches terminées.
Une question ask sans réponse suspend le groupe avec user_input_pending.
L’hôte lit pendingInteractions (JavaScript) ou pending_interactions (Python),
conserve le checkpoint parallèle et fournit une réponse par référence
avec userInputs / user_inputs. La reprise conserve les branches terminées
et les budgets consommés. Chaque réponse concerne une seule occurrence.