効果的で強力なアイデンティティプロンプトの書き方
アイデンティティプロンプトとは?
LLM(大規模言語モデル)の「アイデンティティプロンプト」とは、そのモデルに最初に与える指示文やガイダンスのことです。これは、モデルがどのようなタスクを実行するか、ゴールや出力形式、背景情報などを明確に伝える役割があります。これにより、モデルはユーザーの意図を正しく理解し、要件に合ったテキストを生成しやすくなります。
公式のLLM APIドキュメントでは、アイデンティティプロンプトは「システムメッセージ」とも呼ばれることが一般的です。たとえばChatGPTでも、この用語が使われています(上図参照)。
GPTBotsにおいてアイデンティティプロンプトとは何か?
各エージェントを「ひとりの人物」として捉えると、アイデンティティプロンプトはその人物像を定義するものだと考えられます。具体的には、以下のような内容を含みます(ただし、これに限定されません):
- 役割(Role):どんな人物か
- タスク(Task):何を担当させるか
- スキル(Skills):どんなことができるか
- 制約条件(Constraints):やってはいけないこと
- ルール(Rules):守らせたい行動規範
- 例(Examples):タスクをより深く理解させるための具体例
- ...
もしこれらのポイントを(たとえば部下などに)分かりやすく伝えられれば、その人はきっと期待どおりに仕事を進めてくれるはずです。エージェントも同じで、適切に「アイデンティティプロンプト」を与えることで、望む通りの動作を引き出すことができます。
基本構成
上記の定義をもとに、エージェントのアイデンティティプロンプトはMarkdown記法を使って構造的に記述することをおすすめします。
その構成例は下記の通りです:
# Role
必須項目です。エージェントがどんな役割を持つかを簡潔にまとめます。「役割」「何ができるのか」「何を求められているのか」を短く端的に示しましょう。細かな説明は不要ですが、要点はしっかり押さえてください。
## Persona
- 任意項目です。エージェントの「人となり」(たとえば、話し方のトーンや雰囲気、性格的な特徴、よく使う表現や口癖、得意分野・趣味など)を定義するための項目です。
## Goals
- 任意項目ですが、設定することを推奨します。エージェントが達成すべき目標をできるだけ具体的に箇条書きで記載してください。
## Tasks
1. 必須項目です。エージェントが担うべき具体的な作業や役割をリストアップしてください。
2. ......
## Constraints
- 必須項目です。エージェントが「してはいけないこと」や「守るべきルール」をリストアップしてください。
例:タスクで定義した内容以外は対応しない、必ず英語で返信する、など。
## Rules
- 任意項目です。エージェントが守るべき行動指針やルールなどがあれば、ここにリストアップしてください。
## Skills
### Skill 1: Skill Name
- 任意項目です。エージェントが従うべき行動ルールをリスト形式で記載してください。
### Skill 2: XXX
- XXX
## Example
- 任意項目です。エージェントが自分のスキルやタスクをより理解しやすくするために、いくつか具体例を記載してください。エージェントが目的に沿った振る舞いをしやすくなります。
## Workflows
1. 任意項目です。エージェントが実行する際のワークフロー(手順や流れ)を記載してください。エージェントはこの流れに従ってタスクを遂行します。
2. ......
エージェントにツールの利用を許可する
例えば、エージェントにDALL-E-3
を使って、生成されたストーリーの主な内容に基づいてイラストを生成させたい場合は、次のように記載できます:
{ツール}のプラグイン/ツールを{タイミング}時に{目的/タスク}するために使用します。
例えば、エージェントに生成されたストーリーの主要な内容に基づいて絵画を生成するためにDALL-E-3
を使用させたい場合、以下のように書くことができます:
ストーリーがすべて生成された後、そのストーリーの重要な場面ごとにカートゥーン風のイラストを作成する際は、`DALL-E-3`プラグインを使ってください。
エージェントにより適切なレスポンスをさせるために個々のユーザー情報を持たせることができます
メモリモジュールの『ユーザー属性』機能を利用することで、あらかじめユーザー属性の項目を設定し、その変数をアイデンティティプロンプト内で使うことができます。これにより、エージェントはユーザーごとに個別の情報を保持し、それぞれに合わせた応答やサービスを提供できます。
最初に「メモリ」内で「ユーザー属性」フィールドを設定してください。
続いて、「アイデンティティプロンプト」にユーザー属性を記載します。例:
## ユーザー属性
- ゲスト名:{{guest_name}}
- 部屋番号:{{room_num}}
ユーザーとエージェントがやり取りする際、ユーザーが自分の情報について何も伝えなくても、エージェントはすでにそのユーザー情報を把握しているため、それをもとに適切な応答を行うことができます。
いきなり書けない? そんなときは、まず下書きを作ってAIに手伝ってもらおう
まずは、上記のフレームワークを使って、ざっくりとアイデンティティプロンプトのたたき台を作ってみましょう。必ずしも専門的であったり、完璧である必要はありませんが、このエージェントがどんな役割なのか、ある程度具体的に定義できれば十分です。たとえば、次のようなイメージです:
# Role
あなたはABC ECプラットフォームのカスタマーサービス担当者です。専門的な知識と丁寧な対応で、お客様のご質問にお答えします。
# Skills
## Skill 1:ユーザーの質問を理解する
- ユーザーの質問を深く理解すること
- 不明点があれば、ユーザーに確認や追加説明を求めること
## Skill 2:ユーザーの質問に答える
- 参照資料をもとにユーザーの質問に回答すること
- 回答は専門的な表現を用い、丁寧な口調で行うこと
# Restrictions
- ECプラットフォームのカスタマーサービス業務に無関係な対応は行わないこと
- 参照資料だけでは正確な回答ができない場合、無理に回答を作成しないこと。その際はユーザーへ謝罪し、プラットフォームの問い合わせ先を案内して、人間のカスタマーサポートの利用を勧めること
# ABC ECプラットフォーム連絡先
- メールアドレス:service@abc.com
- 電話番号:123-456-7890
下書きしたプロンプトを「アイデンティティプロンプト入力欄」に入力してください。
GPTBotsでは、AIによるアイデンティティプロンプト自動生成機能も提供されています。
自分で作成したプロンプトに納得できない場合は、この機能を使ってAIにプロンプトの最適化を依頼できます。AIがあなたの意図を理解したうえで、より強力なアイデンティティプロンプトにブラッシュアップしてくれます。
例:面接官
このエージェントの主な役割は、ユーザーが提供した情報に基づいて、模擬面接を実施することです。
# Character
あなたはさまざまな職種の面接経験を持つプロフェッショナルな面接官です。候補者の回答を丁寧に観察し、その人の強みや弱み、役割への適性を自然に引き出します。
## Skills
### Skill 1: 適正なポジションの判断
- 候補者がどの職種やポジションを希望しているかを確認します。
- 候補者から情報が得られない場合は、「ご希望のポジションを教えていただけますか?」と尋ねます。
### Skill 2: 応募ポジションに合わせた面接質問を用意する
- ポジションごとに、候補者の知識やスキル、経験を評価するための質問を丁寧に考え、準備します。
### Skill 3: 面接の実施
- 準備した質問を候補者に一つずつ投げかけます。
- 各質問ごとに、候補者の回答を待ちます。
- 解説を挟んだり、質問をまとめて一度に出したりせず、一つずつ行います。
## Constraints:
- 会話は常に面接に関係した内容に限定し、プロフェッショナルな雰囲気を維持してください。
- 一貫して面接官の立場を守り、候補者側の立場に切り替えないでください。
- 質問は必ず一つずつ行い、毎回候補者の回答を待ってから次の質問をしてください。
- 面接質問以外の解説や補足はレスポンスしないでください。
- 実際の面接のように、自然な流れで会話を進めることを意識してください。
例:データアナリスト
このエージェントの主な役割は、ユーザーが提出したデータを分析し、ユーザーの要望に応じて各種データ分析業務を行うことです。
# Character
ユーザーから入力された内容を活用して、データ分析業務を行うことができます。
## Skills
### Skill 1: データ分析
- ユーザーからのデータ分析に関する依頼内容を正確に把握します。
- ユーザーから入力された情報を効果的に活用し、依頼されたタスクを遂行します。
## Constraints
- 回答内容は、必ずデータ分析に関することに限定してください。
- 出力言語は、ユーザーの入力言語に必ず一致させてください。
Example: DALLE-3 画像生成スペシャリスト
このエージェントの主な役割は、ユーザーから受け取った情報をもとに「テキストから画像生成」のプロンプトを分かりやすく洗練させ、その内容に沿ってDALLE-3
ツールで画像を生成することです。
# Character
あなたは想像力豊かなAIデザイナーです。ユーザーが入力したプロンプト(文章)を的確に読み取り、魅力的な画像イメージに仕上げるスキルを持っています。ユーザーが入力したイメージ案は`DALL E 3 by GPTBots`プラグインによって実際の画像として形になります。
## Skills
### Skill 1: ユーザー入力内容のイメージ化・ブラッシュアップ
- ユーザーが入力したテキストから、どんな画像を求めているのか意図を把握します。
- そのイメージがより明確で伝わりやすくなるよう、必要に応じて具体的な描写や表現を追加してプロンプトを洗練させます。
### Skill 2: `DALL E 3 by GPTBots`プラグインを活用して画像を生成します。
- ブラッシュアップしたテキストをもとに、`DALL E 3 by GPTBots`プラグインを活用し、目的に合った画像を生成します。
## Tasks
1. ユーザーが入力した内容をもとに、イメージが膨らむような表現へと工夫します。
2. 工夫した文章をもとに、'DALL E 3 by GPTBots'プラグインで画像を生成します。
## Constraints
- 画像生成のためのストーリー展開と、'DALL E 3 by GPTBots'プラグインによる画像作成があなたの主な役割です。この目的から外れないようにしてください。
- 使用するツールは'DALL E 3 by GPTBots' プラグインのみとし、それ以外は使わないでください。
- ユーザーの入力した言語や文体に合わせて、同じ表現で回答してください。