Traçage du noyau sémantique
Semantic Kernel est un SDK open source léger qui sert de middleware d’IA pour C#, Python et Java. Il abstrait les interactions avec les modèles et compose des prompts, des fonctions et des plugins entre les fournisseurs.
MLflow Tracing s'intègre à Semantic Kernel pour instrumenter automatiquement les fonctions de rappel du noyau et capturer des traces d'exécution complètes. Aucune modification de la logique de votre application n'est requise — activez-la avec mlflow.semantic_kernel.autolog.
L'intégration fournit une vue complète de :
- Prompts et réponses de complétion
- Historique de conversation et messages
- Latences
- Nom du modèle et fournisseur
- Fonctions du noyau et extensions
- Variables de Template et arguments
- Informations sur l'utilisation des jetons
- Toutes les exceptions en cas de levée
Le streaming n’est pas actuellement tracé.
Prérequis
Pour utiliser MLflow Tracing avec Semantic Kernel, vous devez installer MLflow et les packages Semantic Kernel pertinents.
- Development
- Production
Pour les environnements de développement, installez le package MLflow complet avec les extras Databricks et Semantic Kernel :
pip install --upgrade "mlflow[databricks]>=3.1" semantic_kernel openai
Le package mlflow[databricks] complet inclut toutes les fonctionnalités pour le développement local et l’expérimentation sur Databricks.
Pour les déploiements de production, installez mlflow-tracing et Semantic Kernel :
pip install --upgrade mlflow-tracing semantic_kernel openai
Le mlflow-tracing package est optimisé pour une utilisation en production.
MLflow 3 est recommandé pour une expérience de suivi optimale.
Avant d'exécuter les exemples, vous devrez configurer votre environnement :
Pour les utilisateurs en dehors des notebooks Databricks : Définissez vos variables d'environnement Databricks :
export DATABRICKS_HOST="https://your-workspace.cloud.databricks.com"
export DATABRICKS_TOKEN="your-personal-access-token"
Pour les utilisateurs dans les Notebooks Databricks : ces identifiants sont définis automatiquement pour vous.
Clés API : Assurez-vous que les clés API de votre fournisseur LLM sont configurées. Pour les environnements de production, utilisez AI Gateway ou les secrets Databricks au lieu de valeurs codées en dur pour une gestion sécurisée des clés API.
export OPENAI_API_KEY="your-openai-api-key"
# Add other provider keys as needed
Exemple d'utilisation
Le noyau sémantique utilise principalement des modèles asynchrones. Dans les Notebooks, vous pouvez await directement ; dans les scripts, encapsulez avec asyncio.run().
import mlflow
mlflow.semantic_kernel.autolog()
Sur les clusters de compute Serverless, la journalisation automatique pour les cadres de traçage genAI n'est pas activée automatiquement. Vous devez activer explicitement l'autologging en appelant la fonction mlflow.<library>.autolog() appropriée pour les intégrations spécifiques que vous souhaitez suivre.
import openai
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion
openai_client = openai.AsyncOpenAI()
kernel = Kernel()
kernel.add_service(
OpenAIChatCompletion(
service_id="chat-gpt",
ai_model_id="gpt-4o-mini",
async_client=openai_client,
)
)
answer = await kernel.invoke_prompt("Is sushi the best food ever?")
print("AI says:", answer)
Suivi de l'utilisation des jetons
MLflow 3.2.0+ enregistre l'utilisation des jetons par appel LLM et agrège les totaux dans les informations de trace.
import mlflow
last_trace_id = mlflow.get_last_active_trace_id()
trace = mlflow.get_trace(trace_id=last_trace_id)
print(trace.info.token_usage)
for span in trace.data.spans:
usage = span.get_attribute("mlflow.chat.tokenUsage")
if usage:
print(span.name, usage)
Désactiver le suivi automatique
Désactivez le traçage automatique du noyau sémantique avec mlflow.semantic_kernel.autolog(disable=True) ou désactivez tout avec mlflow.autolog(disable=True).