6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonからwatsonx.aiのサービスを使ってみる

Last updated at Posted at 2024-06-13

はじめに

watsonx.aiの生成AIのサービスをPythonスクリプト(Jupyter Notebook)から実行する一連の流れを試してみます。具体的にはプロンプトにより指示を与えて、それに対する回答の文書を生成させるということをやりたいです。
ここでは環境構築からサンプルを動かせるところまでをやってみます。

※2024年6月時点の情報です

環境イメージ

今回使用する環境の全体像は以下の通りです。
image.png

IBM Cloud上でwatsonx.aiを称するためのサービスを立ち上げます。今回はIBM Cloudのアカウントがあれば無償で利用できる範囲で試してみます。

PC側はWindows11のVS Codeから使用することを想定してPythonおよびJupyter関連のExtensionを追加します。
また、GitHubで提供されているサンプルのPythonスクリプトを実行する想定ですが、WindowsおよびVS CodeでGitについてのセットアップは済みの想定とします。

今回の操作をやってみる際に以下の記事を参考にさせていただいております。

Qiita記事:
0からのIBM watsonx.aiのはじめかた
VSCodeでJupyter Notebookを使ってみた【ゼロからPython勉強してみる】

IBM Cloud Documentation:
Watson Studio
Watson Machine Learning
生成 AI ソリューションの開発 - 生成 AI ソリューションのコーディング
IBM Cloud API Docs - watsonx.ai

IBM Cloud側構成

watsonx.aiの構成

Watson Studioサービスのインスタンス作成

watsonx.ai関連の各種ツールを提供してくれるWatson Studioというサービスがあります。まずはこのWatson Studioというサービスのインスタンスを作成します。

IBM Cloudの管理コンソールから検索窓で「Watson Studio」を入力し、Watson Studioサービスを選択
image.png

作成したいIBMアカウントの元で、ロケーション、プラン(今回は無料のライトプラン)を選択し、作成
image.png

Watson Studioサービスのインスタンスが作成されました。
image.png

watsonxの起動

「Launch in」の横のプルダウンメニューからIBM watsonxを選択します。
image.png

ようこそ画面が表示されるので、利用規約同意にチェックし「x」ボタン or ツアー実行
image.png

プロジェクト作成

watsonxのトップ画面の下の方の「プロジェクト」の横の「+」アイコンをクリック
image.png

適当な名前を指定して作成
image.png

プロジェクトが作成されました。
image.png

プロジェクトIDの確認

プロジェクトの画面で「管理」タブからプロジェクトIDを確認する
image.png

※この情報はPythonからのアクセス時に使用します

Machine Learningサービスの作成および関連付け

プロンプトLabなどを使用する場合、Machine Learningのサービスを別途作成して関連付けをしておく必要があります。

プロジェクトの画面の「管理」タブから「サービスおよび統合」を選択し、「サービスの関連付け」をクリック
image.png

新規サービスをクリック
image.png

Watson Machine Learningを選択
image.png

無料のライトプランを選択して作成
image.png

今作成したMachine Learningのインスタンスを選択して「アソシエイト」
image.png

Prompt Labを試してみる

watsonxのトップ画面から、開く場所: 「test01」(上で作成したプロジェクト名)になっていることを確認し「Prompt Labを開く」を選択
image.png

Prompt Labが開くので、サンプルの1つを選択してみます。
image.png

結果が表示されました。
image.png

英語なので日本語で回答するよう指示してみます。
image.png

先ほどの結果が日本語訳されて出力されました。
image.png

チャット形式で生成AIの機能が使えることが確認できました。

API Keyの作成

IBM Cloudの管理コンソールにて、当該IBM Cloudアカウントを選択して、管理 - アクセス(IAM)を選択
image.png

APIキーの画面から作成をクリック
image.png

適当に名前を付けて作成
image.png

APIキーが生成されます
image.png
※ここで生成されるキーはこのタイミングでしか確認できませんので、コピーして安全な場所に管理しておく必要があります。

※この情報はPythonからのアクセス時に使用します

エンドポイントURL確認

Watsonx Studioサービスのインスタンスを作成したロケーションを確認します。(今回の場合は「東京」)
image.png

