基盤モデルプログラムで参照する ( Python )
IBM watsonx.ai の基礎モデルは、Python ライブラリを使用することで、プログラムでプロンプトを表示できます。
Prompt Lab でプロンプトを作成した後、プロンプトをノートブックとして保存し、そのノートブックを編集することができます。 生成されたノートブックから開始すると、認証情報やプロジェクトIDの取得など、初期設定の手順を処理してくれるので便利です。
または、 watsonx.ai で作成した新しいノートブックから、直接基盤モデル操作することもできます。
詳しくは watsonx.ai Python ライブラリの ModelInference クラスを参照。
サンプル・ノートブック
watsonx.aiで利用可能な様々な基礎モデルを促すサンプルノートブックは、Pythonサンプルノートブックを参照してください。 これらのノートのほとんどは、リソース・ハブからも入手できる。
例えば、 Use watsonx to analyze car renals reviews は、 watsonx.ai で基盤モデル推論に関わるステップを学ぶために実行できるサンプル・ノートブックです。
基盤モデル推進
基盤モデルプロンプトする前に、 watsonx.ai で推論に使用できる基盤モデルリストを入手してください。 詳しくは、利用可能なファンデーション・モデルについての情報を得るをご覧ください。
次のサンプルコードでは、flan-t5-xxl-11b
モデルをさまざまなメソッドでプロンプト化する方法を示しています。
テキスト・ストリームの生成方法を示す例だけが、プロンプト用のモデル・パラメータを含んでいるが、どのメソッドにもパラメータを指定できる。 validate=False
パラメータは、モデルIDが有効であり、利用可能な基盤モデルモデルを参照していることをチェックするステップをスキップすることによって、リクエストを高速化する。
Python 基盤モデルプロンプト用サンプルコード
import json
from ibm_watsonx_ai import APIClient
from ibm_watsonx_ai.foundation_models import ModelInference
from ibm_watsonx_ai.metanames import GenTextParamsMetaNames as GenParams
from ibm_watsonx_ai.foundation_models.utils.enums import DecodingMethods
my_credentials = {
"url": "https://{region}.ml.cloud.ibm.com",
"apikey": {my-IBM-Cloud-API-key},
}
client = APIClient(my_credentials)
gen_parms = {
GenParams.DECODING_METHOD: DecodingMethods.SAMPLE,
GenParams.MAX_NEW_TOKENS: 100
}
model_id = client.foundation_models.TextModels.FLAN_T5_XXL
project_id = {my-project-ID}
space_id = None
verify = False
model = ModelInference(
model_id=model_id,
credentials=my_credentials,
params=gen_parms,
project_id=project_id,
space_id=space_id,
verify=verify,
)
prompt_txt = "In today's sales meeting, we "
gen_parms_override = gen_parms = {
GenParams.DECODING_METHOD: DecodingMethods.SAMPLE,
GenParams.MAX_NEW_TOKENS: 50
}
# GENERATE
generated_response = model.generate(prompt=prompt_txt, params=gen_parms_override)
print("Output from generate() method:")
print(json.dumps(generated_response, indent=2))
# GENERATE TEXT
generated_text_response = model.generate_text(prompt=prompt_txt, params=gen_parms_override)
print("Output from generate_text() method:")
print(generated_text_response)
# GENERATE STREAM
gen_stream_params = {
GenParams.DECODING_METHOD: DecodingMethods.GREEDY,
GenParams.TEMPERATURE: 0.5,
GenParams.MIN_NEW_TOKENS: 10,
GenParams.MAX_NEW_TOKENS: 20
}
print("Output from generate_text_stream() method:")
stream_response = model.generate_text_stream(prompt=prompt_txt, params=gen_stream_params)
for chunk in stream_response:
print(chunk, end='')
サンプルコードを使うには、{region}
、{my-IBM-Cloud-API-key}
、{my-project-ID}
をあなたの環境で有効な値に置き換える必要があります。
generate()メソッドからの出力:
{
"model_id": "google/flan-t5-xxl",
"created_at": "2023-07-27T03:40:17.575Z",
"results": [
{
"generated_text": "will discuss the new product line.",
"generated_token_count": 8,
"input_token_count": 10,
"stop_reason": "EOS_TOKEN"
}
],
...
}
generate_text()メソッドからの出力:
will discuss the new product line.
generate_text_stream()メソッドからの出力:
will discuss the new product line. Let's start with marketing plans
有害コンテンツの削除
基盤モデルモデルにプロンプトを送信する場合、憎悪、虐待、冒涜(HAP)フィルターと個人を特定できる情報(PII)フィルターはデフォルトで無効になります。 APIのmoderations
フィールドを使用することで、これらを有効にし、HAPフィルターの感度を指定することができます。
フィルターがどのように機能するかについては、モデルの入力と出力から有害な言語を取り除くを参照してください。
Python ライブラリを使用する際に、デフォルト設定を適用したガードレイル・フィルタを使用するには、リクエストに以下のパラメータを含めます:
response = model.generate(prompt,guardrails=True)
次のコード例は、フィルタを有効にして設定する方法を示しています:
# Enable and configure HAP filter
guardrails_hap_params = {
GenTextModerationsMetaNames.INPUT: False,
GenTextModerationsMetaNames.THRESHOLD: 0.45
}
# Enable PII filter
guardrails_pii_params = {
GenTextModerationsMetaNames.INPUT: False,
GenTextModerationsMetaNames.OUTPUT: True,
GenTextModerationsMetaNames.MASK: {"remove_entity_value": True}
}
# Enable and configure Granite Guardian model moderation
guardrails_granite_guardian_params = {
GenTextModerationsMetaNames.INPUT: True,
GenTextModerationsMetaNames.THRESHOLD: 0.01
}
response = model.generate(
prompt,
guardrails=True,
guardrails_hap_params=guardrails_hap_params,
guardrails_pii_params=guardrails_pii_params,
guardrails_granite_guardian_params=guardrails_granite_guardian_params)
親トピック テキスト生成