Python × ChatGPTで社内FAQ自動応答ボットを作る方法

はじめに

社内でよくある質問(FAQ)への回答に、毎回人手を割いていませんか?
例えば「休暇申請の方法」「経費精算の締切」「Wi-Fiのパスワード」など、社員からの問い合わせは似た内容が多いものです。

本記事では Python × ChatGPT API を活用して、社内FAQに自動応答するボットを作る方法を解説します。SlackやTeamsと組み合わせれば、社内ヘルプデスクを省力化でき、業務効率化につながります。


全体の仕組み

  1. PythonからChatGPT APIを呼び出す
  2. FAQデータ(CSVやJSON)を参照し、関連する情報を検索
  3. ChatGPTにプロンプトとして渡し、自然な応答を生成
  4. Slack/Teamsなどに返答を送信

これにより「FAQデータ+生成AI」を組み合わせた柔軟なチャットボットが完成します。


必要な環境

  • Python 3.9以上
  • OpenAI APIキー
  • ライブラリ:openai, pandas, slack_sdk(Slack連携する場合)

インストール例

pip install openai pandas slack_sdk

ステップ1:FAQデータを用意

まずは社内FAQをCSVで整理します。

question,answer
"休暇申請の方法","人事システムから申請してください。詳細は社内ポータル参照。"
"経費精算の締切","毎月25日が締切です。翌月5日までに承認が必要です。"
"Wi-Fiのパスワード","SSID: company_wifi / PW: ********"

ステップ2:ChatGPTにFAQを組み込むコード

import openai
import pandas as pd

# APIキー設定
openai.api_key = "YOUR_API_KEY"

# FAQデータ読み込み
faq_df = pd.read_csv("faq.csv")

def search_faq(user_input):
    """シンプルなFAQ検索(完全一致ベース)"""
    match = faq_df[faq_df['question'].str.contains(user_input, case=False)]
    if not match.empty:
        return match.iloc[0]['answer']
    return None

def get_chatgpt_response(user_input, faq_answer=None):
    """ChatGPTを呼び出して応答生成"""
    prompt = "あなたは社内ヘルプデスクの担当者です。\n"
    if faq_answer:
        prompt += f"以下のFAQに基づいて回答してください。\nFAQ: {faq_answer}\n"
    prompt += f"ユーザーの質問: {user_input}"

    response = openai.ChatCompletion.create(
        model="gpt-4o-mini",
        messages=[{"role": "system", "content": prompt}]
    )
    return response.choices[0].message["content"]

# テスト
user_input = "経費精算はいつまで?"
faq_answer = search_faq(user_input)
reply = get_chatgpt_response(user_input, faq_answer)
print("Bot:", reply)

✅ ポイント

  • まずFAQデータベースを検索し、該当があればChatGPTに渡す
  • 該当がなければChatGPTに自由回答させる
  • 回答のトーンを「社内ヘルプデスク担当者」に設定して自然な応答を生成

ステップ3:Slack連携(オプション)

Slackに自動応答させる例です。

from slack_sdk import WebClient
from slack_sdk.socket_mode import SocketModeClient
from slack_sdk.socket_mode.request import SocketModeRequest

slack_client = WebClient(token="YOUR_SLACK_BOT_TOKEN")
socket_client = SocketModeClient(app_token="YOUR_SLACK_APP_TOKEN", web_client=slack_client)

@socket_client.on("events_api")
def handle_events(req: SocketModeRequest):
    event = req.payload["event"]
    if event.get("type") == "message" and "bot_id" not in event:
        user_input = event.get("text")
        faq_answer = search_faq(user_input)
        reply = get_chatgpt_response(user_input, faq_answer)
        slack_client.chat_postMessage(channel=event["channel"], text=reply)
    socket_client.ack(req)

socket_client.connect()

これで、社員がSlackに「経費精算はいつ?」と送ると、自動でFAQ+ChatGPTによる返答が返ってきます。


発展アイデア

  • TeamsやLINE Worksにも応答可能
  • FAQ検索を ベクトル検索(embeddings) にアップグレード
  • ログを保存して「よく聞かれる新しい質問」を分析
  • 社内ポータルのURLを添付して案内

まとめ

  • Python × ChatGPT でFAQ応答ボットを簡単に構築可能
  • まずはCSVでFAQデータを管理し、ChatGPTに自然な応答を生成させる
  • Slack/Teamsと連携すれば実運用に耐える社内ヘルプデスクに

これで社員からの問い合わせ対応を大幅に削減できます。
ぜひ試してみてください!

タイトルとURLをコピーしました