OPEN SOURCE · AUTO-HÉBERGÉ

La boîte noire de vos agents IA.

Trajekt enregistre chaque étape de chaque run — raisonnement, appels d’outils, entrées et sorties, tokens, latence, coût — pour que, le jour où un agent déraille en production, vous puissiez rejouer exactement ce qui s’est passé.

Commencer
npm i @trajekt-ai/core
BOÎTE NOIRE D’AGENT · NE PAS OUVRIRREC
run_7f3e9a21 · sentry-triage40.6s · $0.162
  1. #2llm.generate
  2. #3sentry.getIssue
  3. #5gitlab.searchCode
  4. #7gitlab.readFile
  5. #9jira.createIssueRETRY ×2
  6. #10llm.generate
  7. #11gitlab.searchCodeREPEAT #5
  8. #13gitlab.searchCodeREPEAT #5
  9. #14llm.generate
  10. #15gitlab.createMergeRequest422
Les steps #11 et #13 répètent #5 avec les mêmes arguments. #15 échoue en 422.

Quand un agent échoue, les logs montrent la dernière erreur. Pas les neuf étapes qui y ont mené.

01 · Rejouer

Qu’a-t-il vraiment fait ?

Parcourez un run comme une timeline. Chaque étape montre le prompt, le raisonnement du modèle, les arguments exacts passés à l’outil et ce qu’il a renvoyé.

#9 jira.createIssue · arguments
{
  "project": "PAY",
  "summary": "NPE in checkout discount",
  "priority": "High"
}
tentatives
  • 1429 Too Many Requests
  • 2429 Too Many Requests
  • 3201 Created · PAY-1432
02 · Diagnostiquer

Pourquoi ce run a-t-il coûté deux fois plus ?

Tokens, latence et coût sont détaillés étape par étape. Relances, appels d’outils répétés et boucles sont signalés sur la timeline : la partie coûteuse saute aux yeux.

coût par step LLM
  • #2$0.009
  • #4$0.013
  • #6$0.018
  • #8$0.025
  • #10$0.024
  • #12$0.028
  • #14$0.046
searchCode répété ×22 relances · 7,3 s d’attente
03 · Comparer

Mon changement de prompt a-t-il tout cassé ?

Mettez deux runs côte à côte, alignés étape par étape. Étapes ajoutées, mauvais outils et résultats différents ressortent, à côté de la configuration qui a changé entre les deux.

A · prompt v1.8.2B · prompt v1.9.0
  • =sentry.getIssuesentry.getIssue
  • =gitlab.searchCodegitlab.searchCode
  • +—gitlab.searchCode
  • +—gitlab.searchCode
  • ≠jira.createIssuejira.createIssue · priority
  • −gitlab.readFile—
  • +—gitlab.createMergeRequest · 422
steps 12 → 16 · coût +100 % · résultat échec

Essayez sur une vraie trace.

Chargez un exemple — ou votre propre export — et rejouez-le étape par étape, boucles, relances et échecs signalés.

Export de trace Langfuse, OTLP/JSON ou résultat du Vercel AI SDK — déposez-le n’importe où sur ce panneau. Il est lu dans votre navigateur par @trajekt-ai/core ; rien n’est envoyé.

BOÎTE NOIRE D’AGENT · REPLAYÉCHEC
sentry-triage · otlp28.0s · ≈$0.112
Steps
17
Appels d’outils
10
Appels répétés
2
Relances
2
Tokens
27 447

#7 et #9 répètent un appel précédent avec les mêmes arguments. 2 relances après un échec. Le run a échoué.

#7 gitlab.searchCodeAppel d’outil
Durée
675ms
Début
+10.1s
Même appel que
#5
ARGUMENTS
{
  "query": "checkout/discount.ts",
  "scope": "blobs"
}

chemin d’outils : sentry.getIssue → gitlab.searchCode ×3 → gitlab.readFile → jira.createIssue → gitlab.createMergeRequest → slack.postMessage

Fichiers d’exemple : otlp-sentry-triage.json · langfuse-support-bot.json · ai-sdk-trip-planner.json

Trois lignes pour votre premier enregistrement.

  1. 01

    Instrumenter

    Branchez n’importe quel exporteur OpenTelemetry sur Trajekt. Les spans qui suivent les conventions sémantiques GenAI ou la télémétrie du Vercel AI SDK sont compris tels quels.

  2. 02

    Enregistrer

    Chaque run devient une trajectoire : étapes, arguments et résultats d’outils, tokens, latence et coût, regroupés par agent et par version.

  3. 03

    Rejouer

    Ouvrez n’importe quel run sur une timeline, comparez-le à un autre et voyez quand une nouvelle version se met à boucler, à échouer ou à coûter plus cher.

// instrumentation.ts — OpenTelemetry standard, rien de propriétaire
import { NodeSDK } from '@opentelemetry/sdk-node';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';

new NodeSDK({
  serviceName: 'sentry-triage',
  traceExporter: new OTLPTraceExporter({
    url: 'http://localhost:3000/v1/traces',
    headers: { Authorization: `Bearer ${process.env.TRAJEKT_API_KEY}` },
  }),
}).start();

// Avec le Vercel AI SDK, activez la télémétrie à chaque appel :
await generateText({
  model, prompt, tools,
  experimental_telemetry: { isEnabled: true, functionId: 'sentry-triage' },
});

Vous avez déjà des traces ? @trajekt-ai/core les lit dans votre propre code et vos tests :

import { normalize, computeMetrics } from '@trajekt-ai/core';

// Un export Langfuse, des spans OTLP/JSON ou un résultat AI SDK
const run = normalize(trace);
const { status, costUsd, redundantToolCalls, retryCount } = computeMetrics(run);
Compatible avecOpenTelemetry · OTLP/HTTP JSON & protobufConventions sémantiques GenAIVercel AI SDKOpenInference · LangChain, LlamaIndexImport Langfuse

Vos traces restent sur votre infrastructure.

Les prompts et les résultats d’outils contiennent souvent des données clients. Trajekt est open source et tourne avec un seul fichier Docker Compose, à côté de vos agents.

Enregistrez votre prochain run.