🐡

ChatGPTを使って社内マニュアルから自動でFAQを作成する手順

2023/10/30に公開

社内の問い合わせ対応を効率化するためのチャットボット構築を検討すると、FAQの重要性に気付く思います。

しかし、社内マニュアルはあっても、FAQの形式にはなっていない。

しっかりとしたFAQがあれば、すぐに精度の高いチャットボット構築は可能ですが、適切なFAQの作成には相応のコストが伴います。

そこで、ChatGPT・LLMを使うことでFAQ作成の効率化ができます。

FAQ作成の際の最大のポイントは、ユーザーの実際の疑問に沿った内容の選定です。誰もが参照しないQAを作成することは、企業にとって大きなコストの無駄遣いとなります。このため、問い合わせの頻度や疑問の内容を明確に特定し、コスト効果の高いQAを優先的に作成することが求められます。

疑問発生の頻度を正確に特定するための情報源の活用も、FAQ作成の成功の鍵となります。この情報を基に、最も効果的なFAQを構築することで、企業全体としてのサポートリソースを節約し、ユーザーにとっての情報アクセスの効率を向上させることが可能となります。

そこで社内のマニュアル文章からFAQを自動生成するPythonコードを作成してみました。

# -----------------------------
# Library
# -----------------------------
from pathlib import Path

import pandas as pd

from utils.gpt_generator import QAMaker


# -----------------------------
# Function
# -----------------------------
def main():
    """
    前処理済みのdataについて本文からQAを生成して
    必要情報をcsvで出力する

    Parameters
    ----------

    Returns
    -------
    """
    # csvファイルパスを取得
    csv_path = input('Please input source csv file path: ')
    # csvファイル存在確認
    assert Path(csv_path).exists(), 'File not found.'
    # promptのversionを選択
    print('Please input prompt version')
    print('1: version1, 2: version2')
    version = int(input('prompt version:'))
    assert version in [1, 2], 'Input version is invalid.'
    # データ読み込み
    _df = pd.read_csv(csv_path)
    # 番号と本文の列のリストを取得
    bodies = _df['本文'].tolist()
    # QAを生成
    df_left = QAMaker.get_df_qa(numbers, bodies, version)
    # 必要情報を結合
    # TODO 質問/回答でuniqueとなるレコードID列追加
    df = pd.merge(
        df_left,
        _df[['番号', '本文']],
        on='番号',
        how='left'
    )[['番号', '本文', '質問', '回答']]
    print(df)
    # 出力
    outname = Path(csv_path).stem + f'_gpt_generated_qa_version_{version}.csv'
    df.to_csv(
        Path('./results') / Path(outname),
        encoding='utf-8-sig',
    )


# -----------------------------
# Main processing
# -----------------------------
if __name__ == '__main__':
    main()

from utils.gpt_generator import QAMaker
部分で色々しているのですが、こちらでGPTに社内マニュアルをFAQの形式に直すよう指示を出しています。

こうして社内文書からFAQを自動で生成することができました。

しかし、出来上がった文章を見てみると、Question部分はしっかり抽出できているのに、Answer部分で空欄になっている行もあったりします。

これだけで完璧なFAQが作成出来るわけではありません。

そこで、このFAQをGPTに評価させて、使えるFAQ、使えないFAQを分類させようと試みました。
以下のようなコードで実行します。

# -----------------------
# Library
# -----------------------
from pathlib import Path

import pandas as pd

from utils.gpt_generator import QAEvaluator


# -----------------------
# Function
# -----------------------
def main():
    """
    前処理済のdataについて本文から生成されたQAをGPTに
    評価させた結果を出力する

    Parameters
    ----------

    Returns
    -------
    """
    # csvファイルパス取得
    csv_path = input('Please input csv path for gpt generated QA: ')
    # csvファイル存在確認
    assert Path(csv_path).exists(), 'File not found.'
    # データ読み込み
    df = pd.read_csv(csv_path)
    # GPTに評価させた結果を取得
    df_evaluation = QAEvaluator.get_df_evaluation(df)
    # 結果を出力
    outname = Path(csv_path).stem + '_with_gpt_evaluation.csv'
    df_evaluation.to_csv(
        Path('./results') / Path(outname),
        encoding='utf-8-sig'
    )


# -----------------------
# Main processing
# -----------------------
if __name__ == '__main__':
    main()

from utils.gpt_generator import QAEvaluator
部分で色々やっているのですが、要はChatGPTに「FAQに利用可能な文章か評価してください」と伝えて、評価をしてもらっています。

こうすることで、使えるFAQ、使えないFAQをある程度分類することができました。
これも完璧なFAQが出来るわけではなく、最初に作ったFAQより精度が上がったという状態です。

しかし、ここまでやれば、FAQの下書きとしては十分に作成でき、このFAQをベースにチャットボットを開発することは可能です。もし、人間だけでこのFAQの下書きを作ろうとしたら、これだけで何週間もかかってしまう作業になるのではないでしょうか。

社内マニュアルをマニュアルを回答してくれるチャットボットを作りたい!
しかし、社内にFAQはない!

そんな時は、ChatGPTにFAQを自動生成させて、評価させてみてはいかがでしょうか。

もちろん、株式会社piponでも技術でお困りのことがある方はオンライン相談が可能です。
こちらから会社概要資料をDLできます!
お問い合わせ内容に「オンライン相談希望」とご記載ください。
https://share.hsforms.com/19XNce4U5TZuPebGH_BB9Igegfgt

株式会社piponでは定期的に技術勉強会を開催しています。
ChatGPT・AI・データサイエンスについてご興味がある方は是非、ご参加ください。
https://chatgptllm.connpass.com/

株式会社piponではChatGPT・AI・データサイエンスについて業界ごとの事例を紹介しています。ご興味ある方はこちらのオウンドメディアをご覧ください。
https://bigdata-tools.com/

株式会社piponのテックブログ

Discussion