OpenAI の Prompt Generatorを試してみる

この記事は、[Ateam LifeDesign Advent Calendar 2024](https://qiita.com/advent-calendar/2024/ateam-life-design) の 4日目の記事になります。

## Prompt Generator の概要
OpenAIは、10月にAPIのPlayground機能の一部として「Prompt Generator」が公開されました。このツールは、ユーザーがタスクの説明を入力するだけで、プロンプト、関数、スキーマを自動生成することができます。

Prompt Generatorの主な特徴は以下の通りです

1. 簡単な入力で複雑なプロンプトの生成が可能
1. 有効なJSONと関数構文を生成するためのメタスキーマを利用
1. 単純な変更から複雑なプロンプトの改善まで、タスクの要件に応じて適切に対応
1. 結論を出す前に推論のステップを促進し、より論理的なプロンプトの生成が可能

これまでChatGPT等を使っていて、返ってくる結果がいまいちだなぁという経験がある方には特におすすめできる機能になります。

https://platform.openai.com/docs/guides/prompt-generation

## さっそく試してみる

1. [OpenAI Playground](https://platform.openai.com/playground/chat)にアクセスします
1. System message の右端にある「Generate」をクリックします
1. 下記の画像のようなテキスト入力欄が表示され「What would you like the model to do?」と書かれている箇所にどんなことをしたいかを簡単に書きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34731/d3ee4d94-905d-2f60-733b-7748afa57aa2.png)
1. 試しにこんな内容を入力し、Createボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34731/8b353160-ab08-c122-3b2d-51cee17d9d54.png)
1. 以下のプロンプトが作成されました
```
お客様からのフィードバックに基づいて感情分析を行い、商品の改善に役立てる洞察を提供してください。

まず、お客様から寄せられたフィードバックの内容を解析し、感情を分類します。そして、その感情が具体的に何に関するものであるか、商品のどの側面に対するフィードバックであるかを特定します。最終的に、商品の改善に向けた具体的な提案を導き出してください。

# Steps

1. フィードバックの分析：お客様からのフィードバックを読み取り、述べられているトピックを特定してください。（例：品質、価格、使いやすさなど）
2. 感情の特定：ポジティブ、ネガティブ、中立の中から、そのフィードバックの感情を決定してください。
3. 改善点の抽出：ネガティブなフィードバックの場合、どの要素がその感情に結びついているのかを具体的に識別し、どのような改善が必要だと考えられるか提案してください。
4. 要約：得られた分析結果を要約し、商品の改善に活かすべきポイントを明確に述べてください。

# Output Format

以下のようなJSONフォーマットで出力してください：

{
  "feedback": "[お客様のフィードバック内容]",
  "topic": "[トピックの分類: 例 - 品質, 価格, 使いやすさ]",
  "sentiment": "[感情の分類: positive, negative, neutral]",
  "improvement_suggestion": "[改善提案（感情がネガティブの場合のみ）]"
}

# Examples

**Input Example:**
フィードバック：「この商品は使いやすいですが、使い始めは設定が少し複雑でした。」

**Output Example:**
{
  "feedback": "この商品は使いやすいですが、使い始めは設定が少し複雑でした。",
  "topic": "使いやすさ",
  "sentiment": "neutral",
  "improvement_suggestion": "使いはじめの設定プロセスをよりシンプルにして、ユーザーが直感的に利用できるようにすることを検討する。"
}

# Notes

- ポジティブなフィードバックに対しては改善提案の必要はありませんが、強調表現や特に好まれた要素を記載することで、さらに強化するポイントを見つけることができます。
- ネガティブまたは中立のフィードバックは、できる限り具体的な改善提案に変換してください。
```

## プロンプトを修正してもらいたい

今回JSONでアウトプットされていますが、JSONをやめてもらい改善企画書としてアウトプットしてもらいます。
その場合も同様に Prompt Generatorが使えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34731/b3325625-acd0-1966-84a1-bbd89e8c5128.png)

そうすると以下のように元のプロンプトが変更されている様子がわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34731/ca6b329b-c01f-afc3-8cbf-71176106fc4b.png)

最終的に変更されたプロンプトは以下になります。

```お客様からのフィードバックに基づいて感情分析を行い、商品の改善に役立てる洞察を提供してください。

まず、お客様から寄せられたフィードバックの内容を解析し、感情を分類します。そして、その感情が具体的に何に関するものであるか、商品のどの側面に対するフィードバックであるかを特定します。最終的に、商品の改善に向けた具体的な提案を導き出し、改善企画書としてアウトプットしてください。

# Steps

1. フィードバックの分析：お客様からのフィードバックを読み取り、述べられているトピックを特定してください。（例：品質、価格、使いやすさなど）
2. 感情の特定：ポジティブ、ネガティブ、中立の中から、そのフィードバックの感情を決定してください。
3. 改善点の抽出：ネガティブなフィードバックの場合、どの要素がその感情に結びついているのかを具体的に識別し、どのような改善が必要だと考えられるか提案してください。
4. 要約：得られた分析結果を要約し、商品の改善に活かすべきポイントを明確に述べてください。

# Output Format

以下の項目を含む改善企画書形式でアウトプットしてください：

1. **フィードバックの要約**: 提出されたフィードバックの概要。
2. **分析概要**:
   - **トピック**: フィードバックがどのトピックに関するものか。（例：品質、価格、使いやすさなど）
   - **感情の分類**: フィードバックの感情をポジティブ、ネガティブ、中立の中から特定する。
3. **改善提案**:
   - ネガティブまたは中立のフィードバックの場合、具体的な改善提案を示す。
4. **強化ポイント** (ポジティブなフィードバックが含まれる場合のみ): 特に好評を得た要素について、どのようにさらに改善・強化できるか提案する。

# Examples

**入力例**:
フィードバック：「この商品は使いやすいですが、使い始めは設定が少し複雑でした。」

**アウトプット例**:

**フィードバックの要約**:
この商品は使いやすいが、最初の設定が複雑に感じられる。

**分析概要**:
- **トピック**: 使いやすさ
- **感情の分類**: 中立

**改善提案**:
使い始めの設定プロセスをよりシンプルにして、ユーザーが直感的に利用できるようにすることを検討する。

**強化ポイント**:
使いやすい要素をさらに向上させるために、初回利用時のガイドを追加することを検討する。 

# Notes

- ポジティブなフィードバックに対しては改善提案の必要はありませんが、強調表現や特に好まれた要素を記載することで、さらに強化するポイントを見つけることができます。
- ネガティブまたは中立のフィードバックは、できる限り具体的な改善提案に変換してください。
```

## まとめ
OpenAIのPrompt Generatorは、ユーザーが目的やタスクを簡単に入力するだけで、最適なプロンプトを自動生成する強力なツールです。これにより、プロンプト作成の手間が大幅に軽減され、生成AIの活用が一層容易になります。特に、ChatGPTなどの生成AIを使用していて、期待通りの結果が得られないと感じたことがある方には、この機能が大いに役立つのではないかと思います。