Inférer à l'aide d'un programme un modèle de base à l'aide d'un modèle d'invite
Vous pouvez utiliser un modèle d'invite sauvegardé pour inviter des modèles de base dans IBM watsonx.ai à l'aide d'un programme.
À partir de la version 2.3.1, l'API de génération de texte est obsolète et sera supprimée à l'avenir.
Un modèle d'invite est un actif que vous pouvez créer pour capturer une combinaison de texte statique d'invite, de paramètres de modèle et de variables d'invite qui génèrent les résultats souhaités à partir d'un modèle spécifique afin de pouvoir le réutiliser.
Pour plus d'informations sur les variables d'invite, voir Génération d'invites réutilisables.
Vous pouvez utiliser un modèle d'invite de l'une des manières suivantes:
- Inférence d'un modèle de base à l'aide d'un modèle d'invite déployé.
- Déployez un modèle d'invite, puis utilisez le modèle déployé dans une demande d'inférence.
- Ajoutez du texte à une invite en fonction d'un modèle d'invite, puis inférez un modèle de base (sans déployer le modèle d'invite).
Utilisez les fonctions disponibles dans la bibliothèque watsonx.ai Python à partir de blocs-notes dans watsonx.ai pour soumettre des invites avec un modèle d'invite.
Exemple de notebook
Pour plus d'informations sur la marche à suivre, consultez le guide pratique : Utilisation d' watsonx pour gérer les ressources des modèles d'invite et créer un déploiement.
Inférence d'un modèle de base avec un modèle d'invite déployé
L'envoi d'une demande d'inférence à un modèle de fondation déployé comporte les étapes suivantes :
Configurez l'APIClient. Lorsque vous inférez un modèle d'invite déployé, vous devez spécifier l'espace de déploiement pour le déploiement dans lequel le modèle d'invite est hébergé.
from ibm_watsonx_ai import APIClient, Credentials from ibm_watsonx_ai.metanames import GenTextParamsMetaNames credentials=Credentials( url=<URL>, api_key=<API-KEY>, ) client = APIClient(credentials) client.set.default_space(space_id)Soumettez une demande d'inférence au modèle déployé.
Dans cet exemple, la méthode
generate_textest utilisée et la valeur de la variable d'invitequestionest spécifiée.generated_response = client.deployments.generate_text( deployment_id={deployment-id}, params={ GenTextParamsMetaNames.PROMPT_VARIABLES: { "question": "What plans do you offer?" } } )
Déploiement et inférence d'un modèle d'invite
Vous pouvez utiliser la bibliothèque Python pour déployer un modèle d'invite, puis inférence un modèle de base à l'aide du modèle d'invite déployé. Les étapes de haut niveau suivantes sont impliquées. Pour obtenir les étapes complètes et d'autres options, voir l' exemple de bloc-notes.
Importez et instanciez l'objet ` PromptTemplateManager `.
prompt_mgr = PromptTemplateManager( credentials=Credentials( api_key=<API-KEY>, url=<URL> ), space_id=<SPACE_ID> )Définir le modèle d'invite.
from ibm_watsonx_ai import APIClient from ibm_watsonx_ai.foundation_models.prompts import PromptTemplate from ibm_watsonx_ai.foundation_models.utils.enums import DecodingMethods from ibm_watsonx_ai.metanames import GenTextParamsMetaNames as GenParams my_credentials = { "url": "{cluster_url}", "apikey": {api_key}, } client = APIClient(my_credentials) prompt_template = PromptTemplate( name="New prompt", model_id=client.foundation_models.TextModels.FLAN_T5_XXL, model_params = {GenParams.DECODING_METHOD: DecodingMethods.SAMPLE}, description="My example", task_ids=["generation"], input_variables=["object"], instruction="Answer the following question", input_prefix="Human", output_prefix="Assistant", input_text="What is {object} and how does it work?", examples=[ ["What is a loan and how does it work?", "A loan is a debt that is repaid with interest over time."] ] )Enregistrez le modèle d'invite dans votre projet pour générer un identifiant de modèle d'invite.
stored_prompt_template = prompt_mgr.store_prompt(prompt_template=prompt_template) print(f"Asset id: {stored_prompt_template.prompt_id}")Chargez le texte dans le modèle d'invite.
from ibm_watsonx_ai.foundation_models.utils.enums import PromptTemplateFormats prompt_input_text = prompt_mgr.load_prompt( prompt_id=stored_prompt_template.prompt_id, astype=PromptTemplateFormats.STRING) print(prompt_input_text)Créez un déploiement de modèle d'invite et générez un ID de déploiement.
meta_props = { client.deployments.ConfigurationMetaNames.NAME: "SAMPLE DEPLOYMENT PROMPT TEMPLATE", client.deployments.ConfigurationMetaNames.ONLINE: {}, client.deployments.ConfigurationMetaNames.BASE_MODEL_ID: "ibm/granite-13b-chat-v2" } deployment_details = client.deployments.create( artifact_id=stored_prompt_template.prompt_id, meta_props=meta_props )Importez et instanciez l'objet ` ModelInference ` qui servira à l'inférence du modèle de base à l'aide du modèle de prompt déployé.
from ibm_watsonx_ai.foundation_models import ModelInference deployment_id = deployment_details.get("metadata", {}).get("id") model_inference = ModelInference( deployment_id=deployment_id, api_client=client )Inférence du modèle de base. Veillez à spécifier des valeurs pour toutes les variables d'invite définies dans le modèle d'invite.
from ibm_watsonx_ai.foundation_models.utils.enums import DecodingMethods model_inference.generate_text( params={ "prompt_variables": {"object": "a mortgage"}, GenParams.DECODING_METHOD: DecodingMethods.GREEDY, GenParams.STOP_SEQUENCES: ['\n\n'], GenParams.MAX_NEW_TOKENS: 50 } )
Utiliser un modèle d'invite pour brouillon du texte d'invite pour une demande d'inférence
L'inférence d'un modèle de base à l'aide d'un modèle d'invite qui n'est pas déployé implique les étapes suivantes. Pour obtenir les étapes complètes et d'autres options, voir l' exemple de bloc-notes.
Répertoriez tous les modèles d'invite disponibles.
Pour plus d'informations, consultez la section « Répertorier tous les modèles d'invite ».
Chargez le modèle d'invite que vous souhaitez utiliser. Le modèle d'invite n'a pas besoin d'être déployé. Convertissez le modèle en texte d'invite.
Pour plus d'informations, consultez l'invite de chargement.
prompt_text = prompt_mgr.load_prompt(prompt_id=stored_prompt_template.prompt_id, astype=PromptTemplateFormats.STRING) print(prompt_text)Remplacez les variables d'invite par les valeurs que vous souhaitez utiliser.
filled_prompt_text = prompt_text.format(object='credit card')Envoyez le texte d'invite rempli à un modèle de base pour l'inférence.
generated_response = model.generate_text(prompt=filled_prompt_input, ...)