LoginSignup
6
5

More than 1 year has passed since last update.

Chat GPT と LINE WORKS で、にゃっとGPT つくってみた

Last updated at Posted at 2023-03-03

Chat GPT の API が来たので LINE WORKS をつないでみました。

LINE WORKS の API 2.0 のトーク Bot API を使ってます。
OpneAI の gpt-3.5-turbo 言語モデルを使ってます。
Microsoft PowerAutomate を使ってます。

AI のふるまいを指示できるので、ネコ型アシスタントの人格を与え、にゃっとGPT にしてみてます。

以前のやり取りを保持して、関連した返答ができるようにもしています。

image.png

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 要求の受信時] をトリガーにします。

l_147288799_4_6e84b4bf4e19593d724e841ac02b3791.png

"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 のシートに一時的に保存して参照します。

l_147288799_46_575fbe71b33221827322e457c133c4bc.png

userId をキーに、ユーザーと Bot の発言をそれぞれ記録しています。

利用が初回のユーザーの行はシートに存在しないため、行の取得に失敗します。失敗した際の分岐で表に行を追加しています。
image.png

OpenAI の API にリクエスト送信

[HTTP] コネクタで OpenAI にリクエストを送信します。
l_147288799_47_199f31cdd4357e9aa177315202be0453.png

OpenAI のコンソールで取得した token の情報を含めます。

body は以下のようにしました。
l_147288799_48_a83624ade9551e07860143131d975764.png

AI のふるまい、以前の user と assistant の発言、今回のユーザーの発言を送信しています。

OpenAI からのレスポンスを解析

[JSON の解析コネクタ] でレスポンスを解析して返信を取り出します。
l_1517737_2262_f3d7980b89235cbe4d4c79b1d6b3ff61.png
"スキーマ" は以下です。

{
    "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

image.png

ユーザーと Bot のメッセージで Excel の行を更新

次のやり取りの際に、今回のやり取りを参照するために Excel で保持します。
image.png

フローは以上です。

動作確認

LINE WORKS からメッセージを送ると、AI から返信されます。

6
5
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
6
5