0 / 0
Zurück zur englischen Version der Dokumentation
Programmatische Inferenz eines foundation model mit Hilfe einer Prompt-Vorlage
Letzte Aktualisierung: 28. Nov. 2024
Programmatische Inferenz eines foundation model mit Hilfe einer Prompt-Vorlage

Sie können eine gespeicherte Vorlage für Eingabeaufforderungen verwenden, um Basismodelle in IBM watsonx.ai programmgesteuert anzufordern.

Eine Eingabeaufforderungsvorlage ist ein Asset, das Sie erstellen können, um eine Kombination aus statischem Text für Eingabeaufforderungen, Modellparametern und Eingabeaufforderungsvariablen zu erfassen, die die gewünschten Ergebnisse aus einem bestimmten Modell generieren, damit Sie es wiederverwenden können.

Weitere Informationen zu Eingabeaufforderungsvariablen finden Sie unter Wiederverwendbare Eingabeaufforderungen erstellen.

Sie können eine Eingabeaufforderungsvorlage wie folgt verwenden:

  • Ableitung eines foundation model unter Verwendung einer eingesetzten Prompt-Vorlage.
  • Implementieren Sie eine Eingabeaufforderungsvorlage und verwenden Sie dann die bereitgestellte Vorlage in einer Inferenzanforderung.
  • Hinzufügen von Text zu einer Eingabeaufforderung auf der Grundlage einer Eingabeaufforderungsvorlage und anschließendes Ableiten eines foundation model (ohne Einsatz der Eingabeaufforderungsvorlage).

Verwenden Sie Funktionen, die in der Python -Bibliothek watsonx.ai in Notebooks in watsonx.ai verfügbar sind, um Eingabeaufforderungen mit einer Eingabeaufforderungsvorlage zu übergeben.

Beispielnotebook

Weitere Informationen über die zu befolgenden Schritte finden Sie unter Beispiel-Notizbuch: Verwendung von watsonx zur Verwaltung von Prompt-Vorlagen und zur Erstellung einer Bereitstellung.

Ableitung eines foundation model mit einer eingesetzten Prompt-Vorlage

Das Senden einer Schlussfolgerungsanfrage an ein eingesetztes foundation model umfasst die folgenden Schritte:

  1. Konfigurieren Sie den API-Client. Wenn Sie auf eine bereitgestellte Eingabeaufforderungsvorlage verweisen, müssen Sie den Bereitstellungsbereich für die Bereitstellung angeben, in der die Eingabeaufforderungsvorlage gehostet wird.

    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. Übergeben Sie eine Inferenzanforderung an die bereitgestellte Vorlage.

    In diesem Beispiel wird die Methode generate_text verwendet, und der Wert der Eingabeaufforderungsvariablen question wird angegeben.

    
    generated_response = client.deployments.generate_text(
      deployment_id={deployment-id},
      params={
         GenTextParamsMetaNames.PROMPT_VARIABLES: {
             "question": "What plans do you offer?"
         }
      }
      )
    

Eingabeaufforderungsvorlage bereitstellen und inferenzieren

Sie können die Python verwenden, um eine Eingabeaufforderungsvorlage bereitzustellen, und dann mithilfe der bereitgestellten Eingabeaufforderungsvorlage auf ein foundation model schließen. Die folgenden allgemeinen Schritte sind beteiligt. Die vollständigen Schritte und weitere Optionen finden Sie im Beispielnotebook.

  1. Importieren und instanziieren Sie das Objekt PromptTemplateManager.

    prompt_mgr = PromptTemplateManager(
      credentials=Credentials(
        api_key=<API-KEY>,
        url=<URL>
      ),
      space_id=<SPACE_ID>
    )
    
  2. Definieren Sie die Prompt-Vorlage.

    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. Speichern Sie die Prompt-Vorlage in Ihrem Projekt, um eine Prompt-Vorlagen-ID zu erzeugen.

    stored_prompt_template = prompt_mgr.store_prompt(prompt_template=prompt_template)
    print(f"Asset id: {stored_prompt_template.prompt_id}")
    
  4. Laden Sie den Text in die Eingabeaufforderungsvorlage.

    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. Erstellen Sie eine Implementierung mit Eingabeaufforderungsvorlage und generieren Sie eine Implementierungs-ID.

    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. Importieren und instanziieren Sie das ModelInference, das für die Inferenz des foundation model verwendet werden soll, indem Sie die eingesetzte Prompt-Vorlage verwenden.

    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. Ableitung des foundation model. Geben Sie unbedingt Werte für alle Eingabeaufforderungsvariablen an, die in der Eingabeaufforderungsschablone definiert sind.

    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
      }
    )
    

 

Verwenden einer Eingabeaufforderungsvorlage zum Entwurf von Eingabeaufforderungstext für eine Inferenzanforderung

Das Inferencing eines foundation model mit Hilfe einer Prompt-Vorlage, die nicht eingesetzt wird, umfasst die folgenden Schritte. Die vollständigen Schritte und weitere Optionen finden Sie im Beispielnotebook.

  1. Listet alle verfügbaren Eingabeaufforderungsvorlagen auf.

    Weitere Informationen finden Sie unter Alle Prompt-Vorlagen auflisten.

  2. Laden Sie die Eingabeaufforderungsvorlage, die Sie verwenden möchten. Die Eingabeaufforderungsvorlage muss nicht implementiert werden. Konvertieren Sie die Vorlage in Eingabeaufforderungstext.

    Weitere Informationen finden Sie unter Eingabeaufforderung laden.

    prompt_text = prompt_mgr.load_prompt(prompt_id=stored_prompt_template.prompt_id, astype=PromptTemplateFormats.STRING)
    print(prompt_text)
    
  3. Ersetzen Sie alle Eingabeaufforderungsvariablen durch die Werte, die Sie verwenden möchten.

    filled_prompt_text = prompt_text.format(object='credit card')
    
  4. Senden Sie den ausgefüllten Prompt-Text an ein foundation model zum Inferencing.

    generated_response = model.generate_text(prompt=filled_prompt_input, ...)
    

Übergeordnetes Thema: Python -Bibliothek

Generative KI-Suche und -Antwort
Diese Antworten werden von einem großen Sprachmodell in watsonx.ai basierend auf dem Inhalt der Produktdokumentation generiert. Weitere Informationen