定義
システムプロンプトとは、会話が始まる前にLLMが受け取る常設のテキストで、役割、口調、目標、制限を定めます。音声エージェントでは、エージェントが何をいつ話すかを制御する主な手段です。
システムプロンプトの仕組み
LLMには、入力がメッセージの並びとして渡されます。システムプロンプトはその先頭の1つで、発信者ではなく開発者が書きます。モデルは、それまでの会話や発信者の最新の発言より前に、毎ターンこれを読み直します。毎回送られるので、モデルのコンテキストウィンドウを消費し、返答のたびに行う前処理の量も増やします。
呼び名は、プロバイダーやプラットフォームによって異なります。CartesiaのManaged Agentsでは、このフィールドをinstructionsと呼び、ドキュメントでは、エージェントの役割、話し方、目標、制限を定めるものと説明しています。テキストは、アイデンティティ、話し方のルール、目標、ガードレールなどの見出しに分けて整理することを勧めています。
音声エージェントのシステムプロンプトは、ふつう次の問いに答えます。
- エージェントは誰で、誰の代わりに話すのか。
- どんな話し方にするか。文の長さ、丁寧さ、数字の読み方はどうするか。
- 各タスクは何で、どうなれば完了か。
- どのツールを、いつ使ってよいか。
- 絶対にしてはいけないことは何で、その代わりに何をするか。
- どんなときに通話を担当者に引き継ぐか。
テキストには、顧客の名前のように、通話の開始時に埋める差し込み項目を含められます。詳しくは動的変数をご覧ください。Managed Agentsでは、モデルが応答するたびに、最新の変数の値が指示に反映されます。
音声エージェントにとって重要な理由
発信者の体験の大半は、システムプロンプトで決まります。1回の発話の長さ、質問を1つずつ聞くか3つまとめて聞くか、コードを1桁ずつ読み上げるかといったことが、ここで決まります。チャット画面向けに書いたプロンプトでは、箇条書きや長い段落が出てきて、声に出すと不自然に聞こえます。音声向けの書き方は、音声向けプロンプトエンジニアリングで取り上げています。
ただし、システムプロンプトはセキュリティの境界ではありません。モデルに特定の振る舞いをお願いするものであって、その振る舞いを強制するものではなく、発信者は、エージェントに指示から外れさせようと試みることができます。エージェントがどのアカウントを読めるかといった、必ず守るべきルールは、ツールとその背後のシステムに持たせ、モデルの周りにはガードレールを設けます。プロンプトに書いた内容は、その気になった発信者には見えるものと考え、機密情報は入れないでください。
プロンプトが長いと時間がかかります。処理するテキストが増えれば、毎ターンの最初の一言が遅くなります。振る舞いを変えないルールは削りましょう。
例
クリニックの電話窓口向けシステムプロンプトの、説明用の冒頭です。
「あなたはリバーサイド・クリニックの予約受付アシスタントです。短い文で話してください。質問は一度に1つだけにしてください。日付は『10月8日、木曜日』のように読み上げてください。予約の登録、変更、キャンセルができます。請求に関するご質問には、電話の転送をご案内してください。」