@weave.op afin que Weave capture leurs entrées, les valeurs de sortie produites et la hiérarchie complète des appels imbriqués. Utilisez cette approche si votre code comporte des chemins en streaming ou à évaluation paresseuse dont vous souhaitez inspecter les sorties dans l’interface Weights & Biases, aux côtés de vos autres traces.
- Python
- TypeScript
deeply_nested_generator, nested_generator et inner selon leur hiérarchie.
Consommer les générateurs
Cette section explique pourquoi vous devez consommer les générateurs pour que Weave enregistre leurs sorties, et quels modes de consommation fonctionnent. Weave ne capture les sorties d’un générateur qu’une fois celui-ci entièrement consommé. Pour consommer le générateur, parcourez-le (par exemple, aveclist(), une boucle for ou des appels à next() jusqu’à épuisement). Il en va de même pour les générateurs asynchrones consommés avec async for ou un mécanisme équivalent.
Pour plus d’informations sur la décoration des fonctions et des méthodes avec @weave.op, voir Créer des appels.
Accumuler les valeurs produites dans une seule trace
Si vous souhaitez que Weave enregistre un résultat combiné (comme une chaîne concaténée ou une liste) plutôt que la séquence brute des valeurs produites, utilisez un accumulateur. Le paramètreaccumulator de weave.op vous permet de personnaliser la manière dont les valeurs produites par les fonctions génératrices sont combinées, par exemple pour concaténer en une seule chaîne des jetons de texte transmis en streaming. L’accumulateur est une fonction à deux arguments que Weave appelle une fois par valeur produite, afin de construire le résultat de manière incrémentielle.
Le paramètre
accumulator n’est pas disponible pour TypeScript.