Vous pouvez inviter des modèles de base dans IBM watsonx.ai à l'aide d'un programme à l'aide de la bibliothèque Python .
Après avoir créé une invite dans le site Prompt Lab, vous pouvez enregistrer l'invite en tant que bloc-notes, puis modifier le bloc-notes. Il est utile de démarrer à partir d'un carnet de notes généré, car il gère les étapes initiales de configuration, telles que l'obtention des informations d'identification et de l'identifiant du projet, pour vous.
Vous pouvez également travailler avec des modèles de fondation directement à partir d'un nouveau carnet de notes que vous créez sur watsonx.ai.
Pour plus d'informations, voir la classe Model Inference de la bibliothèque watsonx.ai Python.
Exemples de blocs-notes
Pour trouver des exemples de blocs-notes qui invitent différents modèles de base disponibles dans watsonx.ai, voir Exemples de blocs-notesPython. La plupart de ces blocs-notes sont également disponibles dans le concentrateur de ressources.
Par exemple, la section Utiliser watsonx pour analyser les avis sur les locations de voitures est un exemple de notebook que vous pouvez exécuter pour apprendre les étapes impliquées dans l'inférence d'un foundation model dans watsonx.ai
Promouvoir un foundation model
Avant de demander un foundation model, obtenez la liste des modèles de base disponibles pour l'inférence dans watsonx.ai Pour plus d'informations, voir Obtention d'informations sur les modèles de base disponibles.
L'exemple de code suivant montre comment inviter le modèle flan-t5-xxl-11b
à utiliser différentes méthodes afin de pouvoir comparer le type de sortie générée par chaque méthode.
Bien que seul l'exemple qui montre comment générer un flux de texte inclut des paramètres de modèle pour l'invite, vous pouvez spécifier des paramètres pour n'importe quelle méthode. Le paramètre validate=False
accélère la demande en sautant l'étape consistant à vérifier que l'identifiant du modèle est valide et qu'il renvoie à un site foundation model disponible.
Exemple de code Python pour l'interrogation d'un foundation model
import json
from ibm_watsonx_ai import APIClient
from ibm_watsonx_ai.foundation_models import ModelInference
from ibm_watsonx_ai.metanames import GenTextParamsMetaNames as GenParams
from ibm_watsonx_ai.foundation_models.utils.enums import DecodingMethods
my_credentials = {
"url": "https://{region}.ml.cloud.ibm.com",
"apikey": {my-IBM-Cloud-API-key},
}
client = APIClient(my_credentials)
gen_parms = {
GenParams.DECODING_METHOD: DecodingMethods.SAMPLE,
GenParams.MAX_NEW_TOKENS: 100
}
model_id = client.foundation_models.TextModels.FLAN_T5_XXL
project_id = {my-project-ID}
space_id = None
verify = False
model = ModelInference(
model_id=model_id,
credentials=my_credentials,
params=gen_parms,
project_id=project_id,
space_id=space_id,
verify=verify,
)
prompt_txt = "In today's sales meeting, we "
gen_parms_override = gen_parms = {
GenParams.DECODING_METHOD: DecodingMethods.SAMPLE,
GenParams.MAX_NEW_TOKENS: 50
}
# GENERATE
generated_response = model.generate(prompt=prompt_txt, params=gen_parms_override)
print("Output from generate() method:")
print(json.dumps(generated_response, indent=2))
# GENERATE TEXT
generated_text_response = model.generate_text(prompt=prompt_txt, params=gen_parms_override)
print("Output from generate_text() method:")
print(generated_text_response)
# GENERATE STREAM
gen_stream_params = {
GenParams.DECODING_METHOD: DecodingMethods.GREEDY,
GenParams.TEMPERATURE: 0.5,
GenParams.MIN_NEW_TOKENS: 10,
GenParams.MAX_NEW_TOKENS: 20
}
print("Output from generate_text_stream() method:")
stream_response = model.generate_text_stream(prompt=prompt_txt, params=gen_stream_params)
for chunk in stream_response:
print(chunk, end='')
Pour utiliser l'exemple de code, vous devez remplacer {region}
, {my-IBM-Cloud-API-key}
et {my-project-ID}
par des valeurs valides pour votre environnement.
Sortie de la méthode generate ():
{
"model_id": "google/flan-t5-xxl",
"created_at": "2023-07-27T03:40:17.575Z",
"results": [
{
"generated_text": "will discuss the new product line.",
"generated_token_count": 8,
"input_token_count": 10,
"stop_reason": "EOS_TOKEN"
}
],
...
}
Sortie de la méthode generate_text ():
will discuss the new product line.
Sortie de la méthode generate_text_stream ():
will discuss the new product line. Let's start with marketing plans
Suppression du contenu préjudiciable
Lorsque vous soumettez une invite à un foundation model, le filtre "haine, abus et blasphème" (HAP) et le filtre "informations personnelles identifiables" (PII) sont désactivés par défaut. Vous pouvez les activer et spécifier la sensibilité du filtre HAP à l'aide de la zone modifications
de l'API.
Pour plus d'informations sur le fonctionnement du filtre, voir Suppression du langage nuisible des entrées et sorties du modèle.
Pour activer les filtres avec les paramètres par défaut appliqués lors de l'utilisation de la bibliothèque Python , incluez le paramètre suivant dans la demande:
response = model.generate(prompt,guardrails=True)
L'exemple de code suivant montre comment activer et configurer les filtres.
guardrails_hap_params = {
GenTextModerationsMetaNames.INPUT: False,
GenTextModerationsMetaNames.THRESHOLD: 0.45
}
guardrails_pii_params = {
GenTextModerationsMetaNames.INPUT: False,
GenTextModerationsMetaNames.OUTPUT: True,
GenTextModerationsMetaNames.MASK: {"remove_entity_value": True}
}
response = model.generate(prompt,
guardrails=True,
guardrails_hap_params=guardrails_hap_params,
guardrails_pii_params=guardrails_pii_params)
Rubrique parent: Python