Chat GPT の API が来たので LINE WORKS をつないでみました。
LINE WORKS の API 2.0 のトーク Bot API を使ってます。
OpneAI の gpt-3.5-turbo 言語モデルを使ってます。
Microsoft PowerAutomate を使ってます。
AI のふるまいを指示できるので、ネコ型アシスタントの人格を与え、にゃっとGPT にしてみてます。
以前のやり取りを保持して、関連した返答ができるようにもしています。
LINE WORKS API 2.0
以下の LINE WORKS API を使っています。
メッセージ(Callback) 受信
https://developers.worksmobile.com/jp/reference/bot-callback?lang=ja
メッセージの送信 - ユーザー指定
https://developers.worksmobile.com/jp/reference/bot-user-message-send?lang=ja
Text
https://developers.worksmobile.com/jp/reference/bot-send-text?lang=ja
LINE WORKS の Developer Console での API 2.0 の設定や、Bot の設定については LINE WORKS Developers サイトの記載や、Qiita 内の LINEWORKSタグの記事が参考になります。
Power Automate のクラウドフロー
Microsoft Power Automate でクラウド フローを作成します。
LINE WORKS の Bot でユーザーからのトークを受信
[HTTP 要求の受信時] をトリガーにします。
"JSON スキーマ" は以下です。
{
"type": "object",
"properties": {
"$content-type": {
"type": "string"
},
"$content": {
"type": "string"
},
"$formdata": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"key",
"value"
]
}
}
}
}
Chat completion では、以前のやり取りを踏まえた応答が可能になっています。やり取りを Excel Online のシートに一時的に保存して参照します。
userId をキーに、ユーザーと Bot の発言をそれぞれ記録しています。
利用が初回のユーザーの行はシートに存在しないため、行の取得に失敗します。失敗した際の分岐で表に行を追加しています。
OpenAI の API にリクエスト送信
[HTTP] コネクタで OpenAI にリクエストを送信します。
OpenAI のコンソールで取得した token の情報を含めます。
AI のふるまい、以前の user と assistant の発言、今回のユーザーの発言を送信しています。
OpenAI からのレスポンスを解析
[JSON の解析コネクタ] でレスポンスを解析して返信を取り出します。
"スキーマ" は以下です。
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"object": {
"type": "string"
},
"created": {
"type": "integer"
},
"choices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"index": {
"type": "integer"
},
"message": {
"type": "object",
"properties": {
"role": {
"type": "string"
},
"content": {
"type": "string"
}
}
},
"finish_reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"index",
"message",
"finish_reason"
]
}
},
"usage": {
"type": "object",
"properties": {
"prompt_tokens": {
"type": "integer"
},
"completion_tokens": {
"type": "integer"
},
"total_tokens": {
"type": "integer"
}
}
}
}
}
Bot からメッセージを返信
以下の記事のカスタム コネクタを用いて Bot からメッセージを返信しています。
https://qiita.com/iwaohig/items/4c47a2a1aabe2cb864a8
ユーザーと Bot のメッセージで Excel の行を更新
次のやり取りの際に、今回のやり取りを参照するために Excel で保持します。
フローは以上です。
動作確認
LINE WORKS からメッセージを送ると、AI から返信されます。