以下のサイトにて、ロケーションに応じたエンドポイントのURLを確認します。
Endpoint URLs
東京の場合https://jp-tok.ml.cloud.ibm.comとなります。

※この情報はPythonからのアクセス時に使用します

PC側構成

Windows11上にPython, Jupyter Notebook関連のセットアップを行います。VS Code, Gitについては設定済みの想定です。

Pythonのインストール

以下のサイトからインストーラーをダウンロードします。
https://www.python.org/downloads/windows/

今回は3.10.xのうち2024年6月時点で最新の3.10.11をインストールすることにします。
image.png

ダウンロードしたexeを実行
image.png

前に入れたやつがあったのでUpgrade
image.png

image.png

image.png

確認

c:\>python --version
Python 3.10.11

c:\>pip --version
pip 23.0.1 from C:\Python310\lib\site-packages\pip (python 3.10)

一応PATHも確認
image.png

VS Code Extensionのインストール

マーケットプレースからPythonおよびJupyterのExtensionをインストールします。

image.png

image.png

Python仮想環境のセットアップ

Pythonでは実行環境を仮想化する仕組みが提供されていますのでこれを利用します。

VS Codeでターミナルを開き、適当なディレクトリを作成して、カラのpythonスクリプトファイル「blank.py」を作成しておきます。そのディレクトリで「python -m venv test01」を実行します。(test01という仮想環境を作成します)
image.png

新しい環境が作成されました。これをワークスペースフォルダに選択しますか?

というポップアップが出ますがここでは無視します。

Ctrl+Shit+Pでコマンドパレットを開き、「Python: インタープリターを選択」を選択します。
image.png

先ほど作成した仮想環境(test01)を選択します。
image.png

これで新しいターミナルを開くと、指定した仮想環境がActivateされた形で起動するはずなのだが、デフォルトで開くPower Shellだと恐らくポリシーに引っかかってActivateされてないっぽい。
image.png
多分この辺が関係ありそう: Windows10のVSCodeでvenvを利用するときの注意点

通常のコマンドプロンプトを開く
image.png

プロンプトの先頭に(test01)という仮想環境がActivateされていることを示す表記があるのを確認
image.png

サンプル実行

サンプル・リポジトリのクローン

GitHubにwatson関連のサンプル・スクリプトが含まれたリポジトリが公開されています。
GitHub - IBM/watson-machine-learning-samples
こちらをローカルにクローンして利用します。

VS CodeのコマンドパレットからGitクローンを選択します。
image.png

クローンしたいリポジトリのURLを指定します。
image.png

適当なフォルダを指定してクローンします。

以下のポップアップが出るのでワークスペースに追加
image.png

VS Codeのワークスペースに追加されました。
image.png

サンプルのJupyter Notebookを実行してみる

以下に提供されるサンプルを動かしてみます。
cloud/notebooks/python_sdk/deployments/foundation_models/Use watsonx, and Meta llama-3-70b-instruct to answer question about an article.ipynb

上のNotebookをVS Codeで開いて、指示通り実行していきます。
image.png

Notebookを開いたあとに、右上にtest01(Python 3.10.11)と表示されていることを確認してください。これは、このNotebookが先に作成した仮想環境「test01」に紐づいていることを示しています(このNotebook上のコードを実行する際に、この仮想環境で実行されることになる)。意図しない環境に紐づいている場合は、ここの表示をクリックすると、仮想環境が選択できるようになるはずなので使用したい仮想環境を選択してください。

※ある環境では、仮想環境に切り替えようとしたときにipykernelがインストールできないというようなエラーで切り替えに失敗したことがありました。コマンドプロンプトを開いて仮想環境をActivateし、そこで pip install ipykernelを手動で実行した後切り替えを行うとうまくいきました。

Install dependencies

コードブロックの左側の三角アイコンをクリックしてコードを実行していきます。
まずは必要なモジュールのインストール
image.png

※ここでトラップが2つありますのでご注意を!
(1) 先頭に「!」マークがついた命令は、OSコマンドを発行することを意味しています。Windows環境でこれを実行すると文字化けが生じてしまいます。VS CodeのJupyterで使われるOSコマンド実行環境の文字コードは恐らくShiftJISベースになっていて、Notebook自体はUTF-8で解釈しようとしているために文字化けが生じるものと推察されます。
参考: VsCode_Jupyterの文字化けの対策(chcp)
上の記事に従って、まず!chcp 65001を実行してOSコマンド実行シェルの文字コードをUTF-8に変更してから実行すると文字化けは解消されました。Notebookを改修するのはイケてないのでどこか設定で文字コードを指定できないか探したのですが見つからず...

