IBM watsonx.aiで未来の扉を開く: 初心者のための冒険ガイド

昨年の秋ごろから気になっていた```IBM watsonx.aiですが、ようやく時間ができたので、これまでの情報をもとにさわってみようかなと思います。 まずは事前に準備されたサンドボックスを使用して、どんな感じなのかを体験してみようと思います。

Qiitaにも記事はありますが半年ほど前の情報が多いので、その後の変化などを楽しめるといいのかなと感じています。

このエントリーの内容ではIBM Cloudの知識が少し必要な部分もありますが、そこまで詳しい知識がなくても体験ができるというレベルを目指したいと思います。また、このサンドボックスからプログラミングへの派生などに関してもヒントがあれば残してみようと思います。

参考にしたのは以下の情報となります。

【参考】

qiita.com

qiita.com

前提

IBM Cloud環境でwatsonx.aiを使用することになるので、できれば事前にIBMのユーザアカウント(IBMid)の取得を行います。以下のリンクに詳しく書かれているようです。参考先の情報では、「IBM Cloud アカウントをお持ちの方であれば、無料で試すことが可能です。」とのことです🤩

qiita.com

自分は、既にアカウントを取っていたのでそちらを使用しています。(支払い先登録済)

ではIBMidを取得したという前提で以降の作業を行っていきます。

watsonx.aiの登録を行う

以下のリンクにアクセスを行います。

jp-tok.dataplatform.cloud.ibm.com

すると以下のような画面になります。

ここでは使用するリージョンの選択も行うのですが、以前はダラスリージョンでのみ使用できていたものが、それ以外にフランクフルトや日本リージョンでも使用できるようになっていました。今回は、一部機能に制限はあるようですが、日本リージョン(【東京(jp-tok)】)を使用して試してみようと思います。

画面下部で事前に登録したIBMidでログイン行っていきます。

ログインを行うと以下のような画面に遷移します。今回はプロンプト・ラボサンドボックスを使用するので【基盤モデルを試し、プロンプトを作成する】のボタンをクリックします。

プロンプト・ラボのダイアログが開くので、

3つのボックスにチェックを入れて【ツアーの開始(またはツアーのスキップ)】ボタンをクリックします。 ツアーがが開始されたら終了してしまっても大丈夫です。

続いて、以下のような画面に遷移します。この画面がプロンプト・ラボになるようです。

この画面には【チャット】、【構造化】、【フリー・フォーム】という3つのプロンプトを切り替えて使用できるようになっています。 参考情報の時点では【チャット】機能はなかったようですができたようですね。

チャット画面

構造化画面

フリー・フォーム画面

この中で、分かりやすいのはチャットと構造化なので、こちらを操作してみます。

チャット

【チャット】を選択して、下部にあるサンプルの選択肢のWhat are more efficient alternatives to a 'for loop' in Python?をクリックするとチャットのインターフェースで質問に答えてくれます。

質問のプロンプトの入力を英語で行っているので、返答も英語になっています。

では、質問のプロンプトの入力を日本語で行ってみると、日本語で返答が帰ってきます。

このあたりは適応しているモデルが日本語に対応しているかに依存します。 デフォルトで使用しているllama-2-70b-chatは商用利用可で日本語に対応しているみたいですね。

参考:llama-2-70b-chatの情報

replicate.com

huggingface.co

また、Chat-GPTのように返答が途中で止まってしまう場合には「つづき」などのワードをプロンプト入力することで、返答の続きが出力されます。

使用モデルの変更

使用モデルはllama-2-70b-chatを使用していましたが、変更したくなることもあります。一度、実行してしまうとモデルの変更ができなくなるので、新規にプロンプトを生成する必要があります。

【新規プロンプト+】をクリックして【モデル】のプルダウンメニューを開くことで使用可能な【すべての基盤モデル】を選択できます。

後は、モデルのリストから選択を行います。ただし、モデルの使用には規約の内容確認が必要となりますので十分確認の上使用してください。モデルの利用規約の確認もUI上からできるようになっています。

構造化

【構造化】は、事前に機能を決めておき、その機能の入力に対する出力を得るという形のもののようです。 【構造化】を選択して、以下のように操作を行っていきます。

  1. 【命令(オプション)】で機能を入力 ➡ 今回は「英語に翻訳してください」と入力
  2. 【例(オプション)】の出力の項目の変更 ➡ 「英訳」に変更
  3. 【試行】の入力部分に文面を入力 ➡ 今回は「走れメロス」の冒頭部分を入力しました。
  4. 【生成】ボタンをクリック

設定が終われば、【試行】と【生成】のみの操作のみとなります。

【生成】ボタンを押すとボタン色が赤くなります。

そして、生成された結果が【試行】の出力エリアに表示されました。 入力文書に不適切な文字列があるとそれを削除して生成を行っていました。今回は「邪知暴虐」が引っかかったようです。

また、生成時のステータスも表示してくれます。情報としてはトークン数と秒数となります。トークン数はコストに跳ね返るので注意は必要かもしれません。

もし制限をかけるようであれば画面右の【モデルパラメータ設定】ボタンをクリックし、

パラメータ設定を行うことになります。

これで、チャット、構造化の形式を使用できるようになりました。

サンドボックスのテストからコード記述へ

基本的な機能のテストはできたのですが、これではただの実験にすぎません。実はこのサンドボックスではプロンプトの変わりにcurlコマンドNode.jsPythonなどを使用した場合のサンプルも生成をしてくれます。最後にこれを見ておきます。

画面右上の【コード表示】ボタンをクリックすると下部に、プロンプトを使用したアクセス例をそれぞれ生成してくれています。コードを記述する場合には実行例やサンプルコードの認証(アクセストークン:YOUR_ACCESS_TOKEN)を追加することで実行できます。

【チャット】のコード表示

curlコマンド

Node.jsのコード

async/awaitを使用するサンプルになっているようです。

Pythonのコード

【構造化】のコード表示

curlコマンド

Node.jsのコード

Pythonのコード

おわりに

watsonx.aiとの最初の冒険は、思ったよりもずっとワクワクする体験でした。技術の世界が初めての方でもわりと簡単に効果を得ることができそうです。

最初は「AIって難しそう」と思うかもしれませんが、実際に触れてみると、不思議に面白く感じる世界に感じてくるかなと思います。 コードでの利用に関しては興味ある所なので、引き続き使用してみようと思います。

/* -----codeの行番号----- */