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

# MistralAI

> Suivez et surveillez les appels au modèle MistralAI avec le Tracing automatique de Weave pour les complétions de chat, l’appel de fonction et les interactions avec le modèle.

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

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

<div id="traces">
  ## Traces
</div>

Il est important de stocker les traces des applications LLM dans une base de données centrale, aussi bien pendant le développement qu’en production. Vous utilisez ces traces pour le débogage, ainsi que comme jeu de données pour vous aider à 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={null}
import weave
weave.init("cheese_recommender")

# utiliser 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/wb-21fd5541/S0cRiDzxeODX77LU/weave/guides/integrations/imgs/mistral_trace.png?fit=max&auto=format&n=S0cRiDzxeODX77LU&q=85&s=07dfcb2716e550e4af7544172b96dd72" alt="mistral_trace.png" width="3024" height="1468" data-path="weave/guides/integrations/imgs/mistral_trace.png" />](https://wandb.ai/capecape/mistralai_project/weave/calls)

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

Une fois que le tracing de base fonctionne, 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 assurant automatiquement la gestion des versions du code au fil de vos expérimentations, et elles capturent leurs entrées et leurs sorties. Créez une fonction décorée avec [`@weave.op()`](/fr/weave/guides/tracking/ops) qui appelle [`mistralai.client.MistralClient.chat()`](https://docs.mistral.ai/capabilities/completion), et Weave assure pour vous le suivi des entrées et des sorties. L'exemple suivant montre comment procéder pour un système de recommandation de fromages :

```python lines {1} theme={null}
@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/wb-21fd5541/S0cRiDzxeODX77LU/weave/guides/integrations/imgs/mistral_ops.png?fit=max&auto=format&n=S0cRiDzxeODX77LU&q=85&s=5ffde09f722987a36b7e1d9ce86e4f74" alt="mistral_ops.png" width="2877" height="1080" data-path="weave/guides/integrations/imgs/mistral_ops.png" />](https://wandb.ai/capecape/mistralai_project/weave/calls)

<div id="create-a-model-for-easier-experimentation">
  ## Créez un `Model` pour expérimenter plus facilement
</div>

Il peut être difficile d’organiser une expérimentation quand de nombreux éléments entrent en jeu. En utilisant la classe [`Model`](/fr/weave/guides/core-types/models), vous pouvez capturer et organiser les détails expérimentaux de votre application, comme le prompt système ou le modèle utilisé. Cela facilite l’organisation et la comparaison des différentes itérations de votre application.

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

Dans l’exemple suivant, vous pouvez expérimenter avec `model` et `country`. Chaque fois que vous en modifiez un, vous obtenez une nouvelle *version* de `CheeseRecommender`.

```python lines theme={null}
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/wb-21fd5541/S0cRiDzxeODX77LU/weave/guides/integrations/imgs/mistral_model.png?fit=max&auto=format&n=S0cRiDzxeODX77LU&q=85&s=d85e760d2b7cad2b78ebc80477afea89" alt="mistral_model.png" width="3010" height="1536" data-path="weave/guides/integrations/imgs/mistral_model.png" />](https://wandb.ai/capecape/mistralai_project/weave/models)
