> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Démarrage rapide : instrumenter et tracer des fonctions

> Faites vos premiers pas avec W&B Weave en ajoutant le traçage à votre application LLM afin de déboguer et de surveiller les interactions avec les modèles.

export const GitHubLink = ({url, compact = false}) => <a href={url} target="_blank" rel="noopener noreferrer" className={compact ? "source-link" : "github-source-link"}>
    {compact ? "View source" : <>
    <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z" />
    </svg>
    GitHub source
      </>}
  </a>;

export const ColabLink = ({url}) => <a href={url} target="_blank" rel="noopener noreferrer" className="colab-link">
    <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01.21.03zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z" />
    </svg>
    Try in Colab
  </a>;

<div style={{ display: 'flex', gap: '12px', flexWrap: 'wrap' }}>
  <ColabLink url="https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/quickstart.ipynb" />

  <GitHubLink url="https://github.com/wandb/docs/blob/main/weave/cookbooks/source/quickstart.ipynb" />
</div>

Découvrez comment suivre les appels LLM avec Weave en ajoutant le traçage à votre code. Ce guide de démarrage rapide vous accompagne pas à pas pour tracer une requête vers OpenAI, puis consulter les résultats dans l'interface de Weights & Biases. Il s'adresse aux développeurs qui découvrent Weave et souhaitent instrumenter une application LLM à des fins de débogage et de surveillance.

<h2 id="what-youll-learn">
  Ce que vous allez apprendre
</h2>

Ce guide vous explique comment :

* Importer et configurer Weave dans votre code.
* Utiliser le décorateur `weave.op` pour suivre votre code.
* Afficher les traces dans l’interface de Weights & Biases.

<h2 id="prerequisites">
  Prérequis
</h2>

