概要
本記事では、IBM watsonx Assistant (旧 IBM Watson Assistant)のツールキットとして提供されている情報を元に、watsonx Assistant と ChatGPT (OpenAI API) を連携する方法をキャプチャ画面を多用して説明します。技術選定や理解推進の役に立てばと思います。
つい先日(2023年8月あたり)にIBM Watson AssistantからIBM watsonx Assistantに名称変更がありました。まだ、変更が追いついていない部分があるので、IBM Watson Assistant→watsonx Assistantと読みかえていただければと思います。
はじめに
IBM watsonx Assistant は チャットボット構築のためのサービスです。ChatGPT が出てきて、もう全部 ChatGPT でいんじゃね?という雰囲気が強い気がしてますが、コストや回答の確からしさを考えるとルールベースでのチャットボットとの組み合わせが必要なのかなと思います。watsonx Assistant は、よくある質問に対して、ルールベースで事前に登録しておいたアクションを実施できることや、様々なツールと連携できることが特徴です。また、質問の意図を理解するためにChatGPTと同じようにトランスフォーマーを使用しているらしいです。また、OpenAPI のフォーマットに従ってオリジナルの拡張機能を定義することで様々な REST API を呼び出すことも可能です。
実は拡張機能を使うことで、watsonx Assistant から ChatGPT を API (OpenAI API や Azure OpenAI API) として呼び出すことも可能です。なんと、公式のドキュメントで連携方法も提供されています。コンペになりうるのに驚きです。連携のユースケースとしては、watsonx Assistant を入り口として、よくある質問に対しては watsonx Assistant の機能を使って事前に登録した回答し、事前に予測できない質問に対しては ChatGPT に答えてもらうような使い方があるかと思います。また、ChatGPT と社内ドキュメントのデータベースを連携して、事前に準備し切れない質問に回答してもらうことも可能です。拡張できるって素晴らしいですね。
本記事では、IBM watsonx Assistant (旧 IBM Watson Assistant)のツールキットとして提供されている情報を元に、watsonx Assistant と ChatGPT (OpenAI API) を連携する方法をキャプチャ画面を多用して説明します。技術選定や理解推進の役に立てばと思います。
想定読者
- チャットボットの構築を検討している方
- ChatGPT (OpenAI API) の実装を検討している方
構築方法
IBM Cloud アカウントの作成
下記サイトからアカウントを作成します。必要な情報を入力するだけではあるけれど、クレジットカードの認証が厳しいらしく悩ましいかな正直、鬼門かなと思います。問い合わせて対応してもらうと、うまくいったというケースも聞きましたので、諦めない気持ちが大事だと思います。
watsonx Assistant の構築
アカウントを作成したら、まず watsonx Assistantのインスタンスを作成していきます。
ログイン後の最初のダッシュボード画面で、右上のリソースの作成
をクリックします。
カタログが出てきますので、assistant
と検索してWatson Assistant
をクリックします。
作成後はリソース・リスト
に追加され、以下の画面が表示されますので、Watson Assistantの起動
をクリックします。
これで、watsonx Assistantの準備ができました。
次に、OpenAI側の準備を実施します。
OpenAI API key の取得
ここでは、OpenAI APIのサイトに行って、API Keyを取得する方法を記載します。
リンクに飛ぶと以下の画面が表示されます。アカウントがないひとはSign up
でアカウントを作成します。
右上の、Log in
ボタンを押すと、なぜかAPIのダッシュボードでなく、チャットである「ChatGPT」の方にログインしてしまうので、アカウントを持っている人もSign up
を押します。
アカウントを持っていない人は、アカウントを作成してください。持っている方は、Log in
ボタンからログインしてください。
最初の画面のLog in
を押すと、このような画面になるので、アカウントを持っている方はこちらからもアクセスできます。
ログインするとAPIのダッシュボードが表示されます。右上のアカウントアイコンをクリックし、さらにView API keys
をクリックすると、API keyの管理画面に遷移します。
次に、Create new secret key
をクリックすると、API keyを作成できます。
表示された文字列がAPI keyとなります。ここでしか表示されないので、後から使うためにコピペしておいてください。
また、使いすぎたり、API Keyが漏れた時のために、Usage limitsをつけておきます。
以上で、OpenAIのAPI keyが取得できました。
次は、watsonx Assistantの拡張機能を設定していきます。
watsonx Assistant の Custom extension の作成
ここでは、拡張機能としてOpenAI APIにアクセスするための情報を入力していきます。
以下のようなダッシュボードが表示されます。Build custom extension
をクリックします。
設定画面に行くので、記載を読んだ後、Next
をクリックします。
設定ファイルが置かれたGitHubにアクセスし、openai-openai.json
ファイルをダウンロードします。このjsonファイルに、OpenAI APIのAPI定義等が記載されています。自分で、カスタマイズすることも可能です。
上記jsonファイルをアップロードします。以下の画面は、アップロード後の表示です。その後、Next
をクリックします。
これで、jsonファイルに記載されていた情報から拡張機能が定義されたので内容を確認して右上のFinish
をクリックします。
Integrations
のダッシュボードに戻ると、Extensions
のところに、先ほどつけた名前(openai example
)が表示されていることを確認できます。さらに、設定するために、Add
をクリックします。
OpenAI側のAuthenticationの設定をしていきます。Bearer auth
を選択します。
前章で取得したAPI keyをToken
欄に貼り付け、Next
ボタンをクリックします。
最後に、設定項目を確認し、右上のFinish
をクリックします。
以上で、拡張機能の登録が完了しました。次に、登録した拡張機能を呼び出すためのアクションを設定していきます。
watsonx Assistant の Action の作成
本章では、チャットボットの動作をルールベースで定義するためのアクションを作成していきます。
左側のアイコンからActions
をクリックします。
以下のような画面に遷移します。
この画面ではGUIでアクションを定義できますが、今回は、jsonファイルをアップロードすることで定義します。
Global settings
をクリックします。
全体の設定を実施するための画面に遷移します。
右上の、Upload/Download
をクリックします。
左側のUpload
のところから、jsonファイルをアップロードしていきます。jsonファイルの取得方法は次で説明します。
GitHubのページから、openai-actions.json
ファイルをダウンロードします。
ダウンロードしたファイルをアップロードしようとすると、以下のようなエラーが表示されます。
エラー内容を読むと、日本語設定では、New Off Topicが使えないようです。オフトピックとは、トピックから外れた質問に対応するための機能のようです。
以下で、エラーを解決するために、jsonファイルを修正していきます。
jsonファイルをエディターで開いて、1424 行目の下記 3 行を削除します。
"off_topic": {
"enabled": true
},
無事、アップロードに成功すると、Actions
画面に3つのアクションが作成されます。
これで、watsonx AssistantからChatGPTにアクセスする準備ができました。
折角ですので、次章で実行する前にアクションの中身を確認していきます。
watsonx Assistant の アクション
ここでは、3つあるアクションのうち、Test model
とInvoke GPT Chat Completion API
を確認していきます。OpenAIは、呼び出すモデルによってAPI仕様が異なりChat completions APIと、レガシーなCompletions APIの2種類があるため、watsonx Assistantのアクションについても2種類(Invoke GPT Chat Completion API
とInvoke GPT Completion API
)あります。
まず、呼び出しの入り口になるTest model
についてみていきます。
最初に、アクション呼び出しのためのフレーズが記載されています。ここれは、Test model
が登録されているため、それに近い意味の文字列が入力された時、このアクションが実行されます。
最初のステップでは、モデルを選択してもらうダイアログが登録されています。
まず、gpt-3.5、gpt-4を選択した場合、Invoke GPT Chat Completion API
アクションを実行します。
また、レガシーなtext-davinci、text-curieを選択した場合、Invoke GPT Completion API
アクションを実行します。
次に、gpt-3.5、gpt-4を呼び出した時のアクションの詳細について説明します。
このアクションは、先ほどのアクションから呼び出すため、ユーザーからの入力トリガーは設定していません。
レスポンスが正常だった場合、APIレスポンスのチャッの回答部分をユーザーに返すための変数に設定します。
レスポンスが異常だった場合、ユーザーに返すための変数にnullを設定します。
アクションの説明は以上となります。もう一つのInvoke GPT Completion API
については説明しませんでしたが、Invoke GPT Chat Completion API
と同様な処理になっています。OpenAI API仕様に従って、リクエストとレスポンスのパラメータを処理しています。
watsonx Assistant の Preview の確認
最後に、実際の動きをプレビュー機能を使って確認していきます。
Actions
画面の右下にあるPreview
をクリックして、文字列を入力していきます。
ここでは、test model
と入力→gpt-3.5-turbo
をクリック→50
と入力→日本の首都はどこ?
と入力しました。
プレビュー画面では、Inspect
をクリックすると、Overview
とAdvanced
からAPI呼び出しの詳細を確認できます。
また、左側のPreview
からは、より実際の画面に近い状態で動作を確認できます。
以上で、IBM watsonx AssistantからChatGPT (OpenAI API)を呼び出す方法についての説明を終わります。
おわりに
IBM watsonx Assistant がいろんなものと連携できることは知っていましたが、実際試せて良かったです。比較的簡単に連携できました。Infrastructure as Code 的に json ファイルをインポート・エクスポートできるのもいいですね。ChatGPTだけでなく、いろんなシステムと連携ができそうで、夢が広がりますね。
また、コンペにもなりうる OpenAI との連携について、提供しているのに驚きました。ユーザーフレンドリー・開発者フレンドリーなエコシステムを構築しながら市場も広がると良いですね。