できたこと
LINE WORKSのトークルームに追加されたChatGPTのBotにメンションするとOpenAIアシスタントから回答もらえる。
やったこと
- LINE WORKSにBot追加
- Open APIのKEY発行
- Make(旧Integromat)で以下のモジュール作成
- BotへのメンションをトリガーにOpenAIのAPIを叩く
- LINE WORKSのAPIに設定するJSONを作成
- レスポンスをLINE WORKSのBotでトークルームにメッセージ投稿
LINE WORKSにBot追加
LINE WORKSのDeveloperConsoleと管理画面からBotを設定。
https://guide.worksmobile.com/jp/admin/admin-guide/manage-service/bot/
OAuth2.0の使い方は以下を参考に。
https://developers.worksmobile.com/jp/reference/introduction?lang=ja&manageDomainId=500057291
MakeのリダイレクトURLは https://www.integromat.com/oauth/cb/oauth2 となることに注意
参考:https://www.make.com/en/help/tutorials/how-to-connect-make-to-any-web-service-that-uses-oauth2-authorization
Open APIのKEY発行
OpenAIのAPIリファレンス通りにやればできる
https://platform.openai.com/docs/api-reference
Make(旧Integromat)でモジュール作成
Scenarioはこんな感じ。JSONエラー出たときにややこしくなるので変数使っている。
Webhookモジュールに表示されるWebhookのURLをLINE WORKSのDeveloper ConsoleのBotの「Callback URL」に設定
Webhookで受け取ったLINE WORKSからのメッセージをOpenAIのcompletionsに投げる
※RequestContentのInputDataにはToolsの変数を設定している(改行が邪魔なので空文字にreplaceした)
改行を置き換える
OpenAIから返ってきたアシスタントの回答に改行が含まれている場合、そのままJSONパラメータに突っ込むとエラーになる。
そのため、改行をLINE WORKSの仕様に合わせて"/n"に置き換える。
※Data.choises[ ]:message.contentが回答内容。このデータが取れない場合は、一度Scenario実行してJsonデータをParseすれば取れる。(以下参考画像)
OpenAIから返ってきたアシスタントの回答をトークルームにBotで投稿
Makeの場合、「Make an OAuth 2.0 Request」で作ればRedirectURLはよしなにしてくれる。
DeveloperConsoleのBot情報に載っている「Client ID、Client Secret、OAuth Scopes」をCreateConnectionの項目に設定する。
※Authorize URIとToken URIはLINE WORKSのAPIリファレンスに載ってる
トークルームを指定したBotメッセージ投稿は以下に載っている。
https://developers.worksmobile.com/jp/reference/bot-channel-message-send?lang=ja
※API doesn't exitというエラーが返ってくるときはAPIのスペル間違っているかもしれない
今後やりたいこと
利用者の関心に回答が近しくなるようFine tuningしてみたい