株式会社microCMS
💁‍♀️

Notion x ChatGPTを活用してバックオフィス問い合わせOpsをつくる

2024/05/01に公開

組織が拡大するにつれて、バックオフィス系の対応業務が増えてきました。
以前は担当者一人がすべての問い合わせに対応していましたが、組織拡大とともに業務分担が進んでいます。

そして、業務分担に合わせて行いたいのが問い合わせ先の調整です。
今までは担当者一人になんでもかんでも聞いていましたが、今後は適切な担当者に問い合わせる必要があります。

今回はそんなバックオフィスへの問い合わせをNotion x ChatGPTを使って効率化したOpsを紹介します。
Single Source of Truth(信頼できる唯一の情報源)としてのNotion活用、おすすめです。

🤖 つくったもの

slackbotにバックオフィス系の質問を投げると、適切な担当者に引き継いでくれます。
フォームやメールを介すことなく、すべてSlackで完結するのがポイントです。

🕒 業務フローのビフォーアフター

初期(v1)

バックオフィス担当のAさんがすべての問い合わせを捌いていました。とてつもない負担。。

ちょっとカイゼン(v2)

業務分担表をつくり、その表を参照してもらった上で問い合わせしてもらうことにしました。
バックオフィス担当のAさんの負担は軽減しましたが、今度は依頼者側の負担が増加。
毎回業務分担表を確認するのはしんどい。もっと気軽に依頼したい。

現在(v3)

slackbotにそのまま問い合わせるだけで適切な担当者に引き継いでくれます。
いちばん煩わしい問い合わせ内容と業務分担表の突合はAIがやってくれる!みんなハッピー!!

🎯 やったこと

Notionのデータをもとに、OpenAIのChat Completions APIを利用して担当者を特定しています。

v2のときに作成された業務分担表をデータソースとしました。
もし担当が変わった場合、バックオフィス担当者はこのデータベースを更新すればいいだけなので低コストで運用できます。

System messageで役割と前提条件を指定しています。

あなたはバックオフィス業務をサポートするスペシャリストです。
あなたのタスクはSlack上の問い合わせに対し、「業務分担表」を元に「担当者一覧」から担当者を特定することです。
Slackのmember_idは「Slackユーザー一覧」から最新の注意を払って選択してください。
なお、必ず日本語で返答してください。

# 業務分担表
${assignTable}

# 担当者一覧
${staffTable}

# Slackユーザー一覧
${slackUserTable}

業務分担表やSlackユーザー一覧はテーブルっぽく整形してテキストで渡しています。

最近流行りのRAGを導入するのもいいですが、そのRAGの更新Opsまで構築するのが手間だったので、今回はそのままテキストをまるっと渡しています。
扱えるプロンプト長も大きくなってきて、この程度のテキスト量なら余裕で処理できるのもありがたいですね。

User messageでSlackから来た問い合わせ内容を渡しています。

Slackで社員から以下の問い合わせが来ました。担当者を特定してください。

問い合わせ"""
${message}
"""

また、Function callingを使って出力を制御しています。(関数はダミー)

data: {
  model: 'gpt-4',
  messages: messages,
  functions: [
    {
      name: 'notify_to_slack',
      description: '担当者を特定して、問い合わせ内容を要約して連絡する',
      parameters: {
        type: 'object',
        properties: {
          staff_name: {
            type: 'string',
            description: '担当者名'
          },
          reason: {
            type: 'string',
            description: 'その人を担当者として判断した理由が書かれた文章'
          },
          summary: {
            type: 'string',
            description: '担当者にその業務をパスするための「要約と依頼」の文章'
          },
          slack_member_id: {
            type: 'string',
            description: '担当者のSlack Member Id'
          }
        },
        required: ['staff_name', 'reason', 'summary', 'slack_member_id']
      }
    }
  ],
  function_call: {
    name: 'notify_to_slack'
  }
}

🍵 おわりに

以上、Notionをデータソースとして使ったAI事例の紹介でした。
非エンジニアはNotionで情報を管理し、エンジニアはAPI経由でそれらの情報を利用する。
Notion x AIのOpsにはまだまだ可能性を感じています。

他にもOpsを仕込み中なので完成したらまた記事を書きます!

それでは! 👋

株式会社microCMS
株式会社microCMS

Discussion