GPT 3.5 と LINE WORKS をつないでみた

GPT 3.5 と LINE WORKS をつないでみました。
LINE WORKS の API 2.0 のトーク Bot API を使ってます。
Microsoft PowerAutomate を使ってます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396107/607c21e2-e0b2-986a-2b50-0dc24ca41773.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タグの記事が参考になります。

https://qiita.com/tags/lineworks

## Power Automate のクラウドフロー

Microsoft Power Automate でクラウド フローを作成します。
#### LINE WORKS の Bot でユーザーからのトークを受信

[HTTP 要求の受信時] をトリガーにします。

![l_147288799_4_6e84b4bf4e19593d724e841ac02b3791.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396107/37d3219e-1bdb-512d-1c21-5ecdb971d4cb.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"
                ]
            }
        }
    }
}
```
#### GTP 3.5 の API にリクエスト送信
[HTTP] コネクタで GPT 3.5 にリクエストを送信します。
![l_1517737_2261_f1456266d8accfec00d7f0d43de0ee8e.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396107/b0995aa3-e061-df88-49f3-1262df941a48.png)

OpenAI のコンソールで取得した token の情報を含めます。
prompt には、Bot 宛てのトークメッセージの text を指定します。

#### GTP 3.5 からのレスポンスを解析
[JSON の解析コネクタ] でレスポンスを解析して返信を取り出します。
![l_1517737_2262_f3d7980b89235cbe4d4c79b1d6b3ff61.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396107/b37e7bd2-ee8d-717c-287d-4a90ed76fb7c.png)
"スキーマ" は以下です。
```
{
    "type": "object",
    "properties": {
        "id": {
            "type": "string"
        },
        "object": {
            "type": "string"
        },
        "created": {
            "type": "integer"
        },
        "model": {
            "type": "string"
        },
        "choices": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "text": {
                        "type": "string"
                    },
                    "index": {
                        "type": "integer"
                    },
                    "logprobs": {},
                    "finish_reason": {
                        "type": "string"
                    }
                },
                "required": [
                    "text",
                    "index",
                    "logprobs",
                    "finish_reason"
                ]
            }
        },
        "usage": {
            "type": "object",
            "properties": {
                "prompt_tokens": {
                    "type": "integer"
                },
                "completion_tokens": {
                    "type": "integer"
                },
                "total_tokens": {
                    "type": "integer"
                }
            }
        }
    }
}
```
の API にリクエスト送信

### Bot からメッセージを返信
以下の記事のカスタム コネクタを用いて Bot からメッセージを返信しています。
https://qiita.com/iwaohig/items/4c47a2a1aabe2cb864a8

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396107/a417d151-c6d3-db62-131c-e97a6832d62c.png)

フローは以上です。

## 動作確認
LINE WORKS からメッセージを送ると、GPT 3.5 から返信されます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396107/b59b4feb-010e-1fa5-01d9-44cbc2fd44e2.png)