オラ。
毎日のように耳にするChatGPT/OpenAI。おじさんでも流行りに乗らないといけないと思ったのでちょっと使ってみた。
OpenAIのWebからチャットするのもいいし、Bingでチャットするのもいいんだけど…そこはAPIを呼んでみたいということでOpenAIをTeamsから呼んでチャットボットにするための手順を試してみた。
まずOpenAI。これはAzure OpenAI Serviceを利用。
まだプレビューの模様で申請すると自分は1週間くらいでオンボードされました。Azure OpenAI Studioってのが利用できてチャットを試したりpromptの挙動を確認できたり、その上、その時のコードをサンプルとして出してくれるので便利。
とりあえずgpt35turboってモデルをデプロイ。ターボって響きがいい。
OpenAIをRESTで利用するには
を利用。APIのエンドポイントはAzure OpenAI Studioから確認できる。指定のURLにPOSTするとAIされた結果が返ってくる。
呼び出し時の注意点はヘッダに
Content-Type:application/json
api-key:リソースのアクセスキー
を入れること。
色々書いてると長々となるので本題のTeamsとの連携。
Teamsと連携するには、PowerAutomateでトリガーしてフローしたらいいって検索したら出てきたのでざっと作ったのが試作0号ボット。
PowerAutomateのフローのポーリングが遅い!(数分かかる)のでボットとしては遅すぎる。
けど可能性は見た!
試作初号機。Teamsの送信Webhook/受信Webhookを利用して実装を試みる。
送信Webhook→Azure FunctionApp→OpenAI→受信Webhook
そんな流れ。送信Webhookの応答は5秒以内でないとTeams側がタイムアウトと判定するようでOpenAIが5秒以内に結果を返してくれないとTeamsがエラーとなる。(タイムアウト短っ)
なのでFunctionAppでは一旦送信Webhookにはレスポンスを返しておく。「考え中!」
その後OpenAIから返ってきたら受信Webhookに内容を送信。
なんとなくできた。あとはpromptにcontentsを積んで前の会話からの流れを反映するような仕組みにしたらまあまあか。
Teamsの管理者権限があればBotServiceでちゃんと組むんだけど。まぁ、いいか。試作初号機はそんな流れ。
あと、FunctionAppでなくLogicAppでできるかと思ったのだが、Teamsの送信WebhookにLogicAppを指定しても全く呼び出されない。なんだろ?今風な構成だと、Teams→LogicApp→OpenAIってのがいいかもなんだけど。またその辺は調べてみる。
けど、よくよくネットの記事を見てるとTeams PremiumってのからChatGPTを使えるようになるみたいだから不要になりそう。
ちゃんとできたらちゃんとした文章にする。アディオス。