Ce produit n'est pas pris en charge par le site Datadog que vous avez sélectionné. ().

Aperçu

L’observabilité LLM de Datadog peut automatiquement tracer et annoter les appels aux frameworks et bibliothèques LLM pris en charge via diverses intégrations LLM. Lorsque vous exécutez votre application LLM avec le SDK d’observabilité LLM, ces intégrations LLM sont activées par défaut et fournissent des traces et une observabilité prêtes à l’emploi, sans que vous ayez à modifier votre code.

L'instrumentation automatique fonctionne pour les appels aux frameworks et bibliothèques pris en charge. Pour tracer d'autres appels (par exemple : appels API, requêtes de base de données, fonctions internes), consultez la référence du SDK d'observabilité LLM pour savoir comment ajouter une instrumentation manuelle.

Frameworks et bibliothèques pris en charge

FrameworkVersions prises en chargeVersion du traceur
Amazon Bedrock>= 1.31.57>= 2.9.0
Amazon Bedrock Agents>= 1.38.26>= 3.10.0
Anthropic>= 0.28.0>= 2.10.0
CrewAI>= 0.105.0>= 3.5.0
Google ADK>= 1.0.0>= 3.15.0
Google GenAI>= 1.21.1>= 3.11.0
LangChain>= 0.0.192>= 2.9.0
LangGraph>= 0.2.23>= 3.10.1
LiteLLM>= 1.70.0>= 3.9.0
MCP>= 1.10.0>= 3.11.0
OpenAI, Azure OpenAI>= 0.26.5>= 2.9.0
OpenAI Agents>= 0.0.2>= 3.5.0
Pydantic AI>= 0.3.0>= 3.11.0
Strands Agents>= 1.11.0n’importe quelle
Vertex AI>= 1.71.1>= 2.18.0
FrameworkVersions prises en chargeVersion du traceur
Amazon Bedrock>= 3.422.0>= 5.35.0 (CJS), >=5.35.0 (ESM)
Anthropic>= 0.14.0>= 5.71.0 (CJS), >=5.71.0 (ESM)
LangChain>= 0.1.0>= 5.32.0 (CJS), >=5.38.0 (ESM)
OpenAI, Azure OpenAI>= 3.0.0>= 4.49.0, >= 5.25.0 (CJS), >= 5.38.0 (ESM)
Vercel AI SDK>=4.0.0>= 5.63.0 (CJS), >=5.63.0 (ESM)
VertexAI>= 1.0.0>= 5.44.0 (CJS), >=5.44.0 (ESM)
Google GenAI>= 1.19.0>= 5.81.0 (CJS), >=5.81.0 (ESM)

L’instrumentation automatique pour les projets ESM est prise en charge à partir de dd-trace@>=5.38.0. Pour activer l’instrumentation automatique dans vos projets ESM, exécutez votre application avec l’option Node suivante :

--import dd-trace/register.js

Pour la configuration en ligne de commande, utilisez l’option suivante :

--import dd-trace/initialize.mjs
# or
--loader dd-trace/initialize.mjs
Dépannage : Chargeur personnalisé pour incompatibilité de module

S’il y a des erreurs lors du lancement de votre application en utilisant cette option, il s’agit probablement d’une incompatibilité de module. Vous pouvez créer votre propre fichier de hook avec le module et le fichier en question exclus :

// hook.mjs

import { register } from 'node:module';

register('import-in-the-middle/hook.mjs', import.meta.url, {
  parentURL: import.meta.url,
  data: { exclude: [
    /langsmith/,
    /openai\/_shims/,
    /openai\/resources\/chat\/completions\/messages/,
    // Add any other modules you want to exclude
  ]}
});

Pour utiliser ce chargeur personnalisé, exécutez votre application avec l’option Node suivante :

--import ./hook.mjs

Pour utiliser les intégrations LLM Observability dans les applications empaquetées (esbuild, Webpack), vous devez exclure les modules de ces intégrations de l’empaquetage.

esbuild

Si vous utilisez esbuild, consultez L’empaquetage avec le traceur Node.js.

Webpack

Pour Webpack, spécifiez l’intégration correspondante dans la section externals de la configuration webpack :

