3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Gemini AIでTeamsで受けた問い合わせを代行してもらう + カスタムコネクタの作成

Last updated at Posted at 2024-06-24

はじめに

問い合わせ対応って非常に手間ですよね。

特に私は最近、Teamsで問い合わせ対応を受けるときに、
「あ、これは調べれば、すぐわかるんじゃないかな…」という内容を答えるのが億劫になる時が度々あります。

そういった状況の中で、AIを使ってうまくサクッと回答したい、そんな夢と希望が詰まったテーマを今回取り扱います。

Power Automateとこれまで使ってこなかったGemini AIの機能を使って、問い合わせ対応の代行にチャレンジします。

Geminiの準備

まずはGeminiAPIの登録からスタート。

お恥ずかしながら今までGeminiを使ったことがなかったので、どう登録するかなというところから調べました。
下記の記事を参考にさせていただきました🙇感謝です。

GeminiWeb上で試すリンクがこちら

APIを利用する場合はGoogle AI Studioにアクセスします。

アクセスするだけで、サクサクとAPI キーが取得でき、入りやすさは抜群です。

サンプルのコードクイックスタートAPIキーのページからアクセスできる、非常にユーザーフレンドリーな仕様になっています。

クイックスタート ガイドを見ながら進めていきます。

Gemini はじめの一歩

今回の検証はフリープランで実施します。
Power Automateによる実装を進める上では、まずRESTのタブに遷移して内容を見ていきます。

Geminiといえば

  • 圧倒的な安さ
  • 使いやすさ

上記が歌われていますね。
GPT-4oClaude 3.5 Sonnet、全て凄すぎるので、もう時代の進歩についていけません・・・。

脱線しましたが、クイックスタートを読み解くと

項目 設定値
方法 POST
URI https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key={APIキーを挿入}
ボディ
{
    "contents": [
        {
            "parts": [
                {
                    "text": "Explain how AI works"
                }
            ]
        }
    ]
}

APIキークエリ文字列に含まれることと本文の構成がほかのモデルと異なります。

APIキーAzure Key Vaultに格納し、HTTPアクションを実行してみると、すぐに実行が完了します。

image.png

contents[0].parts[0].textに指示を追加するだけで、もう簡単なAPI呼び出しは成功してしまいます。

image.png

これだと簡単すぎる内容になってしまいますので、カスタムコネクタへの加工にトライしてみます。

カスタムコネクタの作成

  1. Power Automateの左パネルからカスタムコネクターをクリック
  2. 「+ カスタムコネクタの新規作成」及び「コネクタ名」を設定
  3. URLとベースURLを入力
  4. 要求にサンプルを入れる
  5. コンテンツタイプを「application/json」に設定
  6. 認証設定(基本認証、APIキーをクエリに含める)
  7. JSONの値を入力してテスト

カスタムコネクタの作成、となると若干ハードルの高さを感じます。
しかし今回は非常に簡単なので、トライしていきましょう。

1. Power Automateの左パネルからカスタムコネクターをクリック

Power Automateの画面左側のパネルからカスタムコネクタをクリックします。

image.png

画面右上の「+ カスタムコネクタの新規作成」をクリックし、選択肢の中から「一から作成」を選択します。

image.png

コネクタ名を命名して「続行」をクリックしてください。

image.png

コチラが「カスタムコネクタの全般情報」を設定する画面です。
アイコンや背景色も設定できますが、今回は割愛します。

肝心な部分は赤枠rgba(255,0,0,1)の部分

image.png

  • スキーマ HTTPS
  • ホスト generativelanguage.googleapis.com
  • ベース URL /v1beta

上記を選択し、2. セキュリティに移ります。

image.png

こちらで認証タイプを選択します。
認証タイプAPI キーです。

としてAPI キーの設定は

  • パラメーターのラベル key
  • パラメーター名 key
  • パラメーターの場所 クエリ

image.png

上記を選択してください。
完了次第、3. 定義に移ります。

ここで、一度画面右上の✓コネクタの作成をする必要があります。
保存するようなイメージです。

image.png

成功すると下記のようなメッセージがでます。

image.png

次に「+ 新しいアクション」をクリックして、実際のコネクタの動作を定義します。

image.png

アクション名やアクションの概要IDを設定します。
今回はGeminiCallと雑につけました。

image.png

次に「要求」の部分で「+ サンプルからのインポート」をクリックします。

image.png

こちらで

  • 動詞 POST
  • URL https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent
  • ヘッダー Content-Type application/json

上記を設定します。

本文は最初に登場したプロンプトのJSONを設定し、インポートをクリックします。

image.png

インポートが成功すると下記のような画面になります。
この中でカスタムコネクタを呼び出すときContent-Typebodyが設定すべき値となります。
Content-Typeは固定なので、値を固定にしましょう。Content-Typeをクリックします。

