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.
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érer un foundation model en utilisant 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.
- Ajouter du texte à une invite sur la base d'un modèle d'invite, puis inférer un foundation model (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 bloc-notes
Pour plus d'informations sur les étapes à suivre, voir Exemple de carnet de notes : Utiliser watsonx pour gérer les ressources du modèle d'invite et créer un déploiement.
Inférence d'un modèle de foundation model avec un modèle d'invite déployé
L'envoi d'une demande d'inférence à un foundation model 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_text
est utilisée et la valeur de la variable d'invitequestion
est 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érer un modèle de foundation model à 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.
Importer et instancier 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": "https://{region}.ml.cloud.ibm.com", "apikey": {my-IBM-Cloud-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 )
Importer et instancier l'objet ModelInference à utiliser pour référencer le foundation model en utilisant le modèle d'invite 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 foundation model. 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 foundation model à 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, voir Liste de 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, voir Charger l'invite.
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')
Envoyer le texte de l'invite rempli à un foundation model pour l'inférence.
generated_response = model.generate_text(prompt=filled_prompt_input, ...)
Rubrique parent: Python