// webpack.config.js
module.exports = {
  resolve: {
    fallback: {
      graphql: false,
    }
  },
  externals: {
    openai: 'openai'
  }
}

Initialisez correctement le traceur dans votre application pour garantir que l’auto-instrumentation fonctionne correctement. Si vous utilisez TypeScript ou ESM pour votre application Next.js, initialisez le traceur dans un fichier instrumentation.{ts/js} comme suit, en spécifiant vos options de configuration en tant que variables d’environnement :

// instrumentation.ts
export async function register() {
  if (process.env.NEXT_RUNTIME === 'nodejs') {
    const initializeImportName = 'dd-trace/initialize.mjs';
    await import(/* webpackIgnore: true */ initializeImportName as 'dd-trace/initialize.mjs')
  }

  // ...
}

Sinon, pour les applications Next.js en CommonJS, vous pouvez utiliser la fonction init directement :

// instrumentation.js
const tracer = require('dd-trace')

function register () {
  if (process.env.NEXT_RUNTIME === 'nodejs') {
    tracer.init({}); // specify options here or they will be read from environment variables
  }

  // ...
}

module.exports = register;

Ensuite, assurez-vous de spécifier dd-trace et toutes les autres intégrations prises en charge dans serverExternalPackages dans votre fichier next.config.{ts/js} :

// next.config.ts
module.exports = {
  serverExternalPackages: ['dd-trace', 'openai'], // add any other supported integrations here to be auto-instrumented
}
FrameworkVersions prises en chargeVersion du traceur
OpenAI, Azure OpenAI>= 3.0.0>= 1.59.0
Datadog LLM Observability prend également en charge tout cadre qui émet nativement des spans conformes à la convention sémantique OpenTelemetry GenAI v1.37+, sans nécessiter le traceur Datadog. Voir Instrumentation OpenTelemetry pour plus de détails.

Intégrations LLM

Les intégrations LLM de Datadog capturent la latence, les erreurs, les paramètres d’entrée, les messages d’entrée et de sortie, ainsi que l’utilisation des tokens (lorsqu’elle est disponible) pour les appels tracés.

L’intégration Amazon Bedrock fournit une instrumentation automatique pour les appels du modèle de chat du SDK Python d’Amazon Bedrock Runtime (utilisant Boto3/Botocore).

Méthodes tracées

L’intégration Amazon Bedrock instrumente les méthodes suivantes :

L'intégration Amazon Bedrock ne prend pas en charge le traçage des appels d'embedding.

L’intégration Amazon Bedrock fournit un traçage automatique pour les appels du modèle de chat du SDK Node.js d’Amazon Bedrock (en utilisant BedrockRuntimeClient).

Méthodes tracées

L’intégration Amazon Bedrock instrumente les méthodes suivantes :

L’intégration des Agents Amazon Bedrock fournit un traçage automatique pour les appels d’invocation d’agent du SDK Python d’Amazon Bedrock Agents (en utilisant Boto3/Botocore).

Méthodes tracées

L’intégration des Agents Amazon Bedrock instrumente les méthodes suivantes :

L'intégration des Agents Amazon Bedrock, par défaut, ne trace que la méthode globale InvokeAgent. Pour activer Pour activer le traçage des étapes intra-agent, vous devez définir enableTrace=True dans les paramètres de requête de InvokeAgent.

L’intégration Anthropic fournit un traçage automatique pour les appels de messages de chat du SDK Python d’Anthropic .

Méthodes tracées

L’intégration Anthropic instrumente les méthodes suivantes :

L’intégration d’Anthropic fournit un traçage automatique pour les appels de messages de chat de l’SDK Node.js d’Anthropic .

Méthodes tracées

L’intégration Anthropic instrumente les méthodes suivantes :

L’intégration CrewAI trace automatiquement l’exécution des lancements de Crew, y compris les invocations de tâches/agents/outils, effectuées via l’SDK Python de CrewAI .

Méthodes tracées

L’intégration CrewAI instrumente les méthodes suivantes :

L’intégration Google ADK fournit un traçage automatique pour les exécutions d’agents, les appels d’outils et les exécutions de code effectuées via l’SDK Python de Google ADK .

