0 / 0
Retourner à la version anglaise de la documentation
Inférence programmatique d'un foundation model à l'aide d'un modèle d'invite
Dernière mise à jour : 28 nov. 2024
Inférence programmatique d'un foundation model à 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.

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 :

  1. 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)
    
  2. 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'invite question 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.

  1. Importer et instancier l'objet PromptTemplateManager.

    prompt_mgr = PromptTemplateManager(
      credentials=Credentials(
        api_key=<API-KEY>,
        url=<URL>
      ),
      space_id=<SPACE_ID>
    )
    
  2. 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."]
      ]
    )   
    
  3. 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}")
    
  4. 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)
    
  5. 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
    )
    
  6. 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
    )
    
  7. 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.

  1. Répertoriez tous les modèles d'invite disponibles.

    Pour plus d'informations, voir Liste de tous les modèles d'invite.

  2. 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)
    
  3. Remplacez les variables d'invite par les valeurs que vous souhaitez utiliser.

    filled_prompt_text = prompt_text.format(object='credit card')
    
  4. 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

Recherche et réponse à l'IA générative
Ces réponses sont générées par un modèle de langue de grande taille dans watsonx.ai en fonction du contenu de la documentation du produit. En savoir plus