Aller au contenu principal
Version: 1.0.0

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​

BorneEffet
max_itemsRefuse le groupe avant son premier appel si la liste est trop longue.
max_concurrencyLimite les branches exécutées simultanément.
Limites hôtePeuvent resserrer la concurrence, les branches vivantes, les appels externes et la profondeur.
Budgets du runRestent 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.