ChatGPT APIを使って自分だけのTeamsチャットボットを作る

![01psd.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/5b62dcf9-fd53-7557-6a88-b1daa9fd2772.jpeg)

QiitaでもTeamsでChatGPTを使うための解説記事がいくつかありますが、その多くは主にPower Virtual AgentやAzure Open AIを用いた手法について述べています。これらの方法を適用するユースケースは以下のようになるかと思います。

1. 社内システム部門などがPower Virtual AgentやAzure Open AIの利用契約をする
2. Power Virtual AgentやAzure Open AIを使ってChatGPTを使ったTeamsアプリを社内システム部門が開発する
3. アプリを社内全体に公開する

つまり、Power Virtual AgentやAzure Open AIを用いるのは社内システム部門が主導して行うケースであり、それ以外の部門のスタッフ（市民開発者）には向かない方法と言えるかも知れません。

という訳で、市民開発者が今すぐTeamsでChatGPTを使うための解説記事があまり見当たらなかったので、書いてみることにしました。

:::note warn

ChatGPTの使用に慎重なスタンスを持っている企業も少なくありません。
所属企業のガイドラインは遵守するようお願いします。
:::

# 前提条件
TeamsでChatGPTを使うためには以下の条件をクリアする必要があります。

* Power Automateでプレミアムコネクタが使える
* データ損失防止 (DLP) ポリシーやファイヤーウォールなどでChatGPT APIへのアクセスが遮断されていない

# 作成手順
### 全体の流れ
1. Open AIにサインアップしてAPI keyを取得する
2. Power AutometeでChatGPT APIを利用するフローを作成する

### 1. Open AIにサインアップしてAPI keyを取得する
サインアップやAPI keyの取得手順は、他に解説している方が多くいるのでここでは割愛します。

### 2. Power AutometeでChatGPT APIを利用するフローを作成する
##### フローの種類
インスタントクラウドフローの「作成ボックスから（V2）」を使用します。
![04_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/97436544-b30b-ad2c-76cb-f29a49499835.png)

##### フローの全体像
図中の番号は、以降の手順の項番とリンクしています。
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/82cc801a-5aaf-961e-ce91-a326f82854ee.png)

##### 手順
ポイントとなる箇所だけ説明します。

1. フローのトリガーとなるアダプティブカードを編集します。
![03.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/c3204c47-7399-f352-88f4-3a85cc05e4fe.png)

2. 会話履歴を保存するための配列変数を定義します。
![05.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/7ea50da4-9f84-fc35-b0be-aa60d18e2ce7.png)

3. ChatGPTと会話を続けるためにループ処理を設定します（今回の方法ではループを抜けることはありません）。
![06.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/261497a1-29cd-f98e-0efa-aafc67e14cdc.png)

4. ChatGPTのプロンプトを入力するためのアダプティブカードを設定します。プロパティを以下のように設定することで自分だけが利用できるようになります。
    
   * 投稿先：Chat with Flow bot
   * Recipient：自分のメールアドレス
![07_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/90d045bb-6c0b-8054-528f-b03967d8c9c7.png)

5. アダプティブカードで入力したプロントを配列変数に追加します。会話を続ける度に配列変数へプロンプトが追加されます。こうすることで会話の履歴を考慮した対話を続けることができます。
![08.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/1faf937e-89c6-dbc9-dce1-cfd5f3fad2b2.png)

6. アダプティブカードから送信すると入力した内容が画面上から消えてしまいます。そのため、入力したプロンプトをTeamsに投稿して後から確認できるようにします。
![09_1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/2a702121-4508-b8f0-d785-2b97e1ac9620.png)

7. ChatGPT APIへPOSTします。
![10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/8ff8188f-15b4-9523-c67a-e86bc86f655f.png)

8. レスポンスを配列変数に追加します。
![11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/2f36d56d-a070-fe4d-b7a6-63c2b12bc596.png)

9. レスポンスをTeamsに投稿します。
![12_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/0bc5fff4-edc2-6698-111f-580df70f035f.png)

# 利用方法
Teamsのメッセージ入力欄下部の三点リーダーをクリックし、[Workflows]を選択します。
![14_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/d2123a09-201b-13ed-decc-b6b98c266eca.png)

作成したフローを選択します。表示されない場合はしばらく待ってから試してください。
![15_1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/c2f5e5db-352e-449e-fe4f-d0c67a215eb7.png)

ボタンをクリックします。
![16_1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/41973424-30fd-3878-c89b-1512ef481da7.png)

Power Automateからチャットが届くので、アダプティブカードにプロンプトを入力して送信します。
![16_1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/59b4ec66-c124-5154-ffbd-644341d034b2.png)

ChatGPTからの回答が届きます。会話履歴を保持しているため続けて入力しても自然な受け答えができます。
![18_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/2f35e874-ea62-f920-c1d0-fcfe6961c721.png)

# おわりに
TeamsからChatGPT使うことのメリットは、業務中息抜きにChatGPTで遊んでいても、一見すると仕事をしているように見えることです。

しかしそのユーモラスな見方は、TeamsでChatGPTを使用することの真の利点を過小評価しているかもしれません。

ChatGPTはTeamsでの個々の業務における重要なパートナーです。情報の必要性に応じてリアルタイムで対応するChatGPTは、各個人がより迅速かつ効率的に業務を遂行する手助けとなります。

また、反復的なタスクをAIに任せることで、より重要なタスクに専念する時間が増え、個人の生産性も向上します。

さらに、新しいスキルを学ぶためのリソースとしてもChatGPTは有効です。

これらのメリットにより、個々の業務の質が高まり、全体としての効率も改善されます。仕事に見えるだけでなく、ChatGPTは個々の業務を劇的に進化させる力を持っています。

# 謝辞
最後のチャプターはChatGPTに書いて貰いました。この場を借りて御礼申し上げます。