GPT-3でFAQデータを生成する【python】

# 背景

チャットボットに必要なデータをGPT-3で生成できないかを検討してみました。

# 目的

GPT-3を使ってFAQデータを取得したいです。

始めにQuestionからAnswerを生成してみます。このとき、簡単なAnswerではなく付加情報も加わった回答が欲しいです。またできるだけ他の解答とは異なった付加情報をもった回答があったらなおよいです。

次にQuestionとAnswer両方を生成できないか検討してみます。

# QuestionからAnswerの生成

同じ質問から異なる付加情報を含む回答文を生成したい。
### 参考サイト

[GPT-3でanswerとcompletionのエンドポイントを比較する] (https://qiita.com/NP_Systems/items/31b8c66626320d564218)

### 入力テキスト

以下のようなタスク固有のデータを考えました。

```
Q: AIが面接評価をすることにどう思いますか？
A: 私は反対です。なぜならAIでの評価を就活生は受け入れられないからです。私はそういった何でもかんでもAIに置き換える慣習がとっても嫌いです。
###
Q: 100万円を手に入れたらあなたはどうしますか？
A: 私は両親に全額渡そうと思います。学生時代に両親が支えてくれたおかげで今があります。家族には感謝しかないです。
###
Q: あなたは夏にエアコンを使いますか？
A: いいえ、付けないです。エアコンは電力消費が大きく、CO2の排出量が増えるため環境に悪いからです。
###
Q: 東京オリンピックの開始は賛成ですか？
A:
```

リクエスト文

```python
translate_text = '東京オリンピックの開始は賛成ですか？'
prompt = ''
dics = {
'AIが面接評価をすることにどう思いますか？':'私は反対です。なぜならAIでの評価を就活生は受け入れられないからです。私はそういった何でもかんでもAIに置き換える慣習がとっても嫌いです。',
'100万円を手に入れたらあなたはどうしますか？':'私は両親に全額渡そうと思います。学生時代に両親が支えてくれたおかげで今があります。家族には感謝しかないです。',
'あなたは夏にエアコンを使いますか？':'いいえ、付けないです。エアコンは電力消費が大きく、CO2の排出量が増えるため環境に悪いからです。'
}

for q,a in dics.items():
   prompt += "Q: {question}\nA: {answer}\n###\n".format(question=q, answer=a)
   prompt += "Q: {text}\nA:".format(text=translate_text)
```

パラメータ

```python
response = openai.Completion.create(
                    engine='davinci',
                    prompt=prompt,
                    temperature=float(0.4),
                    max_tokens=int(300),
                    top_p=1.0,
                    frequency_penalty=0.0,
                    presence_penalty=0.0,
                    stop=["###"]
                    )
```

curieとdavinciでのエンジン出力を比較してみました。

**curieの場合**

```
#1回目
東京オリンピックの開始は賛成です。東京オリンピックは日本の文化を発信する大事なイベントです。
#2回目
東京オリンピックは私の大好きなスポーツです。しかし、私は東京オリンピックには賛成できません。
#3回目
はい。東京オリンピックは日本の象徴です。
#4回目
はい。東京オリンピックは日本の若者を支える大きなイベントです。
#5回目
私は賛成です。東京オリンピックは日本の文化を発信していくために必要なことです。
```

付加情報を含んだ回答を得られました。

ただ2回目の「東京オリンピックは私の大好きなスポーツです。」のような意味的におかしい回答も含んでいます。

**davinciの場合**

```
#1回目
反対です。オリンピックは経済効果があるだけで、それ以外には何の役にも立たないからです。
#2回目
反対です。なぜなら2020年に開催される東京オリンピックは環境への負荷が大きすぎるからです。
#3回目
私は賛成です。今までも東京オリンピックは開催されていますし、東京は世界の視線が集まるので、東京の良さを世界に発信できるチャンスです。
#4回目
いいえ、反対です。私は東京オリンピックは日本の財政を破綻させるだけだと思います。
#5回目
反対です。なぜなら東京オリンピックは費用が高く、経済効果が小さいからです。
```

**davinci**は環境の話や経済効果等を根拠にしており付加情報は含んでいるが、入力データへ少し依存した回答が生成されている気もします。

ただ付加情報が**curie**と比べて充実している印象もあります。

さすがにコロナを付加情報に含んだ回答は得られませんでした。

# QuestionとAnswer両方の生成

タスク固有データは以下のようなテキスト

```
Q: AIが面接評価をすることにどう思いますか？
A: 私は反対です。なぜならAIでの評価を就活生は受け入れられないからです。私はそういった何でもかんでもAIに置き換える慣習がとっても嫌いです。
###
Q: 100万円を手に入れたらあなたはどうしますか？
A: 私は両親に全額渡そうと思います。学生時代に両親が支えてくれたおかげで今があります。家族には感謝しかないです。
###
Q: あなたは夏にエアコンを使いますか？
A: いいえ、付けないです。エアコンは電力消費が大きく、CO2の排出量が増えるため環境に悪いからです。
###
Q: 
```

生成できたFAQ(**davinci**)

```
今の時代をどう思いますか？ A:私は現代の便利さに感謝しています。例えば、スマホで何でも情報が手に入るのは素晴らしいと思います。
今の職場では、どんな仕事をしていますか？ A:今は、研究室で働いています。自動車に関する研究をしています。
今までに一番感動した体験は何ですか？ A:私は高校時代に部活でバスケをやっていたのですが、部活に所属していた先輩に、「あなたは将来、プロになってもいい選手だ」と言われたことです。
```

びっくりしました。

まさかこんなきれいな日本語で質問、応答文を生成してくれると思わなかったです。

また思ったより質問パターンが多くてびっくりしました。

これなら付加情報をもったFAQデータとして使えそうです。

## 制限

大事な話を忘れていました。APIにかかる費用です。

約300セットのFAQを生成するのに約7.8ドルかかりました。

無料トライヤルで18ドル分はもらえていますが、300セットで7.8ドルもかかってしまったら、チャットボットに必要なデータ分はGPT-3では絶対にとれませんね。

このFAQをどうにかかさ増し出来無いか検討してみます。。。