LoginSignup
2
1

watsonx.aiによる生成系AIチャットボット設定の問題判別

Last updated at Posted at 2023-12-26

チャットボット作成ツールwatsonx AssistantWatson Discoveryのテキスト検索機能を使えば、ノーコードで簡単に生成AI watsonx.aiを使ったチャットボットを作成することができます。

今回、私はとあるwatsonx関連の文書から情報を探し出し、watsonx関連の調査をしたい、という必要性が発生しました。その際、「これもwatsonx.aiに答えてもらおう!」と思い立ちチャットボットを作成しました。そのチャットボットを設定後、なぜか一度動いたものが動かなくなってしまったのですが、問題解析をして復旧することができました。その時の記録が同様の設定をされる皆様の設定時・問題解決のヒントとなるよう期待し本記事を作成します。

環境

IBM Cloudの以下のSaaSサービスを使用しました。

設定の時に参考にした記事

本記事の前提として、以下の2つの記事を参考にさせていただきました。
本記事は特に1番目の記事の設定を理解されていることを前提として記述しますので、もし設定手順自体が初めてという方は先にこの記事に目を通すか実際にやってみることをお勧めします。

正常時の動作

まずは、動作を確認してみましょう。AssistantのPreviewメニューを選択すると、右下にチャットボットの画面が現れ、質問を入力することができます。
WS001431.PNG

「What's watsonx?」という質問を入力してみました。正しく動いているときの動作はこうなります。

「What's watsonx?」という質問に対して、AssistantがWD内の文書を参照して、説明してくれます。
私が持っていた文書が英語文書だったため、今回のAssistantは英語で対応をするよう設定しています。
WS001410.PNG

問題発生時の動作

今回問題が発生したときはこうなりました。「I'm sorry, I encountered an connection error」ということです。
WS001321.PNG

問題判別のステップ

「I'm sorry, I encountered an connection error」だけでは何が悪いのかわからないので、Assistantの中身をもう少し詳細に見ていきます。

verbose=trueの設定

さらに、もう少し詳細な情報を取得できるよう、下図の1-6の手順で
問題が発生しているAssistant(Chatbot※)の設定を変更します。

WS001413.PNG

WS001415.PNG

※IBM Cloud上のSaaSの1つのWatsonx Assistantサービス(インスタンス)の中には複数の「Assistant」が作れるようになっています(https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-assistant-add)。例えば、1つのWatsonx AssistantのSaaSのサービス(インスタンス)の中に「自動車の故障情報について回答してくれるAssistant(Chatbot)」とか「社内手続きについて教えてくれるAssistant(Chatbot)」を作ることができます。SaaSのサービス(インスタンス)のことなのか、インスタンスの中のAssistant(Chatbot)のことなのか、どっちのことを言っているのかよくわからなくなるのは私だけでしょうか……。本記事ではサービス・インスタンスのWatsonx Assistantと区別するために「Assistant(Chatbot)」という表記を使います。

Action > Previewの使用とverboseモードの動作確認

verboseの設定を変更したら、そのまま「Action」のページの右下にも「Preview」ボタンがあるので、ここからChatbotを起動してみましょう。

この「Action」のページの中の「Preview」では、Assistant(Chatbot)内で起動されるアクションの動作の1つ1つを詳細に表示し、内部で何が行われているか、詳しく確認することができます。(参考:アクションのレビューとデバッグ | IBM Cloud 資料)

WS001419.PNG

すると、Assistant(Chatbot)から実施されている処理の詳細情報が取得できます。
Previewウインドウ中で、黄色く「Extension error」と表示されている箇所がエラーの箇所です。「Inspect」という文字がリンクになっているのでクリックしてみます。

WA_action_verbose_true.PNG

Previewウインドウの左側に「Extension inspector」というウインドウがさらに開きます。

WS001323.PNG

Overviewタブでこの処理の概要、Advancedタブでこの処理のRequestのcurl表記、ResponseでどのようなResponseが返ってきたかを確認できます。

なんのエラーなのか?というのがResponseで確認できます。今回のエラーはこんな感じでした。

{"status":401,"body":{"errors":[{"code":"authentication_no_token","message":"Failed to authenticate the request due to no Bearer token in the request header"}],"trace":"41b64dbe013ecfb48777a32357548d63","status_code":401}}

Requestも見てみましょう。
WS001420.PNG

これらのRequest/Responseから、Assistantからwatsonx.aiのAPIを呼び出しているときに401エラーが発生した、と問題箇所を特定することができます。
(呼び出しているURLの"/ml/v1-beta/generation/text"の部分でwatsonx.aiのAPIであることがわかります。)

WS001421.PNG

401 "no Bearer token in the request"の修正

問題箇所が特定できたので、発生しているエラーを修正します。「no Bearer token」というメッセージのため、
watsonx.aiを呼び出している際の"Bearer token"(=APIキーのことです)を修正します。
以下の手順で、設定時に作成したCustom Extensionの設定を開いて修正します。

WS001428.PNG

WS001427.PNG

APIキーは、「watsonxのAPIを呼び出せるようになるまで」」の記事(※)にもあるように、以下のcurlコマンドを使って設定前に動作確認しておくと安心です。
(※本手順の設定をするときは「Service IDを作成する」~「watsonx のプロジェクトにService IDを含める」の箇所を参照すればよいです。)

curl --location 'https://iam.cloud.ibm.com/identity/token' \

--header 'Content-Type: application/x-www-form-urlencoded' \

--header 'Accept: application/json' \

--data-urlencode 'grant_type=urn:ibm:params:oauth:grant-type:apikey' \

--data-urlencode 'apikey=_input_your_apikey_here_'

APIキーの確認動作例(実行コマンド)

#!bin/bash

curl --location 'https://iam.cloud.ibm.com/identity/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Accept: application/json'\
--data-urlencode 'grant_type=urn:ibm:params:oauth:grant-type:apikey' \
--data-urlencode 'apikey=5Ig-dKWU4sYxSP<一部伏字>_GNTE'

APIキーの確認動作例(実行結果。。。一部伏字にしたり、レイアウトのため改行を入れていますが、正常の場合はこんな感じで結果が返ります。)

 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1703  100  1592  100   111    942     65  0:00:01  0:00:01 --:--:--  
1008{"access_token":"eyJraWQiOiIyMDIzMTIwNzA4MzYiLCJhbGciOiJSUzI1NiJ<一部伏字>_ 
HHJ08ah21g","refresh_token":"not_supported","token_type":"Bearer","expires_in":3600,
"expiration":1703500314,"scope":"ibm openid"}

verbose=falseに戻す

後は動作確認し、正常に結果が返ってverbose=falseに戻すだけです。手順は「verbose=trueの設定」と同じでfalseに変えるだけなので省略します。

WS001410.PNG

結局、何が原因だったのか?

直接原因はエラーメッセージの通りにwatsonx.aiに"Bearer token"(=APIキーのことです)が正しくわたっていなかったことです。ただ、私の場合、設定後、一度正常に動作したはずなのにエラーが発生しました。本問題判別をサポートしていただいたサポートの方のコメントによると、『Custom Extensionを開いた時に(何も変更していないつもりでも)「Save」してしまって指定したAPIキーの情報が消えてしまってのでは』ということです。

さいごに

以上、watsonx.aiによる生成系AIチャットボットの設定の問題判別の一例をご紹介しました。今回はapiキーを消してしまった症例の解決方法でしたが、他の事象が発生した場合でも本手順でご紹介したverbose設定を使って問題判別していけるのではと思います。本記事が同様な設定をされる方の一助となることを願います。

2
1
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
2
1