IBM watsonx.ai の基礎モデルは、Python ライブラリを使用することで、プログラムでプロンプトを表示できます。
プロンプトラボでプロンプトを作成した後、プロンプトをノートブックとして保存し、ノートブックを編集することができます。 生成されたノートブックを出発点として使うと便利です。なぜなら、認証情報やプロジェクトID情報の取得など、初期設定のステップを代行してくれるからです。
また、watsonx.ai のノートブックから、watsonx.ai Python ライブラリを使って、基礎モデルを直接操作することもできます。 詳しくは、'ibmwatsonxaiライブラリ を参照のこと。
サンプル・ノートブック
watsonx.aiで利用可能な様々な基礎モデルを促すサンプルノートブックは、Pythonサンプルノートブックを参照してください。 これらのノートのほとんどは、リソース・ハブからも入手できる。
例えば、Usewatsonxto analyze car renals reviewsは、watsonx.aiの foundation modelを推論するステップを学ぶために実行できるサンプルノートブックです。
foundation modelの推進
foundation modelをプロンプトする前に、watsonx.ai で推論に使用できる基礎モデルのリストを入手してください。 詳しくは、利用可能なファンデーション・モデルについての情報を得るをご覧ください。
次のサンプルコードでは、flan-t5-xxl-11b
モデルをさまざまなメソッドでプロンプト化する方法を示しています。
テキスト・ストリームの生成方法を示す例だけが、プロンプト用のモデル・パラメータを含んでいるが、どのメソッドにもパラメータを指定できる。
foundation modelをプロンプトするための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
有害コンテンツの削除
foundation modelモデルにプロンプトを送信する場合、憎悪、虐待、冒涜(HAP)フィルターと個人を特定できる情報(PII)フィルターはデフォルトで無効になります。 APIのmodifications
フィールドを使用することで、これらを有効にし、HAPフィルターの感度を指定することができます。
フィルターがどのように機能するかについては、モデルの入力と出力から有害な言語を取り除くを参照してください。
Pythonライブラリの使用時に、デフォルト設定を適用したフィルタを有効にするには、リクエストに以下のパラメータを含めます:
response = model.generate(prompt,guardrails=True)
次のコード例は、フィルタを有効にして設定する方法を示しています。
guardrails_hap_params = {
GenTextModerationsMetaNames.INPUT: False,
GenTextModerationsMetaNames.THRESHOLD: 0.45
}
guardrails_pii_params = {
GenTextModerationsMetaNames.INPUT: False,
GenTextModerationsMetaNames.OUTPUT: True,
GenTextModerationsMetaNames.MASK: {"remove_entity_value": True}
}
response = model.generate(prompt,
guardrails=True,
guardrails_hap_params=guardrails_hap_params,
guardrails_pii_params=guardrails_pii_params)
親トピック Python ライブラリ