IBM watsonx.ai
Le modèle Large de Mistral AI est disponible sur la plateforme IBM watsonx.ai en tant que solution entièrement managée.
Premiers pas
Les sections suivantes décrivent les étapes pour interroger Mistral Large sur la version SaaS d'IBM watsonx.ai.
Prérequis
Les éléments suivants sont requis :
- Un projet IBM watsonx (
IBM_CLOUD_PROJECT_ID) - Un Service ID avec une politique d'accès permettant l'utilisation du service Watson Machine Learning.
Pour activer l'accès à l'API, vérifiez que :
- Votre Service ID a été ajouté au projet en tant qu'
EDITOR. - Vous avez généré une clé API (
IBM_CLOUD_API_KEY) pour votre Service ID.
Interroger le modèle (Chat Completion)
Vous pouvez interroger Mistral Large en utilisant soit le SDK d'IBM, soit des appels HTTP simples.
Les exemples ci-dessous utilisent le package Python mistral-common pour formater correctement les messages utilisateur avec des tokens spéciaux. Évitez de passer des chaînes brutes ou de gérer manuellement les tokens spéciaux, car cela peut entraîner des erreurs de tokenisation silencieuses qui dégradent la qualité des résultats du modèle.
Vous devrez exécuter votre code depuis un environnement virtuel contenant les packages suivants :
httpx(testé avec0.27.2)ibm-watsonx-ai(testé avec1.1.11)mistral-common(testé avec1.4.4)
Dans l'extrait suivant, votre clé API génère un token IAM, et l'appel au modèle utilise ce token pour l'authentification.
from ibm_watsonx_ai import Credentials
from ibm_watsonx_ai.foundation_models import ModelInference
from ibm_watsonx_ai.metanames import GenTextParamsMetaNames as GenParams
from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from mistral_common.protocol.instruct.request import ChatCompletionRequest
from mistral_common.protocol.instruct.messages import UserMessage
import os
import httpx
IBM_CLOUD_REGIONS = {
"dallas": "us-south",
"london": "eu-gb",
"frankfurt": "eu-de",
"tokyo": "jp-tok"
}
IBM_CLOUD_PROJECT_ID = "xxx-xxx-xxx" # Replace with your project ID
def get_iam_token(api_key: str) -> str:
"""Return an IAM access token generated from an API key."""
headers = {"Content-Type": "application/x-www-form-urlencoded"}
data = f"apikey={api_key}&grant_type=urn\:ibm\:params\:oauth\:grant-type\:apikey"
resp = httpx.post(
url="https://iam.cloud.ibm.com/identity/token",
headers=headers,
data=data,
)
token = resp.json().get("access_token")
return token
def format_user_message(raw_user_msg: str) -> str:
"""Return a formatted prompt using the official Mistral tokenizer."""
tokenizer = MistralTokenizer.v3() # Use v3 for Mistral Large
tokenized = tokenizer.encode_chat_completion(
ChatCompletionRequest(
messages=[UserMessage(content=raw_user_msg)],
model="mistral-large"
)
)
return tokenized.text
region = "frankfurt" # Define your region here
api_key = os.environ["IBM_API_KEY"]
access_token = get_iam_token(api_key=api_key)
credentials = Credentials(
url=f"https://{IBM_CLOUD_REGIONS[region]}.ml.cloud.ibm.com",
token=access_token
)
params = {
GenParams.MAX_NEW_TOKENS: 256,
GenParams.TEMPERATURE: 0.0
}
model_inference = ModelInference(
project_id=IBM_CLOUD_PROJECT_ID,
model_id="mistralai/mistral-large",
params=params,
credentials=credentials,
)
user_msg_content = "Who is the best French painter? Answer in one short sentence."
resp = model_inference.generate_text(prompt=format_user_message(user_msg_content))
print(resp)Aller plus loin
Pour plus d'informations et d'exemples, consultez :
- La documentation du SDK Python IBM watsonx.ai
- Ce tutoriel IBM Developer sur l'utilisation de Mistral Large avec le moteur de workflows IBM watsonx.ai.