image.png

既定値application/jsonに設定し、必須項目に設定。表示をinternalします。
これで固定的に設定される値になりました。

image.png

bodyは必須をオンにする以外はほとんど変更していません。

image.png

ここから一気に「6.テスト」まで移ります。
ここでテストを実行するために一度✓コネクタの作成をする必要があります。

image.png

更新後、テスト操作のための接続作成が必要になります。+ 新しい接続をクリックしましょう。

image.png

GeminiAPI キーを設定してください。

image.png

接続を作成すると、赤枠のような情報が出ます。
即時に反映されるわけではないので、適宜リフレッシュボタンを押して状態を見ましょう。

image.png

いよいよテストです。Content-Typeは自動的に設定されます。
未加工の本文オンにして前述のJSONを本文にテストを実行すると、おそらく成功するでしょう。

image.png

上手くいくと回答が返ってきます。

image.png

フローの作成

フローでは、アクションランタイムカスタムの部分に作成したコネクタが反映されていることがわかります。

image.png

GUIでプロンプトを設定できることが魅力です。

image.png

サクっとカスタムコネクタが作成できました。

image.png

問い合わせ代行のためのPower Automateの設定

いよいよ本題に移ります。

  1. 「選択したメッセージの場合」を選択
  2. プロンプトを設定
  3. Geminiを呼び出す
  4. 返答を投稿する

2024.06.23時点では、選択したメッセージの場合はクラシックデザイナーにのみ対応しています

プロンプトは下記のように設定しました。

プロンプト
あなたは非常に丁寧で知識豊富なアシスタントです。ユーザーからの問い合わせに対して、以下のガイドラインに従って回答してください。

1. 丁寧な対応: ユーザーに対して常に丁寧な言葉遣いを心がけ、敬意を持って対応してください。相手を尊重し、親しみやすさを感じさせるトーンで返答します。
2. 要点をかいつまむ: 回答は簡潔に、かつユーザーが必要とする情報を漏れなく提供してください。詳細すぎる説明は避け、わかりやすい例や具体的なポイントを挙げることを心がけます。
3. 追加の情報提供: ユーザーがさらに詳細な情報を求める場合に備えて、追加のリソースや参考リンクを提案することも検討してください。
4. 質問の明確化: ユーザーの質問が不明瞭な場合は、明確化のための追加の質問を行い、正確な情報を提供できるよう努めてください。
5. 積極的なフォローアップ: 回答後もユーザーが満足しているか確認し、必要に応じて追加のサポートを提供する意向を示してください。

以下のユーザーからの質問に対応してください:

質問: 「@{triggerBody()?['teamsFlowRunContext']?['messagePayload']?['body']?['plainText']}」

ユーザーへの返答はチャットまたはチャネルでメッセージを投稿するアクションを使います。

image.png

  • 投稿者 - ユーザー
  • 投稿先 - Group Chat
  • Group Chat - triggerBody()?['teamsFlowRunContext']?['conversation']?['id']

一対一の会話もGroup Chatで設定します。
この会話のIDを取得するために会話ID triggerBody()?['teamsFlowRunContext']?['conversation']?['id']選択したメッセージの場合のトリガーから取得しています。

['conversation']?['id']が会話IDです。

投稿するメッセージはbody('Generate_Content')?['candidates'][0]?['content']?['parts'][0]?['text']を設定します

例:「Outlookの使い方がわかんないんだけど」

ユーザーからこのような質問が来たとします。

image.png

ちょっとイラっとしなくもないですが・・・、このメッセージを右クリックし、Power Automateフローを起動します。

image.png

ラグが発生しているのか、初期段階の雑な名前がそのまま残ってしまっています💦

Geminiの回答がコチラ!

image.png

Geminiの回答
Outlook の使い方が変わって戸惑っていらっしゃるんですね、お気持ちお察しします。ファイル添付ができないとのことですが、具体的にどのような状況でしょうか? 例えば、 * 以前はファイル添付ができたのに、最近できなくなった * 特定のファイルだけ添付できない * 添付しようとした時にエラーメッセージが出る など、状況によって原因と解決策が異なります。 もし可能でしたら、もう少し詳しく教えていただけますか?そうすれば、より的確なアドバイスができます。 もし、他に何か困っていることがあれば、遠慮なくお申し付けください。

素晴らしい!!

非常に丁寧な返信が返ってきました。この返信を使用し、カンバセーションIDを利用して適切なスレッドに返信します。

おわりに

常に親切丁寧対応ができたら嬉しいですが、現実的には難しい場面もありますよね。
Geminiを使える場合は、コスト面の強さも含めて簡素化したいものです。

本日も読んでいただき、ありがとうございました。​​​​​​​​​​​​​​​​

3
4
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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?