Ce que vous allez apprendre
- Initialiser Weave pour le traçage d’agent avec
weave.init(). - Ouvrir une conversation et un tour de conversation avec
start_conversation/startConversationetstart_turn/startTurn. - Encapsuler les appels LLM avec
start_llm/startLLMet enregistrer l’utilisation. - Encapsuler les exécutions d’outil avec
start_tool/startToolet enregistrer les résultats. - Enregistrer l’utilisation complète des jetons et un modèle avec tarification afin que le nombre de jetons et le coût soient affichés.
- Afficher la conversation, les tours de conversation et les appels d’outil obtenus dans la vue Agents.
Fonctionnement du SDK Weave avec les agents
En Python, les quatre fonctions s’utilisent comme des gestionnaires de contexte (
with weave.start_*(...) as obj:). À la fin du contexte, elles ferment le span et effectuent le vidage des attributs, y compris en cas d’exception. En TypeScript, appelez .end() sur chaque objet renvoyé. Utilisez try { ... } finally { obj.end(); } pour garantir le nettoyage en cas d’exception.
D’autres attributs de conventions sémantiques GenAI, tels que gen_ai.usage.* et gen_ai.agent.name, permettent un rendu supplémentaire, mais ils sont facultatifs.
Prérequis
- Un compte W&B et une clé API.
- Une clé API OpenAI.
- Python 3.10+ (pour les exemples en Python).
- Node.js 18+ (les exemples TypeScript nécessitent la fonction
fetchintégrée).
Installer les paquets
Initialiser Weave
weave.init() s’authentifie auprès de W&B et configure l’exporteur OTel qui envoie les spans d’agent vers la vue Agents. Si le projet n’existe pas dans votre équipe, Weave le crée lors du premier envoi de données.
Définir un outil
Exécuter un agent tracé sur plusieurs tours de conversation
- Ouvre un span
chatet laisse le LLM choisir s’il doit appeler l’outil. - Si le LLM demande à utiliser l’outil, ouvre un span
execute_toolautour de l’appel et renvoie le résultat au LLM. - Ouvre un second span
chatpour produire la réponse finale.
Enregistrer l’utilisation des jetons et le coût
chat inclut une utilisation des jetons et un ID du modèle. Weave affiche le nombre de jetons à partir de l’utilisation et calcule le coût à partir de l’utilisation et de l’ID du modèle. Ainsi, une valeur incomplète ou non tarifable affiche 0 in / 0 out tokens ou Cost -, même lorsque le reste de la trace semble correct. record(...) définit ces champs (ainsi que output_messages, response_id, reasoning, etc.) en un seul appel. Seuls les champs que vous transmettez sont pris en compte.
Deux éléments doivent être corrects pour que le coût s’affiche :
- Utilisation complète.
input_tokenscorrespond au total des jetons en entrée, y compris ceux mis en cache. Weave facture les lectures et les écritures du cache à leurs propres tarifs et les soustrait du total d’entrée.cache_read_input_tokensetcache_creation_input_tokensdoivent donc être signalés en plus d’un totalinput_tokensqui les inclut. Pour les providers avec mise en cache des prompts (par exemple, Anthropic), les jetons mis en cache représentent souvent la majeure partie de l’entrée. Les omettre fait donc apparaître l’utilisation et le coût comme quasiment nuls. - Un ID du modèle tarifable. Le coût repose sur une recherche basée sur le modèle. Weave privilégie
response_model(le modèle exact servi par le provider) et se rabat sur lemodelque vous avez transmis àstart_llm. Un alias tel queopusousonnetn’est pas tarifable et afficheCost -; transmettez donc l’ID exact renvoyé dans la réponse (resp.model) commeresponse_model.
prompt_tokens, donc l’exemple ci-dessus s’applique directement. Anthropic signale les jetons mis en cache séparément de input_tokens ; ajoutez-les donc au total sur lequel Weave applique la tarification :
Voir les traces de votre agent dans la vue Agents
weave.init() s’exécute, il affiche un lien vers votre project dans lequel vous pouvez voir :
- Une ligne dans l’onglet Agents pour
research-bot. - Une conversation contenant trois tours de conversation.
- Chaque tour de conversation (
invoke_agent) avec deux spanschatet un spanexecute_toolimbriqué. - Le nombre de jetons, la latence, le modèle et l’échange complet de messages pour chaque
chat.
Lien vers une conversation depuis votre application
weave.init() renvoie un client qui contient entity et project, et start_conversation expose conversation_id.
Prochaines étapes
- Découvrez comment tracer des agents avec Weave, ainsi que les fonctionnalités et options disponibles dans le SDK Weave.
- Voir Choisir une intégration d’agent pour découvrir d’autres options d’intégration de Weave avec vos agents.