保存されたプロンプト・テンプレートを使用して、 IBM watsonx.ai のファウンデーション・モデルにプログラムでプロンプトを出すことができます。
プロンプト・テンプレートは、特定のモデルから必要な結果を生成するプロンプト静的テキスト、モデル・パラメーター、およびプロンプト変数の組み合わせを取り込んで再利用できるようにするために作成できる資産です。
プロンプト変数について詳しくは、 再使用可能なプロンプトの作成を参照してください。
プロンプト・テンプレートは、以下の方法で使用できます。
- 配置されたプロンプトテンプレートを使用して、foundation modelを推論する。
- プロンプト・テンプレートをデプロイしてから、そのデプロイ済みテンプレートを推論要求で使用します。
- プロンプトテンプレートに基づいてプロンプトにテキストを追加し、(プロンプトテンプレートを展開することなく)foundation modelを推論する。
watsonx.ai のノートブックの watsonx.ai Python ライブラリーで使用可能な関数を使用して、プロンプト・テンプレートでプロンプトを送信します。
サンプル・ノートブック
従うべき手順の詳細については、'サンプルノートブックwatsonxプロンプトテンプレートアセットを管理し、デプロイメントを作成する を参照のこと。
展開されたプロンプトテンプレートによるfoundation modelの推論
デプロイされたfoundation modelモデルに推論リクエストを送るには、以下のステップを踏む:
APIClient を構成します。 デプロイされたプロンプト・テンプレートを推論する場合、プロンプト・テンプレートがホストされているデプロイメントのデプロイメント・スペースを指定する必要があります。
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)
デプロイされたテンプレートに推論要求を送信します。
この例では、
generate_text
メソッドが使用され、question
プロンプト変数値が指定されています。generated_response = client.deployments.generate_text( deployment_id={deployment-id}, params={ GenTextParamsMetaNames.PROMPT_VARIABLES: { "question": "What plans do you offer?" } } )
プロンプト・テンプレートのデプロイおよび推論
Pythonライブラリを使用してプロンプトテンプレートをデプロイし、デプロイされたプロンプトテンプレートを使用してfoundation modelを推論することができる。 以下の大まかなステップが含まれます。 完全なステップおよびその他のオプションについては、 サンプル・ノートブックを参照してください。
PromptTemplateManagerオブジェクトをインポートしてインスタンス化します。
prompt_mgr = PromptTemplateManager( credentials=Credentials( api_key=<API-KEY>, url=<URL> ), space_id=<SPACE_ID> )
プロンプトテンプレートを定義する。
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."] ] )
プロンプトテンプレートをプロジェクトに保存し、プロンプトテンプレートIDを生成する。
stored_prompt_template = prompt_mgr.store_prompt(prompt_template=prompt_template) print(f"Asset id: {stored_prompt_template.prompt_id}")
プロンプト・テンプレートにテキストをロードします。
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)
プロンプト・テンプレート・デプロイメントを作成し、デプロイメント 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 )
デプロイされたプロンプト・テンプレートを使って、foundation modelの推論に使用するModelInferenceオブジェクトをインポートしてインスタンス化します。
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 )
foundation modelの推論。 プロンプト・テンプレートで定義されているプロンプト変数には、必ず値を指定してください。
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 } )
プロンプト・テンプレートを使用して、推論要求のプロンプト・テキストのドラフトを作成します
デプロイされていないプロンプトテンプレートを使用してfoundation modelを推論するには、以下の手順を踏む。 完全なステップおよびその他のオプションについては、 サンプル・ノートブックを参照してください。
使用可能なすべてのプロンプト・テンプレートをリストします。
詳細については、「すべてのプロンプトテンプレートをリストする」を参照してください。
使用するプロンプト・テンプレートをロードします。 プロンプト・テンプレートをデプロイする必要はありません。 テンプレートをプロンプト・テキストに変換します。
詳しくはロードプロンプトを参照。
prompt_text = prompt_mgr.load_prompt(prompt_id=stored_prompt_template.prompt_id, astype=PromptTemplateFormats.STRING) print(prompt_text)
任意のプロンプト変数を、使用する値で置き換えます。
filled_prompt_text = prompt_text.format(object='credit card')
入力されたプロンプトテキストを推論のためのfoundation modelモデルに送る。
generated_response = model.generate_text(prompt=filled_prompt_input, ...)
親トピック: Python ライブラリー