Passer au contenu principal
Ouvrir dans Colab Weave suit automatiquement et journalise les appels LLM effectués via la bibliothèque Python MistralAI.
Nous prenons en charge le nouveau SDK Mistral v1.0. Consultez le guide de migration ici

Traces

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 utiliserez ces traces pour le débogage, ainsi que comme jeu de données pour vous aider à améliorer votre application. Weave capturera automatiquement les traces de mistralai. Vous pouvez utiliser la bibliothèque comme d’habitude ; commencez par appeler weave.init() :
import weave
weave.init("cheese_recommender")

# utiliser ensuite la bibliothèque mistralai normalement
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 consigne désormais tous les appels LLM effectués via la bibliothèque MistralAI. Vous pouvez consulter les traces dans l’interface web de Weave. mistral_trace.png

Encapsuler dans vos propres ops

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 simplement une fonction décorée avec @weave.op() qui appelle mistralai.client.MistralClient.chat(), et Weave assurera pour vous le suivi des entrées et des sorties. Voyons comment procéder pour notre système de recommandation de fromages :
@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")
mistral_ops.png

Créer un Model pour faciliter l’expérimentation

Il est difficile d’organiser une expérimentation lorsqu’il y a de nombreux éléments en jeu. En utilisant la classe Model, 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. Cela facilite l’organisation et la comparaison des différentes itérations de votre application. En plus de gérer les versions du code et de capturer les entrées/sorties, les Models 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 Evaluations. Dans l’exemple ci-dessous, vous pouvez expérimenter avec model et country. Chaque fois que vous modifiez l’un de ces éléments, vous obtenez une nouvelle version de CheeseRecommender.
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`
        "Recommander le meilleur fromage dans une région donnée"
        
        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)
mistral_model.png