Traçage des services de proxy
Ce produit n'est pas pris en charge par le
site Datadog que vous avez sélectionné. (
).
Présentation
Comme les applications traditionnelles, une application LLM peut s’étendre sur plusieurs microservices. Avec Agent Observability, si l’un de ces services est un LLM proxy ou gateway, vous pouvez tracer les appels LLM dans une trace complète de bout en bout, en capturant le chemin complet de la requête à travers les services.
Activer Agent Observability pour un service de proxy ou gateway
Pour activer Agent Observability pour un service de proxy ou gateway utilisé par plusieurs applications ML, vous pouvez le configurer sans spécifier de nom d’application ML. Définissez plutôt le nom du service. Cela vous permet de filtrer les spans spécifiques à ce service de proxy ou gateway au sein d’Agent Observability.
# proxy.py
from ddtrace.llmobs import LLMObs
LLMObs.enable(service="chat-proxy")
# proxy-specific logic, including guardrails, sensitive data scans, and the LLM call
// proxy.js
const tracer = require('dd-trace').init({
llmobs: true,
service: "chat-proxy"
});
const llmobs = tracer.llmobs;
// proxy-specific logic, including guardrails, sensitive data scans, and the LLM call
Si vous disposez d’un service qui orchestre des applications ML envoyant des requêtes à un LLM proxy ou gateway, activez Agent Observability avec le nom de l’application ML :
# application.py
from ddtrace.llmobs import LLMObs
LLMObs.enable(ml_app="my-ml-app")
import requests
if __name__ == "__main__":
with LLMObs.workflow(name="run-chat"):
# other application-specific logic - (such as RAG steps and parsing)
response = requests.post("http://localhost:8080/chat", json={
# data to pass to the proxy service
})
# other application-specific logic handling the response
// application.js
const tracer = require('dd-trace').init({
llmobs: {
mlApp: 'my-ml-app'
}
});
const llmobs = tracer.llmobs;
const axios = require('axios');
async function main () {
llmobs.trace({ name: 'run-chat', kind: 'workflow' }, async () => {
// other application-specific logic - (such as RAG steps and parsing)
// wrap the proxy call in a task span
const response = await axios.post('http://localhost:8080/chat', {
// data to pass to the proxy service
});
// other application-specific logic handling the response
});
}
main();
Lorsque l’application LLM effectue une requête vers le service de proxy ou gateway, le SDK Agent Observability propage automatiquement le nom de l’application ML à partir de l’application LLM d’origine. Le nom de l’application ML propagé prévaut sur le nom de l’application ML spécifié dans le service de proxy ou gateway.
Observer les services LLM gateway et proxy
Toutes les requêtes vers le service de proxy ou gateway
Pour afficher toutes les requêtes vers le service de proxy en tant que spans de haut niveau, enveloppez le point d’entrée de l’endpoint du service de proxy dans un span workflow :
# proxy.py
from ddtrace.llmobs import LLMObs
LLMObs.enable(service="chat-proxy")
@app.route('/chat')
def chat():
with LLMObs.workflow(name="chat-proxy-entrypoint"):
# proxy-specific logic, including guardrails, sensitive data scans, and the LLM call
// proxy.js
const tracer = require('dd-trace').init({
llmobs: true,
service: "chat-proxy"
});
const llmobs = tracer.llmobs;
app.post('/chat', async (req, res) => {
await llmobs.trace({ name: 'chat-proxy-entrypoint', kind: 'workflow' }, async () => {
// proxy-specific logic, including guardrails, sensitive data scans, and the LLM call
res.send("Hello, world!");
});
});
Toutes les requêtes vers le service de proxy peuvent ensuite être visualisées en tant que spans de haut niveau dans la vue de trace LLM :
- Sur la page LLM trace, sélectionnez All Applications dans le menu déroulant en haut à gauche.
- Passez à la vue All Spans dans le menu déroulant en haut à droite.
- Filtrez la liste par le tag
service et le nom du workflow.
Vous pouvez également filtrer le workflow Span Name en utilisant la facette sur le côté gauche de la vue de trace :
Tous les appels LLM effectués au sein du service de proxy ou gateway
Pour ne surveiller que les appels LLM effectués au sein d’un service de proxy ou gateway, filtrez par les spans llm dans la vue des traces :
Vous pouvez également filtrer la facette Span Kind sur le côté gauche de la vue des traces :
Filtrer par une application ML spécifique et observer les modèles et les tendances
Vous pouvez appliquer les deux processus de filtrage (appels de haut niveau vers le service de proxy et appels LLM effectués au sein du service de proxy ou gateway) à une application ML spécifique pour visualiser son interaction avec le service de proxy ou gateway.
- Dans le menu déroulant en haut à gauche, sélectionnez l’application ML souhaitée.
- Pour voir toutes les traces de l’application ML, passez de la vue All Spans à la vue Traces dans le menu déroulant en haut à droite.
- Pour voir une série temporelle des traces de l’application ML, revenez au filtre All Spans dans le menu déroulant en haut à droite et, à côté de « Visualize as », sélectionnez Timeseries.
Observer l’utilisation de bout en bout des applications LLM effectuant des appels vers un service de proxy ou gateway
Pour observer l’utilisation complète de bout en bout d’une application LLM qui effectue des appels vers un service de proxy ou gateway, vous pouvez filtrer les traces avec ce nom d’application ML :
- Dans la LLM trace view, sélectionnez le nom de l’application ML souhaitée dans le menu déroulant en haut à gauche.
- Passez à la vue Traces dans le menu déroulant en haut à droite.