> ## 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.

# MistralAI

> Suivez et surveillez les appels de modèle MistralAI grâce au traçage automatique de Weave pour les complétions de chat, l’appel de fonctions et les interactions avec les modèles.

<a target="_blank" href="https://colab.research.google.com/github/wandb/examples/blob/master/weave/docs/quickstart_mistral.ipynb" aria-label="Ouvrir dans Google Colab">
  <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Ouvrir dans Colab" />
</a>

Weave suit et journalise automatiquement les appels LLM effectués via la [bibliothèque Python MistralAI](https://github.com/mistralai/client-python). Ce guide vous explique comment capturer les traces des appels MistralAI, encapsuler les appels dans vos propres ops pour garantir leur reproductibilité et organiser vos expériences à l’aide de la classe `Model`.

> Weave prend en charge le SDK Mistral v1.0. Pour en savoir plus sur la mise à niveau, consultez le [guide de migration](https://github.com/mistralai/client-python/blob/main/MIGRATION.md).

<h2 id="traces">
  Traces
</h2>

Il est important de stocker les traces des applications LLM dans une base de données centralisée, aussi bien pendant le développement qu'en production. Ces traces vous servent à déboguer, mais aussi de jeu de données pour améliorer votre application.

Weave capture automatiquement les traces de [mistralai](https://github.com/mistralai/client-python). Pour utiliser la bibliothèque comme d'habitude, commencez par appeler `weave.init()` :

```python lines theme={"system"}
import weave
weave.init("cheese_recommender")

# utilisez ensuite la bibliothèque mistralai comme d’habitude
import os
from mistralai import Mistral

api_key = os.environ["MISTRAL_API_KEY"]
model = "mistral-large-latest"

client = Mistral(api_key=api_key)

messages = [
    {
        "role": "user",
        "content": "What is the best French cheese?",
    },
]

chat_response = client.chat.complete(
    model=model,
    messages=messages,
)
```

Weave suit et journalise désormais tous les appels LLM effectués via la bibliothèque MistralAI. Vous pouvez consulter les traces dans l’interface web de Weave.

[<img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/mistral_trace.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=6f496fd1aba7c2d4a7d4b61d62eadd88" alt="mistral_trace.png" width="2908" height="1460" data-path="products/wandb/weave/_media/mistral_trace.png" />](https://forge.coreweave.com/wandb/capecape/mistralai_project/weave/calls)

<h2 id="wrap-calls-with-your-own-ops">
  Encapsuler les appels dans vos propres ops
</h2>

Une fois le traçage de base opérationnel, vous pouvez encapsuler vos appels MistralAI dans des ops Weave afin de les rendre reproductibles d’une expérience à l’autre. Les ops Weave rendent les résultats *reproductibles* en gérant automatiquement les versions du code au fil de vos expériences, et ils capturent leurs entrées et leurs sorties. Créez une fonction décorée avec [`@weave.op()`](/fr/products/wandb/weave/guides/tracking/ops) qui appelle [`mistralai.client.MistralClient.chat()`](https://docs.mistral.ai/capabilities/completion), et Weave assure le suivi des entrées et des sorties à votre place. L’exemple suivant montre comment procéder pour un système de recommandation de fromages :

```python lines {1} theme={"system"}
@weave.op()
def cheese_recommender(region:str, model:str) -> str:
    "Recommend the best cheese in a given region"
    
    messages = [
        {
            "role": "user",
            "content": f"What is the best cheese in {region}?",
        },
    ]

    chat_response = client.chat.complete(
        model=model,
        messages=messages,
    )
    return chat_response.choices[0].message.content

cheese_recommender(region="France", model="mistral-large-latest")
cheese_recommender(region="Spain", model="mistral-large-latest")
cheese_recommender(region="Netherlands", model="mistral-large-latest")
```

[<img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/mistral_ops.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=8718757963f0f23ce7955c043a19d30f" alt="mistral_ops.png" width="2759" height="1080" data-path="products/wandb/weave/_media/mistral_ops.png" />](https://forge.coreweave.com/wandb/capecape/mistralai_project/weave/calls)

<h2 id="create-a-model-for-easier-experimentation">
  Créer un `Model` pour faciliter l’expérimentation
</h2>

Il est difficile d’organiser ses expériences lorsque de nombreux éléments évoluent en même temps. Avec la classe [`Model`](/fr/products/wandb/weave/guides/core-types/models), vous pouvez capturer et organiser les détails expérimentaux de votre application, comme votre prompt système ou le modèle que vous utilisez. Vous pouvez ainsi organiser et comparer plus facilement les différentes itérations de votre application.

Outre la gestion des versions du code et la capture des entrées et des sorties, les [`Model`](/fr/products/wandb/weave/guides/core-types/models) capturent des paramètres structurés qui contrôlent le comportement de votre application, ce qui permet de trouver facilement les paramètres les plus efficaces. Vous pouvez également utiliser les Weave Models avec `serve` et les [`Evaluation`](/fr/products/wandb/weave/guides/core-types/evaluations).

Dans l’exemple suivant, vous pouvez faire varier `model` et `country`. Chaque fois que vous modifiez l’un de ces paramètres, vous obtenez une nouvelle *version* de `CheeseRecommender`.

```python lines theme={"system"}
import weave
from mistralai import Mistral

weave.init("mistralai_project")

class CheeseRecommender(weave.Model): # Remplacer par `weave.Model`
    model: str
    temperature: float

    @weave.op()
    def predict(self, region:str) -> str: # Remplacer par `predict`
        "Recommend the best cheese in a given region"
        
        client = Mistral(api_key=api_key)

        messages = [
            {
                "role": "user",
                "content": f"What is the best cheese in {region}?",
            },
        ]

        chat_response = client.chat.complete(
            model=model,
            messages=messages,
            temperature=self.temperature
        )
        return chat_response.choices[0].message.content

cheese_model = CheeseRecommender(
    model="mistral-medium-latest",
    temperature=0.0
    )
result = cheese_model.predict(region="France")
print(result)
```

[<img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/mistral_model.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=576975bf65feac4cb2dd1da1b68244cd" alt="mistral_model.png" width="2894" height="1536" data-path="products/wandb/weave/_media/mistral_model.png" />](https://forge.coreweave.com/wandb/capecape/mistralai_project/weave/models)


## Related topics

- [Exemples de code et notebooks](/fr/products/wandb/examples.md)
