0 / 0
資料の 英語版 に戻る
foundation modelをプログラムで推論する
最終更新: 2024年11月28日
foundation modelをプログラムで推論する

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 ライブラリ