ChatGPTを利用してTeamsでチャットボットを開発してみる

オフィスワーク モダナイズ への道

 今、何かと話題のChatGPTですが、OpenAIがAIサービスのAPIを公開しています。こちらを利用して、Power AutomateとTeamsを組み合わせてチャットボットを開発してみましょう。今回はAzure Automationの検証も兼ねてクラウド上でPowerShellからOpenAIのAPIにアクセスします。

 クラウド上で実行されるPower AutomateのクラウドフローではPowerShellを直接実行することができません。クラウドフローからPower Automate for desktopのデスクトップフローを呼び出して実行する方法がありますが、呼び出す先のPCが起動している必要があります。Azure Automationを利用してPCが不要のいわゆるサーバーレスでPower Shellを実行する方法を紹介します。

動作環境

  • Power Automateのプレミアムコネクタを使用しています。
  • Azure Automation を利用するためのAzureサブスクリプションが必要です。Azure Automationは一定範囲内であれば無料で利用可能です。
    参考:料金 – Automation | Microsoft Azure
  • OpenAIのAPI無料利用枠(18ドル分)を使用しています。

Azure Automation

Azure Automationはクラウド上のタスクを自動化できるサービスです。Azure Automation のRunbookを利用すると、通常はPCやサーバー内で実行する必要があるPowerShellやPythonのスクリプトをサーバーレス(クラウド上)で実行することが可能です。

早速、Azure Automationの設定を行い、実際に動作確認をしてみましょう。

Azure Portalにログインして「Automation アカウント」を検索してアカウントを作成します。

左メニューの「プロセスオートメーション」-「Runbook」から「Runbookの作成」を選択します。

以下の内容で作成します。

簡単なコマンドを入力して「保存」を選択します。
「テストウィンドウ」を選択します。

「開始」を選択して実行します。
「ジョブストリームを更新します」を選択すると実行結果が表示されます。
米国時間で表示されました。
Azure Automationを利用してPowerShellを実行できることが確認できました。

PowerShellのコード作成

 今話題の「ChatGPT」と同様にOpenAIがAIサービスのAPI を提供しています。PowerShellから呼び出してチャットボットとして利用してみましょう。事前準備として、OpenAIにサインアップして無料アカウントを作成します。

API Keyを作成して取得します。

今回実行するコードはこちらです。
入力されたテキスト内容に対してAI APIが回答をしてくれます。
Paramで引数を設定することで、Runbook実行時に値を渡すことができます。

Param
(
    [String]$GetText
)

$Uri = "https://api.openai.com/v1/completions"
$Headers = @{
    "Content-Type" = "application/json"
    "Authorization" = "Bearer <取得したAPIキー>"
}

$Body = @{
    "model" = "text-davinci-003"
    "prompt" = $GetText
    "temperature" = 0.7
    "max_tokens" = 2000
} | ConvertTo-Json
$Byte = [System.Text.Encoding]::UTF8.GetBytes($Body)
$Response = Invoke-RestMethod -Uri $Uri -Method Post -Headers $Headers -Body $Byte
$Utf8_Text = $Response.choices[0].text
$Output = [System.Text.Encoding]::Utf8.GetString([System.Text.Encoding]::GetEncoding("ISO-8859-1").GetBytes($Utf8_Text))
$Output  

Azure AutomationでRunbookを作成して実行してみましょう。

「パラメーター」に“今日の東京の天気は?”と入力して実行します。

このようにAI APIから回答が届きます。

最後に「公開」を選択してPower Automateから利用できるようにしておきます。
Azure Automationの準備は以上で完了です。

Power Automate クラウドフローの作成

最後にAzure Automationを利用するためのクラウドフローを作成します。

フローの全体はこちらになります。
Teamsのチャネルに投稿されたメッセージをRunbookのパラメーターとして引き渡して、AI APIから回答を取得します。
各変数は
「ジョブの作成」-「Runbook Parameter GetText」 = “チャネルに新しいメッセージが追加されたとき”-“メッセージ本文コンテンツ”
「ジョブの出力を取得します」-「ジョブ ID」 = “ジョブの作成”-“ジョブID”
「チャネル内のメッセージで応答します」-「Message ID」 = “チャネルに新しいメッセージが追加されたとき”-“メッセージ ID”
「チャネル内のメッセージで応答します」-「Message」 = “outputs(‘ジョブの出力を取得します’).body”
以上となります。

テスト実行

Teamsでチャットボットをテストしてみましょう。
簡単な質問ですが違和感無く回答が得られています。

 以上、Teamsで利用できるチャットボットの開発です。ChatGPTと同様のAIを利用して、自然な言葉のやり取りができるようになっています。質問内容によってはとても細かく専門的な内容まで回答してくれます。また、新しい取り組みとしてクラウド上でPowerShellをサーバーレスで実行できる環境もうまく動かすことができました。技術的は盛沢山の要素を組み合わせてクラウド完結型のアプリケーションが開発できています。

著書の紹介欄

Hyper-Vで本格的なサーバー仮想環境を構築。仮想環境を設定・操作できる!

できるPRO Windows Server 2016 Hyper-V

◇Hyper-Vのさまざまな機能がわかる ◇インストールからの操作手順を解説 ◇チェックポイントやレプリカも活用できる Windows Server 2016 Hyper-Vは、仮想化ソフトウェア基盤を提供する機能であり、クラウドの実現に不可欠のものです。 本書では、仮想化の基礎知識から、Hyper-Vでの仮想マシンや仮想スイッチの設定・操作、プライベートクラウドの構築、Azureとの連携などを解説します。

初めてのWindows Azure Pack本が発売

Windows Azure Pack プライベートクラウド構築ガイド

本書は、Windows Azure PackとHyper-Vを利用し、企業内IaaS(仮想マシン提供サービス)を構成するための、IT管理者に向けた手引書です。試用したサーバーは、最小限度の物理サーバーと仮想マシンで構成しています。Windows Azure Packに必要なコンポーネントのダウンロード、実際にプライベートクラウド構築する過程を、手順を追って解説しています。これからプライベートクラウドの構築を検討するうえで、作業負担の軽減に役立つ一冊です。

ブログの著者欄

樋口 勝一

GMOインターネットグループ株式会社

1999年6月GMOインターネットグループ株式会社に入社。Windows Serverをプラットフォームとしたサービス開発から運用・保守まで幅広く担当。講演登壇や出版、ネット記事連載などでマイクロソフト社と強い信頼関係を構築。「マイクロソフトMVPアワード」を15度受賞し、インターネットソリューションのスペシャリストとして活躍。

採用情報

関連記事

KEYWORD

採用情報

SNS FOLLOW

GMOインターネットグループのSNSをフォローして最新情報をチェック