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.
Weave suit et journalise automatiquement les appels LLM effectués via la bibliothèque Python MistralAI. 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.
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. Pour utiliser la bibliothèque comme d’habitude, commencez par appeler weave.init() :
import weaveweave.init("cheese_recommender")# utilisez ensuite la bibliothèque mistralai comme d’habitudeimport osfrom mistralai import Mistralapi_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.
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() qui appelle mistralai.client.MistralClient.chat(), 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 :
@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.contentcheese_recommender(region="France", model="mistral-large-latest")cheese_recommender(region="Spain", model="mistral-large-latest")cheese_recommender(region="Netherlands", model="mistral-large-latest")
Il est difficile d’organiser ses expériences lorsque de nombreux éléments évoluent en même temps. Avec 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. 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 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.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.
import weavefrom mistralai import Mistralweave.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.contentcheese_model = CheeseRecommender( model="mistral-medium-latest", temperature=0.0 )result = cheese_model.predict(region="France")print(result)