Méthodes tracées

L’intégration Google ADK instrumente les méthodes suivantes :

Les méthodes run_live et run_async sont toutes deux prises en charge.

L’intégration de Google GenAI trace automatiquement les méthodes dans le SDK Python de Google GenAI .

Remarque : Le SDK Python de Google GenAI succède au SDK Google GenerativeAI et expose à la fois l’API développeur Gemini et Vertex.

Méthodes tracées

L’intégration de Google GenAI instrumente les méthodes suivantes :

  • Génération de contenu (y compris les appels en streaming) :
    • models.generate_content() (Capture également chat.send_message())
    • aio.models.generate_content() (Capture également aio.chat.send_message())
  • Intégration de contenu -models.embed_content() -aio.models.embed_content()

L’intégration de Google GenAI trace automatiquement les méthodes dans le SDK Node.js de Google GenAI en instrumentant le @google/genai package.

Remarque : Le SDK Node.js de Google GenAI succède au SDK Google GenerativeAI et expose à la fois l’API développeur Gemini et Vertex.

Méthodes tracées

L’intégration de Google GenAI instrumente les méthodes suivantes :

L’intégration LangChain fournit un traçage automatique pour le SDK Python de LangChain, le modèle LLM, et les appels de chaîne.

Méthodes tracées

L’intégration LangChain instrumente les méthodes suivantes :

  • LLMs :

    • llm.invoke(), llm.ainvoke()
    • llm.stream(), llm.astream()
  • Modèles de chat

    • chat_model.invoke(), chat_model.ainvoke()
    • chat_model.stream(), chat_model.astream()
  • Chaînes/LCEL

    • chain.invoke(), chain.ainvoke()
    • chain.batch(), chain.abatch()
    • chain.stream(), chain.astream()
  • Embeddings

    • OpenAI : OpenAIEmbeddings.embed_documents(), OpenAIEmbeddings.embed_query()
  • Outils

    • BaseTool.invoke(), BaseTool.ainvoke()
  • Récupération

    • langchain_community.<vectorstore>.similarity_search()
    • langchain_pinecone.similarity_search()
  • Gabarit de prompt

    • BasePromptTemplate.invoke(), BasePromptTemplate.ainvoke()
    Pour de meilleurs résultats, assignez des modèles à des variables avec des noms significatifs. L'instrumentation automatique utilise ces noms pour identifier les invites.
    # "translation_template" will be used to identify the template in Datadog
    translation_template = PromptTemplate.from_template("Translate {text} to {language}")
    chain = translation_template | llm
    

L’intégration LangChain fournit un traçage automatique pour le SDK LLM de LangChain Node.js, le modèle de chat, la chaîne et les appels d’embeddings OpenAI.

Méthodes tracées

L’intégration LangChain instrumente les méthodes suivantes :

L’intégration LangGraph trace automatiquement les invocations Pregel/CompiledGraph et RunnableSeq (node) effectuées via le SDK LangGraph Python.

Méthodes tracées

L’intégration LangGraph instrumente les versions synchrones et asynchrones des méthodes suivantes :

L’intégration LiteLLM fournit un traçage automatique pour le SDK LiteLLM Python et les méthodes de routeur de serveur proxy.

Méthodes tracées

L’intégration LiteLLM instrumente les méthodes suivantes :

  • Chat Completions (y compris les appels en streaming) :
    • litellm.completion
    • litellm.acompletion
  • Completions (y compris les appels en streaming) :
    • litellm.text_completion
    • litellm.atext_completion
  • Chat Completions de routeur (y compris les appels en streaming) :
    • router.Router.completion
    • router.Router.acompletion
  • Completions de routeur (y compris les appels en streaming) :
    • router.Router.text_completion
    • router.Router.atext_completion

L’intégration du Protocole de Contexte de Modèle (MCP) instrumente les appels d’outils client et serveur dans le SDK MCP.

Méthodes tracées

L’intégration MCP instrumente les méthodes suivantes :

L’intégration OpenAI fournit un traçage automatique pour les points de terminaison de complétions et de complétions de chat du SDK Python OpenAI vers OpenAI et Azure OpenAI.

