Utilisez Weave pour suivre et journaliser automatiquement les appels effectués avec les modules et les fonctions DSPy
DSPy est un framework qui permet d’optimiser de manière algorithmique les prompts et les poids des modèles de langage (LM), en particulier lorsque vous faites appel à des LM une ou plusieurs fois au sein d’un pipeline. Weave suit et journalise automatiquement les appels effectués avec les modules et les fonctions DSPy. Ce guide explique comment activer le traçage Weave pour vos programmes DSPy, suivre vos modules et signatures personnalisés, et capturer les traces des optimiseurs et des évaluations DSPy. Grâce à ces traces, vous pouvez déboguer, analyser et améliorer vos applications DSPy.
Cette section explique comment activer le traçage automatique des appels DSPy dans Weave. Centralisez le stockage des traces de vos applications de modèles de langage, aussi bien pendant le développement qu’en production. Ces traces facilitent le débogage et peuvent servir de jeu de données pour améliorer votre application.Weave capture automatiquement les traces de DSPy. Pour commencer à suivre vos appels, appelez weave.init(project_name="[YOUR-WANDB-PROJECT-NAME]"), puis utilisez la bibliothèque comme d’habitude. Remplacez [YOUR-OPENAI-API-KEY] par votre clé API OpenAI et [YOUR-WANDB-PROJECT-NAME] par le nom de votre projet Weights & Biases.
import osimport dspyimport weaveos.environ["OPENAI_API_KEY"] = "[YOUR-OPENAI-API-KEY]"weave.init(project_name="[YOUR-WANDB-PROJECT-NAME]")lm = dspy.LM('openai/gpt-4o-mini')dspy.configure(lm=lm)classify = dspy.Predict("sentence -> sentiment")classify(sentence="it's a charming and often affecting journey.")
Une fois le traçage activé, Weave journalise dans votre projet Weave chaque appel de LM effectué par votre programme DSPy. Vous pouvez alors y inspecter les entrées, les sorties et les métadonnées.
Outre les appels intégrés, Weave trace également les modules et signatures personnalisés que vous définissez. Un Module est l’élément de base des programmes DSPy : doté de paramètres entraînables, il encapsule une technique de prompting. Une Signature est une spécification déclarative du comportement en entrée/sortie d’un Module DSPy. Weave suit automatiquement tous les objets Signature et Module de vos programmes DSPy, qu’ils soient intégrés ou personnalisés. Remplacez [YOUR-OPENAI-API-KEY] par votre clé API OpenAI et [YOUR-WANDB-PROJECT-NAME] par le nom de votre projet Weights & Biases.
import osimport dspyimport weaveos.environ["OPENAI_API_KEY"] = "[YOUR-OPENAI-API-KEY]"weave.init(project_name="[YOUR-WANDB-PROJECT-NAME]")class Outline(dspy.Signature): """Outline a thorough overview of a topic.""" topic: str = dspy.InputField() title: str = dspy.OutputField() sections: list[str] = dspy.OutputField() section_subheadings: dict[str, list[str]] = dspy.OutputField( desc="mapping from section headings to subheadings" )class DraftSection(dspy.Signature): """Draft a top-level section of an article.""" topic: str = dspy.InputField() section_heading: str = dspy.InputField() section_subheadings: list[str] = dspy.InputField() content: str = dspy.OutputField(desc="markdown-formatted section")class DraftArticle(dspy.Module): def __init__(self): self.build_outline = dspy.ChainOfThought(Outline) self.draft_section = dspy.ChainOfThought(DraftSection) def forward(self, topic): outline = self.build_outline(topic=topic) sections = [] for heading, subheadings in outline.section_subheadings.items(): section, subheadings = ( f"## {heading}", [f"### {subheading}" for subheading in subheadings], ) section = self.draft_section( topic=outline.title, section_heading=section, section_subheadings=subheadings, ) sections.append(section.content) return dspy.Prediction(title=outline.title, sections=sections)draft_article = DraftArticle()article = draft_article(topic="World Cup 2002")
Weave capture également les traces des optimiseurs DSPy et des appels d’évaluation, qui vous permettent d’améliorer et d’évaluer les performances de votre programme DSPy sur un jeu de développement. Remplacez [YOUR-OPENAI-API-KEY] par votre clé API OpenAI et [YOUR-WANDB-PROJECT-NAME] par le nom de votre projet Weights & Biases.