Débogage et traçage des LLM comme un pro





Image de l’auteur | Toile
# Introduction
Débogage traditionnel avec print()
Ou la journalisation fonctionne, mais elle est lente et maladroite avec les LLM. Phoenix fournit une vue de calendrier de chaque étape, invite et inspection de la réponse, détection d’erreur avec les tentatives, visibilité sur la latence et les coûts, et une compréhension visuelle complète de votre application. Phoenix par Arize AI est un puissant outil d’observabilité et de traçage open source spécialement conçu pour les applications LLM. Il vous aide à surveiller, déboguer et tracer tout ce qui se passe visuellement dans vos pipelines LLM. Dans cet article, nous allons parcourir ce que fait Phoenix et pourquoi il est important, comment intégrer Phoenix à Langchain étape par étape, et comment visualiser les traces dans l’interface utilisateur de Phoenix.
# Qu’est-ce que Phoenix?
Phoenix est un outil d’observabilité et de débogage open-source créé pour les applications de modèle de langue grande. Il capture des données de télémétrie détaillées de vos workflows LLM, y compris les invites, les réponses, la latence, les erreurs et l’utilisation des outils, et présente ces informations dans un tableau de bord intuitif et interactif. Phoenix permet aux développeurs de comprendre profondément comment leurs pipelines LLM se comportent à l’intérieur du système, d’identifier et de déboguer les problèmes avec les sorties rapides, d’analyser les goulots d’étranglement des performances, de surveiller l’utilisation des jetons et les coûts associés, et de retracer les erreurs / la logique de réessayer pendant la phase d’exécution. Il prend en charge des intégrations cohérentes avec des cadres populaires comme Langchain et Llamaindex, et offre également une prise en charge d’Opentelemetry pour des configurations plus personnalisées.
# Configuration étape par étape
// 1. Installation des bibliothèques requises
Assurez-vous d’avoir Python 3.8+ et installer les dépendances:
pip install arize-phoenix langchain langchain-together openinference-instrumentation-langchain langchain-community
// 2. Lancement de Phoenix
Ajoutez cette ligne pour lancer le tableau de bord Phoenix:
import phoenix as px
px.launch_app()
Cela démarre un tableau de bord local à http: // localhost: 6006.
// 3. Construire le pipeline Langchain avec un rappel Phoenix
Comprenons Phoenix à l’aide d’un cas d’utilisation. Nous construisons un simple chatbot alimenté par Langchain. Maintenant, nous voulons:
- Débogue si l’invite fonctionne
- Surveillez la durée du modèle pour répondre
- Structure de la structure, utilisation du modèle et sorties
- Voir tout cela visuellement au lieu de tout enregistrer manuellement
// Étape 1: Lancez le tableau de bord Phoenix en arrière-plan
import threading
import phoenix as px
# Launch Phoenix app locally (access at http://localhost:6006)
def run_phoenix():
px.launch_app()
threading.Thread(target=run_phoenix, daemon=True).start()
// Étape 2: Enregistrez Phoenix avec l’OpenTelemetry et l’instrument Langchain
from phoenix.otel import register
from openinference.instrumentation.langchain import LangChainInstrumentor
# Register OpenTelemetry tracer
tracer_provider = register()
# Instrument LangChain with Phoenix
LangChainInstrumentor().instrument(tracer_provider=tracer_provider)
// Étape 3: Initialisez le LLM (API Together)
from langchain_together import Together
llm = Together(
model="meta-llama/Llama-3-8b-chat-hf",
temperature=0.7,
max_tokens=256,
together_api_key="your-api-key", # Replace with your actual API key
)
N’oubliez pas de remplacer la «clé de votre-ap» par votre clé API réelle. Vous pouvez l’obtenir en utilisant ceci lien.
// Étape 4: Définissez le modèle invite
from langchain.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages((
("system", "You are a helpful assistant."),
("human", "{question}"),
))
// Étape 5: Mélanger l’invite et le modèle dans une chaîne
// Étape 6: Posez plusieurs questions et réponses imprimées
questions = (
"What is the capital of France?",
"Who discovered gravity?",
"Give me a motivational quote about perseverance.",
"Explain photosynthesis in one sentence.",
"What is the speed of light?",
)
print("Phoenix running at http://localhost:6006n")
for q in questions:
print(f" Question: {q}")
response = chain.invoke({"question": q})
print(" Answer:", response, "n")
// Étape 7: Gardez l’application en vie pour la surveillance
try:
while True:
pass
except KeyboardInterrupt:
print(" Exiting.")
# Comprendre Phoenix Traces & Metrics
Avant de voir la sortie, nous devons d’abord comprendre les mesures Phoenix. Vous devrez d’abord comprendre quelles sont les traces et les portées:
Tracer: Chaque trace représente une série complète de votre pipeline LLM. Par exemple, chaque question comme «Quelle est la capitale de la France?» génère une nouvelle trace.
Couettes de portée: Chaque trace est mitigée de plusieurs portées, chacune représentant une étape de votre chaîne:
- ChatPromptTemplate.Format: Formatage rapide
- Ensemblellm.invoke: Call LLM
- Tous les composants personnalisés que vous ajoutez
Métriques indiquées par trace
Métrique | Signification et importance |
---|---|
Latence (MS) | Mesure le temps total pour l’exécution complète de la chaîne LLM, y compris la mise en forme rapide, la réponse LLM et le post-traitement. Aide à identifier les goulots d’étranglement des performances et à déboguer les réponses lentes. |
Jetons d’entrée | Nombre de jetons envoyés au modèle. Important pour surveiller la taille des entrées et contrôler les coûts de l’API, car la plupart des utilisations sont basées sur des jetons. |
Jetons de sortie | Nombre de jetons générés par le modèle. Utile pour comprendre la verbosité, la qualité de la réponse et l’impact des coûts. |
Modèle invite | Affiche l’invite complète avec des variables insérées. Aide à confirmer si les invites sont structurées et remplies correctement. |
Texte d’entrée / sortie | Montre à la fois l’entrée utilisateur et la réponse du modèle. Utile pour vérifier la qualité d’interaction et repérer des hallucinations ou des réponses incorrectes. |
Durée de la durée | Décompose le temps pris à chaque étape (comme la création rapide ou l’invocation du modèle). Aide à identifier les goulots d’étranglement des performances dans la chaîne. |
Nom de chaîne |
Spécifie à quelle partie du pipeline à une portée appartient (par exemple, prompt.format , TogetherLLM.invoke ). Aide à isoler où se produisent les problèmes.
|
Tags / métadonnées | Des informations supplémentaires comme le nom du modèle, la température, etc. utile pour le filtrage des exécutions, la comparaison des résultats et l’analyse de l’impact des paramètres. |
Visitez maintenant http: // localhost: 6006 Pour afficher le tableau de bord Phoenix. Vous verrez quelque chose comme:
Ouvrez la première trace pour afficher ses détails.
# Emballage
Pour le conclure, Arize Phoenix rend incroyablement facile à déboguer, tracer et surveiller vos applications LLM. Vous n’avez pas à deviner ce qui ne va pas ou à fouiller les journaux. Tout est juste là: invites, réponses, horaires et plus encore. Il vous aide à repérer les problèmes, à comprendre les performances et à construire de meilleures expériences d’IA avec beaucoup moins de stress.
Kanwal Mehreen est un ingénieur d’apprentissage automatique et un écrivain technique avec une profonde passion pour la science des données et l’intersection de l’IA avec la médecine. Elle a co-écrit l’ebook « Maximiser la productivité avec Chatgpt ». En tant que Google Generation Scholar 2022 pour APAC, elle défend la diversité et l’excellence académique. Elle est également reconnue comme une diversité de Teradata dans Tech Scholar, le boursier de recherche Mitacs Globalink et le savant de Harvard WECODE. Kanwal est un ardent défenseur du changement, après avoir fondé des femmes pour autonomiser les femmes dans les champs STEM.
Source link