はじめに
社内でよくある質問(FAQ)への回答に、毎回人手を割いていませんか?
例えば「休暇申請の方法」「経費精算の締切」「Wi-Fiのパスワード」など、社員からの問い合わせは似た内容が多いものです。
本記事では Python × ChatGPT API を活用して、社内FAQに自動応答するボットを作る方法を解説します。SlackやTeamsと組み合わせれば、社内ヘルプデスクを省力化でき、業務効率化につながります。
全体の仕組み
- PythonからChatGPT APIを呼び出す
- FAQデータ(CSVやJSON)を参照し、関連する情報を検索
- ChatGPTにプロンプトとして渡し、自然な応答を生成
- 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と連携すれば実運用に耐える社内ヘルプデスクに
これで社員からの問い合わせ対応を大幅に削減できます。
ぜひ試してみてください!