Méthodes tracées

L’intégration OpenAI instrumente les méthodes suivantes, y compris les appels en continu :

  • Complétions :
    • OpenAI().completions.create(), AzureOpenAI().completions.create()
    • AsyncOpenAI().completions.create(), AsyncAzureOpenAI().completions.create()
  • Complétions de chat :
    • OpenAI().chat.completions.create(), AzureOpenAI().chat.completions.create()
    • AsyncOpenAI().chat.completions.create(), AsyncAzureOpenAI().chat.completions.create()
  • Réponses :
    • OpenAI().responses.create()
    • AsyncOpenAI().responses.create()
    • OpenAI().responses.parse() (à partir de ddtrace==3.17.0)
    • AsyncOpenAI().responses.parse() (à partir de ddtrace==3.17.0)
  • Appels effectués à DeepSeek via le SDK Python OpenAI (à partir de ddtrace==3.1.0)

L’intégration OpenAI fournit un traçage automatique pour les points de terminaison de complétion, de chat et d’embeddings du SDK Node.js OpenAI vers OpenAI et Azure OpenAI.

Méthodes tracées

L’intégration OpenAI instrumente les méthodes suivantes, y compris les appels en continu :

L’intégration OpenAI fournit un traçage automatique pour les points de terminaison de complétion, de complétion de chat, d’embeddings et de réponses du SDK Java OpenAI vers OpenAI et Azure OpenAI.

Méthodes tracées

L’intégration OpenAI instrumente les méthodes suivantes sur OpenAIClient, y compris les appels en continu :

  • Complétions :
    • openAiClient.completions().create()
    • openAiClient.completions().createStreaming()
    • openAiClient.async().completions().create()
    • openAiClient.async().completions().createStreaming()
  • Complétions de chat :
    • openAiClient.chat().completions().create()
    • openAiClient.chat().completions().createStreaming()
    • openAiClient.async().chat().completions().create()
    • openAiClient.async().chat().completions().createStreaming()
  • Embeddings :
    • openAiClient.embeddings().create()
    • openAiClient.async().embeddings().create()
  • Réponses :
    • openAiClient.responses().create()
    • openAiClient.responses().createStreaming()
    • openAiClient.async().responses().create()
    • openAiClient.async().responses().createStreaming()

Le fournisseur (OpenAI vs Azure OpenAI) est automatiquement détecté en fonction du baseUrl configuré dans ClientOptions. Toutes les méthodes prennent en charge à la fois les variantes bloquantes et asynchrones (basées sur CompletableFuture).

L’intégration OpenAI Agents convertit le traçage intégré du OpenAI Agents SDK en Le format LLM Observability et l’envoi au produit LLM Observability de Datadog s’effectuent en ajoutant un processeur de trace Datadog.

Les opérations suivantes sont prises en charge :

L’intégration Pydantic AI instrumente les invocations d’agents et les appels d’outils effectués en utilisant le cadre d’agents Pydantic AI.

Méthodes tracées

L’intégration Pydantic AI instrumente les méthodes suivantes :

  • Invocations d’agents (y compris tous les outils ou ensembles d’outils associés à l’agent) :
    • agent.Agent.iter (trace également agent.Agent.run et agent.Agent.run_sync)
    • agent.Agent.run_stream

À partir de v1.11.0, Strands Agents émet nativement des spans conformes aux conventions sémantiques OpenTelemetry GenAI semantic conventions v1.37, que Datadog LLM Observability ingère automatiquement sans nécessiter le traceur Datadog.

Pour des instructions de configuration et un exemple complet, voir Instrumentation OpenTelemetry — Utilisation des Strands Agents.

L’intégration Vercel AI SDK trace automatiquement la génération de texte et d’objets, les embeddings et les appels d’outils en interceptant les spans OpenTelemetry créés par le cœur sous-jacent Vercel AI SDK et en les convertissant en spans Datadog LLM Observability.

Méthodes tracées

Télémétrie du Vercel AI Core SDK

