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:
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)
Übergeben Sie eine Inferenzanforderung an die bereitgestellte Vorlage.
In diesem Beispiel wird die Methode
generate_text
verwendet, und der Wert der Eingabeaufforderungsvariablenquestion
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.
Importieren und instanziieren Sie das Objekt PromptTemplateManager.
prompt_mgr = PromptTemplateManager( credentials=Credentials( api_key=<API-KEY>, url=<URL> ), space_id=<SPACE_ID> )
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."] ] )
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}")
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)
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 )
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 )
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.
Listet alle verfügbaren Eingabeaufforderungsvorlagen auf.
Weitere Informationen finden Sie unter Alle Prompt-Vorlagen auflisten.
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)
Ersetzen Sie alle Eingabeaufforderungsvariablen durch die Werte, die Sie verwenden möchten.
filled_prompt_text = prompt_text.format(object='credit card')
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