* Un [compte CoreWeave Forge](https://id.coreweave.com/signup)
* Python 3.10+ ou Node.js 18+
* Les paquets requis installés :
  * **Python** : `pip install weave openai`
  * **TypeScript** : `npm install weave openai`
* Une [clé API OpenAI](https://platform.openai.com/api-keys) définie dans une variable d’environnement.

<h2 id="log-a-trace-to-a-new-project">
  Journaliser une trace dans un nouveau projet
</h2>

Dans cette section, vous allez instrumenter une petite application afin que Weave puisse enregistrer ses entrées, ses sorties et son code. Pour commencer à suivre votre code et à journaliser des traces dans Weave :

1. Importez la bibliothèque `weave` dans votre code.
2. Appelez `weave.init('your_wb_team/project_name')` dans votre code pour envoyer les informations de suivi à votre [équipe](/fr/products/wandb/platform/app/settings-page/teams) et à votre [projet](/fr/products/wandb/platform/hosting/iam/org_team_struct#project) W\&B. Si vous ne définissez pas d’équipe, Weave envoie les traces à votre [équipe par défaut](/fr/products/wandb/platform/app/settings-page/user-settings#default-team). Si le projet indiqué n’existe pas dans votre équipe, Weave le crée.
3. Ajoutez le [décorateur `@weave.op()`](/fr/products/wandb/weave/guides/tracking/ops) aux fonctions que vous souhaitez suivre. Weave suit automatiquement les appels aux LLM pris en charge, mais le décorateur vous permet de suivre les entrées, les sorties et le code de fonctions précises. En TypeScript, le décorateur s’utilise avec la syntaxe suivante : `weave.op(your_function)`.

L’exemple de code suivant envoie une requête à OpenAI (une [clé API OpenAI](https://platform.openai.com/docs/quickstart) est requise), et Weave enregistre les informations de traçage de la requête. Celle-ci demande au modèle OpenAI d’extraire les noms de dinosaures du texte fourni en entrée et d’identifier le régime alimentaire de chacun (herbivore ou carnivore).

L’exemple de code suivant permet de suivre votre premier projet avec Weave :

<Tabs>
  <Tab title="Python">
    ```python lines {1-2,7-8,27-28} theme={"system"}
    # Importe la bibliothèque Weave
    import weave
    from openai import OpenAI

    client = OpenAI()

    # Weave suit automatiquement les entrées, les sorties et le code de cette fonction
    @weave.op()
    def extract_dinos(sentence: str) -> dict:
        response = client.chat.completions.create(
            model="gpt-4o",
            messages=[
                {
                    "role": "system",
                    "content": """In JSON format extract a list of `dinosaurs`, with their `name`,
    their `common_name`, and whether its `diet` is a herbivore or carnivore"""
                },
                {
                    "role": "user",
                    "content": sentence
                }
                ],
                response_format={ "type": "json_object" }
            )
        return response.choices[0].message.content

    # Initialise Weave et définit l'équipe et le projet dans lesquels journaliser les données
    weave.init('your-team/traces-quickstart')

    sentence = """I watched as a Tyrannosaurus rex (T. rex) chased after a Triceratops (Trike), \
    both carnivore and herbivore locked in an ancient dance. Meanwhile, a gentle giant \
    Brachiosaurus (Brachi) calmly munched on treetops, blissfully unaware of the chaos below."""

    result = extract_dinos(sentence)
    print(result)
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript twoslash lines {1-2,7-8,20,24-25} theme={"system"}
    // @noErrors
    // Importe la bibliothèque Weave
    import * as weave from 'weave';
    import OpenAI from 'openai';

    const openai = new OpenAI();

    // Weave suit automatiquement les entrées, les sorties et le code de cette fonction  
    async function extractDinos(input: string) {
      const response = await openai.chat.completions.create({
        model: 'gpt-4o',
        messages: [
          {
            role: 'user',
            content: `In JSON format extract a list of 'dinosaurs', with their 'name', their 'common_name', and whether its 'diet' is a herbivore or carnivore: ${input}`,
          },
        ],
      });
      return response.choices[0].message.content;
    }
    const extractDinosOp = weave.op(extractDinos);

    async function main() {

      // Initialise Weave et définit l'équipe et le projet dans lesquels journaliser les données
      await weave.init('your-team/traces-quickstart');

      const result = await extractDinosOp(
        'I watched as a Tyrannosaurus rex (T. rex) chased after a Triceratops (Trike), both carnivore and herbivore locked in an ancient dance. Meanwhile, a gentle giant Brachiosaurus (Brachi) calmly munched on treetops, blissfully unaware of the chaos below.'
      );
      console.log(result);
    }

    main();

    ```
  </Tab>
</Tabs>

Lorsque vous appelez la fonction `extract_dinos`, Weave affiche dans le terminal des liens pour consulter vos traces. La sortie ressemble à ceci :

```text theme={"system"}
weave:  $ pip install weave --upgrade
weave: Logged in as Weights & Biases user: example-username.
weave: View Weave data at https://wandb.ai/your-team/traces-quickstart/weave
weave: 🍩 https://wandb.ai/your-team/traces-quickstart/r/call/019ae171-7f32-7c96-8b42-931a32f900b7
{
  "dinosaurs": [
    {
      "name": "Tyrannosaurus rex",
      "common_name": "T. rex",
      "diet": "carnivore"
    },
    {
      "name": "Triceratops",
      "common_name": "Trike",
      "diet": "herbivore"
    },
    {
      "name": "Brachiosaurus",
      "common_name": "Brachi",
      "diet": "herbivore"
    }
  ]
}
```

<h2 id="see-traces-of-your-application-in-your-project">
  Afficher les traces de votre application dans votre projet
</h2>

Maintenant que votre code a généré une trace, vous pouvez l’inspecter dans l’interface utilisateur de Weights & Biases. Cliquez sur le lien affiché dans votre terminal ou collez-le dans votre navigateur pour ouvrir l’interface. Dans le panneau **Traces**, cliquez sur la trace pour afficher ses données, notamment son entrée, sa sortie, sa latence et l’utilisation des jetons.

<img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/tutorial_trace_1.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=a75c0233212fddd3f500215ca4532035" alt="La trace de la fonction extract_dinos dans Forge, avec l’arborescence des appels, leur coût et leur latence, ainsi que l’entrée et la sortie de l’appel." width="1251" height="595" data-path="products/wandb/weave/_media/tutorial_trace_1.png" />

Vous venez de journaliser et de consulter votre première trace Weave.

<h2 id="learn-more-about-traces">
  En savoir plus sur les traces
</h2>

* Découvrez comment [décorer vos fonctions et récupérer les informations sur les appels](/fr/products/wandb/weave/guides/tracking/tracing).
* Essayez le [Playground](/fr/products/wandb/weave/guides/tools/playground) pour tester différents modèles sur des traces journalisées.
* [Explorez les intégrations](/fr/products/wandb/weave/guides/integrations). Weave suit automatiquement les appels effectués vers OpenAI, Anthropic et bien d’autres bibliothèques de LLM. Si votre bibliothèque de LLM ne figure pas parmi les intégrations Weave, vous pouvez tout de même suivre les appels vers d’autres bibliothèques ou frameworks de LLM en les encapsulant avec `@weave.op()`.

<h2 id="next-steps">
  Étapes suivantes
</h2>

[Commencez à évaluer votre application](/fr/products/wandb/weave/tutorial-eval), puis découvrez comment [évaluer une application RAG](/fr/products/wandb/weave/tutorial-rag).