Cette intégration applique automatiquement les correctifs au traceur passé dans chacune des méthodes tracées sous l’option experimental_telemetry. Si aucune configuration experimental_telemetry n’est passée, l’intégration permet d’envoyer tout de même des spans LLM Observability.

require('dd-trace').init({
  llmobs: {
    mlApp: 'my-ml-app',
  }
});

const { generateText } = require('ai');
const { openai } = require('@ai-sdk/openai');

async function main () {
  let result = await generateText({
    model: openai('gpt-4o'),
    ...
    experimental_telemetry: {
      isEnabled: true,
      tracer: someTracerProvider.getTracer('ai'), // this tracer will be patched to format and send created spans to Datadog LLM Observability
    }
  });

  result = await generateText({
    model: openai('gpt-4o'),
    ...
  }); // since no tracer is passed in, the integration will enable it to still send LLM Observability spans
}

Remarque : Si experimental_telemetry.isEnabled est défini sur false, l’intégration ne l’active pas et n’envoie pas de spans LLM Observability.

L’intégration Vertex AI trace automatiquement la génération de contenu et les appels de messages de chat effectués via le SDK Python de Vertex AI de Google.

Méthodes tracées

L’intégration Vertex AI instrumente les méthodes suivantes :

  • Génération de contenu (y compris les appels en streaming) :

    • model.generate_content()
    • model.generate_content_async()
  • Messages de chat (y compris les appels en streaming) :

    • chat.send_message()
    • chat.send_message_async()

L’intégration Vertex AI trace automatiquement la génération de contenu et les appels de messages de chat effectués via le SDK Node.js de Vertex AI de Google.

Méthodes tracées

L’intégration Vertex AI instrumente les méthodes suivantes :

Activer ou désactiver les intégrations LLM

Toutes les intégrations sont activées par défaut.

Désactiver toutes les intégrations LLM

Utilisez la configuration du SDK en code et spécifiez integrations_enabled=False.

Exemple : Configuration du SDK en code qui désactive toutes les intégrations LLM

from ddtrace.llmobs import LLMObs

LLMObs.enable(
  ml_app="<YOUR_ML_APP_NAME>",
  api_key="<YOUR_DATADOG_API_KEY>",
  integrations_enabled=False
)

Utilisez la configuration du SDK en code et spécifiez plugins: false.

Exemple : Configuration du SDK en code qui désactive toutes les intégrations LLM

const tracer = require('dd-trace').init({
  llmobs: { ... },
  plugins: false
});
const { llmobs } = tracer;

Activez uniquement les intégrations LLM spécifiques

  1. Utilisez la configuration du SDK en code et désactivez toutes les intégrations avec integrations_enabled=False.
  2. Activez manuellement certaines intégrations avec ddtrace.patch().

Exemple : Configuration du SDK en code qui active uniquement l’intégration LangChain

from ddtrace import patch
from ddtrace.llmobs import LLMObs

LLMObs.enable(
  ml_app="<YOUR_ML_APP_NAME>",
  api_key="<YOUR_DATADOG_API_KEY>",
  integrations_enabled=False
)

patch(langchain=True)
  1. Utilisez la configuration du SDK en code et désactivez toutes les intégrations avec plugins: false.
  2. Activez manuellement certaines intégrations avec use().

Exemple : Configuration du SDK en code qui active uniquement l’intégration LangChain

const tracer = require('dd-trace').init({
  llmobs: { ... },
  plugins: false
});
const { llmobs } = tracer;
tracer.use('langchain', true);

Pour un contrôle plus spécifique sur le patching de la bibliothèque et l’intégration qui démarre le span, vous pouvez définir les variables d’environnement suivantes :

DD_TRACE_DISABLED_PLUGINS
Une chaîne de noms d’intégration séparés par des virgules qui sont automatiquement désactivés lors de l’initialisation du tracer.
Exemple : DD_TRACE_DISABLED_PLUGINS=openai,http
DD_TRACE_DISABLED_INSTRUMENTATIONS
Une chaîne de noms de bibliothèques séparés par des virgules qui ne sont pas patchées lors de l’initialisation du tracer.
Exemple : DD_TRACE_DISABLED_INSTRUMENTATIONS=openai,http

Pour aller plus loin