Bug de streaming de Google GenAI surcompte les appels d'outils dans le SDK JavaScript de S

Lorsqu'un modèle Google GenAI diffuse un appel d'outil pour contrôler une lumière ou une autre fonction, le SDK JavaScript de Sentry enregistrait cette action unique deux fois dans ses traces de performance. Un appel d'outil en entrée, deux entrées en sortie. Le problème est apparu dans l'attribut gen_ai.response.tool_calls, qui devrait lister chaque appel d'outil une seule fois. Au lieu de cela, il répétait le même appel : une fois avec les paramètres sous args, une autre sous arguments, entraînant une télémétrie dupliquée et une confusion potentielle pour les développeurs déboguant des flux de travail pilotés par l'IA.
Origine du bug
Le bug provient d'une logique redondante dans l'instrumentation de streaming de Sentry. La fonction handleCandidateContent dans packages/server-utils/src/ai/google-genai/streaming.ts poussait les appels d'outils vers la trace depuis deux sources : d'abord, elle étendait chunk.functionCalls, puis elle itérait sur candidate.content.parts pour pousser chaque functionCall trouvé. Ces chemins ne sont pas distincts. En réalité, chunk.functionCalls est un accesseur qui lit le même tableau candidates[].content.parts ciblé par le second push. La première entrée conserve la forme native du SDK {id, name, args}, tandis que la seconde la reformate en {type, id, name, arguments}. Résultat : deux vues du même appel, toutes deux enregistrées.
Comparaison avec le mode non-streaming
L'instrumentation non-streaming évite entièrement cette duplication. Elle lit les appels d'outils une seule fois depuis response.functionCalls et émet une seule entrée par appel, maintenant la cohérence à la fois en nombre et dans les noms des clés. Ainsi, les chemins streaming et non-streaming divergent sur la même réponse, sapant la fiabilité des traces pour les développeurs s'appuyant sur une télémétrie IA cohérente.
La solution
La solution est simple : considérer chunk.functionCalls comme la source unique de vérité. En supprimant le second push redondant, le SDK garantit qu'un appel d'outil du modèle produit une seule entrée dans la trace. La correction aligne le comportement du streaming sur celui du non-streaming, restaurant une télémétrie prévisible pour les applications intelligentes surveillées par Sentry. Une pull request sur GitHub met en œuvre ce changement, empêchant le double comptage sans modifier le modèle de données sous-jacent.
Pourquoi est-ce important ?
Un comptage erroné des appels d'outils peut fausser l'analyse des performances, gonfler les estimations de coûts liés à l'utilisation des fonctions IA, ou induire en erreur les ingénieurs lors du dépannage des flux de travail IA. Pour les équipes utilisant Sentry pour surveiller les intégrations Google GenAI, ce bug a introduit du bruit dans les traces susceptible d'obscurcir les problèmes réels ou de fausser les métriques. La correction rétablit la précision de la télémétrie, permettant aux développeurs de faire confiance à leurs données lors du débogage des fonctionnalités pilotées par l'IA. Elle souligne également l'importance d'une instrumentation cohérente entre les chemins streaming et non-streaming, une leçon pour les mainteneurs de SDK concevant des outils d'observabilité pour l'IA générative.
Source : DEV Community. Synthèse éditoriale assistée par IA — TechnoExpress.