(2) pip installコマンドの結果をパイプでつないでtailコマンドに渡していますが、Windowsでは標準でtailコマンドは提供されていないようです。このサンプルはMacやLinuxを前提に作成されているものと思われます。私の環境ではMinGWというツールをセットアップしているので使えましたが、そういうものが無い環境だとtailコマンド使えないので、パイプ以降は削除して実行する必要があります。
※MinGW入れておくとtailとかgrepとかUnixコマンドをWindows上で使えるので非常に便利です。おすすめです。

Defining the WML credentials

URL部分は、今回東京リージョンのサービスを使用するので、上で確認した東京リージョン用のエンドポイントURL(https://jp-tok.ml.cloud.ibm.com)に置き換えます。
image.png

実行するとAPI Keyの入力が促されるので、先に作成したAPI Keyを指定します。
image.png

image.png

Defining the project id

image.png

実行するとProject IDの入力が促されるので、先に作成したプロジェクトのProject IDを指定します。
image.png

Specify Foundation Model

image.png

Defining the model parameters

image.png

Initialize the model

image.png

Model's detail

image.png

Define Instruction and question

image.png

ここでは、サンプルとしてあるArticleの文章を示し、それに対する質問と答えのサンプルをInstructionとして与えています。
その後、求めるquestionを指定しています。

Answer the question using Meta llama-3-70b-instruct model.

image.png

以下のquestionに対して、

question = "Question: Why should you use mulch when growing tomatoes?"

以下のanswerが返されました

Answer: To prevent soil-borne disease from splashing up onto the fruit when you water.

サンプルをカスタマイズして実行

上のサンプルは英語の記事を与えてその内容についての質問をし、回答を生成させるサンプルでした。これを日本語に置き換えて実施してみます。

Instructionに日本語を指定

元々のサンプルの英文をGoogle翻訳で日本語に翻訳した文章に置き換えてみます。

image.png

Instruction:

記事の情報のみを使用して、次の質問に回答してください。記事に適切な回答がない場合は、「わかりません」と答えてください。

Article: 
###
トマトは、野菜畑で最も人気のある植物の 1 つです。
成功のヒント: 
病気や害虫に強い品種を選択すれば、トマトの栽培は非常に簡単です。
挑戦したい経験豊富な園芸家にとって、栽培できる伝統品種や特別な品種は無数にあります。
トマトの植物にはさまざまなサイズがあります。
12 インチ未満の非常に小さな品種があり、バルコニーやパティオの鉢や吊り下げバスケットでよく育ちます。
高さと幅が数フィートの茂みに成長し、より大きな容器で育てられる品種もあります。
プランターや花壇で幅と高さが数フィートの巨大な茂みに成長する品種もあります。
さらに、6 フィート以上の長いつる植物として成長し、トレリスをよじ登る品種もあります。
トマトの植物は、直射日光が当たる場所で最もよく育ちます。
トマトには、たっぷりと頻繁に水をやる必要があります。
マルチを使用すると、水をやったときに土壌伝染病が果実に飛び散るのを防ぐことができます。
吸芽を刈り込み、先端を摘み取るだけでも、植物は果実を生産するために全力を注ぐようになります。
###

Question: トマトの栽培は簡単ですか?
Answer: はい、病気や害虫に強い品種を選べば簡単です。

Question: トマトにはどんな品種がありますか?
Answer: 伝統品種や特産品種は無数にあります。

question:

Question: トマトを栽培するときにマルチを使用する必要があるのはなぜですか?

結果確認

image.png

Answer:

Answer: 土壌伝染病が果実に飛び散るのを防ぐためです。

日本語の指示に対してもきちんと回答が得られました。

おわりに

VS Code, Python, Jupyter Notebook を使用し、watsonx.aiの生成AIのサービスを利用する一連の流れを確認できました。
あとはこれをベースに色々と応用をしていけると思います。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?