Passer au contenu principal
Ces exemples montrent comment utiliser W&B Inference avec Weave pour le tracing, l’évaluation et la comparaison.

Exemple de base : Tracing de Llama 3.1 8B avec Weave

Cet exemple montre comment envoyer un prompt au modèle Llama 3.1 8B et tracer l’appel avec Weave. Tracing capture l’intégralité des entrées et des sorties de l’appel LLM, surveille les performances et vous permet d’analyser les résultats dans la Weave UI.
Pour en savoir plus, consultez Tracing dans Weave.
Dans cet exemple :
  • Vous définissez une fonction décorée avec @weave.op() qui effectue une requête de Chat Completion
  • Vos traces sont enregistrées et associées à votre entité et à votre projet W&B
  • La fonction est automatiquement tracée, avec journalisation des entrées, des sorties, de la latence et des métadonnées
  • Le résultat s’affiche dans le terminal, et la trace apparaît dans votre onglet Traces sur https://wandb.ai
Avant d’exécuter cet exemple, effectuez les prérequis.
import weave
import openai

# Définir l'équipe et le projet Weave pour le tracing
weave.init("<your-team>/<your-project>")

client = openai.OpenAI(
    base_url='https://api.inference.wandb.ai/v1',

    # Créer une clé API sur https://wandb.ai/settings
    api_key="<your-api-key>",

    # Facultatif : équipe et projet pour le suivi de l'utilisation
    project="wandb/inference-demo",
)

# Tracer l'appel du modèle dans Weave
@weave.op()
def run_chat():
    response = client.chat.completions.create(
        model="meta-llama/Llama-3.1-8B-Instruct",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Tell me a joke."}
        ],
    )
    return response.choices[0].message.content

# Exécuter et journaliser l'appel tracé
output = run_chat()
print(output)
Après avoir exécuté le code, affichez la trace dans Weave de l’une des façons suivantes :
  1. Cliquez sur le lien affiché dans le terminal (par exemple : https://wandb.ai/<your-team>/<your-project>/r/call/01977f8f-839d-7dda-b0c2-27292ef0e04g)
  2. Ou accédez à https://wandb.ai et sélectionnez l’onglet Traces

Exemple avancé : utiliser Weave Evaluations et les classements

En plus du Tracing des appels de modèle, vous pouvez également évaluer les performances et publier des classements. Cet exemple compare deux modèles sur un jeu de données de questions-réponses. Avant d’exécuter cet exemple, suivez les prérequis.
import os
import asyncio
import openai
import weave
from weave.flow import leaderboard
from weave.trace.ref_util import get_ref

# Définir l'équipe et le projet Weave pour le tracing
weave.init("<your-team>/<your-project>")

dataset = [
    {"input": "What is 2 + 2?", "target": "4"},
    {"input": "Name a primary color.", "target": "red"},
]

@weave.op
def exact_match(target: str, output: str) -> float:
    return float(target.strip().lower() == output.strip().lower())

class WBInferenceModel(weave.Model):
    model: str

    @weave.op
    def predict(self, prompt: str) -> str:
        client = openai.OpenAI(
            base_url="https://api.inference.wandb.ai/v1",
            # Créer une clé API sur https://wandb.ai/settings
            api_key="<your-api-key>",
            # Facultatif : équipe et projet pour le suivi de l'utilisation
            project="<your-team>/<your-project>",
        )
        resp = client.chat.completions.create(
            model=self.model,
            messages=[{"role": "user", "content": prompt}],
        )
        return resp.choices[0].message.content

llama = WBInferenceModel(model="meta-llama/Llama-3.1-8B-Instruct")
deepseek = WBInferenceModel(model="deepseek-ai/DeepSeek-V3-0324")

def preprocess_model_input(example):
    return {"prompt": example["input"]}

evaluation = weave.Evaluation(
    name="QA",
    dataset=dataset,
    scorers=[exact_match],
    preprocess_model_input=preprocess_model_input,
)

async def run_eval():
    await evaluation.evaluate(llama)
    await evaluation.evaluate(deepseek)

asyncio.run(run_eval())

spec = leaderboard.Leaderboard(
    name="Inference Leaderboard",
    description="Compare models on a QA dataset",
    columns=[
        leaderboard.LeaderboardColumn(
            evaluation_object_ref=get_ref(evaluation).uri(),
            scorer_name="exact_match",
            summary_metric_path="mean",
        )
    ],
)

weave.publish(spec)
Après avoir exécuté ce code, accédez à votre compte W&B sur https://wandb.ai/ et :
Consulter les évaluations de votre modèle
Consulter votre classement

Étapes suivantes