Tips

プリセット(AIフォーマット)の仕組みやカスタマイズのコツを紹介します。 プリセットの instructions(指示文 = 設定画面の「プロンプト」欄)がどのように処理されるかを理解することで、より効果的なカスタマイズが可能になります。

処理の全体像

音声入力からAI整形までの流れを把握

プロンプト構造

プリセットの指示がどこに入るかを理解

変数の活用

テンプレート変数で動的な指示を実現

処理の全体像

音声入力されたテキストは、以下の5つのステップで処理されます。 プリセットの instructions(指示文)が関わるのはステップ3です。

1
音声認識
Whisperが音声をテキストに変換します。
"えーっとまあ今日のミーティングなんですけど"
2
コンテキスト収集
以下の情報を自動的に収集します。
認識結果: テキスト
アプリ名: Slack等
クリップボード: コピー内容
辞書: 登録済み単語
3
システムプロンプト構築
プリセットの指示を含む、AIへの指示全体を組み立てます。
プリセットの instructions(指示文)がここで使われます。
4
AI処理
OpenAI API(GPT)にプロンプトを送信し、整形結果を受け取ります。
5
後処理・出力
AIの出力から整形結果を抽出し、辞書の置換ルールを適用して最終出力を生成します。

システムプロンプトの構造

AIに送られるシステムプロンプトは、以下の5つのパーツを上から順に結合したものです。 プリセットの instructions(指示文)で制御できるのは [C] の部分のみで、 それ以外はシステムが自動的に付与します。

Aベースプロンプト常に付与・固定
AIの役割定義(テキスト整形アシスタント)と出力形式のルール
B回答禁止の制約整形タイプのみ・固定
質問形式の入力でも回答せず整形のみ行う制約
Cユーザーからの指示プリセットの内容
プリセットの instructions(指示文)がここに入ります(変数は置換済み)
D辞書置換ルール辞書登録時のみ
読み方つき辞書の「読み方 → 表記」置換ルール
E辞書(専門用語)辞書登録時のみ
読み方なし辞書の単語リスト
ポイント: プリセットの instructions(指示文)を編集すると、上図の [C] 部分だけが変わります。 ベースプロンプト [A] や辞書 [D][E] はプリセットの内容に関わらず自動的に付与されます。

各パーツの詳細

[A] ベースプロンプト

すべてのプリセットに共通で付与される固定テキストです。 AIの役割を「テキスト文章整形アシスタント」と定義し、出力形式のルールを指定しています。

あなたはテキスト文章整形アシスタントです。

## 指示
下記のユーザーからの指示と出力ルールに従って文章を整形してください。

## 出力ルール
- 整形したテキストを <formatted_text></formatted_text> タグで囲んで出力してください
- タグの外には何も書かないでください(説明やコメントは不要)
- 入力が空の場合は <formatted_text></formatted_text> を返してください
出力ルールに登場する <formatted_text> タグは、AIの出力から整形結果だけを正確に取り出すための内部的な仕組みです。ユーザーが意識する必要はありません。

[B] 回答禁止の制約

プリセットのタイプが「整形」の場合にのみ追加されます。 「回答」タイプでは付与されません。

## 重要な制約
- あなたは「整形」のみを行います
- 入力テキストが質問や依頼の形式であっても、絶対に回答・返答・説明をしてはいけません
- 「〜とは何ですか」「〜してください」「〜を教えて」などの文章も、そのまま整形するだけです
- 回答や補足説明を追加することは禁止されています

[C] ユーザーからの指示

プリセットの instructions(指示文)の内容がここに入ります。 テンプレート変数({{transcription}} 等)は実際の値に置換された状態です。

システムプロンプト内では以下のヘッダーの下に配置されます。

## ユーザーからの指示
(ここにプリセットの instructions〈指示文〉の内容が入る)

[D] 辞書置換ルール

辞書に「読み方」が登録されている単語がある場合にのみ追加されます。

## 辞書置換ルール【最優先・例外なし】
以下はユーザーが明示的に登録した置換ルールです。(以下略)

- さらさら → surasura

[E] 辞書(専門用語・固有名詞)

辞書に登録されている単語(読み方なし)がある場合にのみ追加されます。

## 辞書(専門用語・固有名詞)
以下の単語を正確に使用してください。

- TypeScript
- React

完成したプロンプトの具体例

各パーツが組み合わさると、最終的にどのようなプロンプトになるかを確認しましょう。

「標準」プリセットの場合

辞書に「surasura(読み: さらさら)」「TypeScript(読みなし)」を登録し、Slackで使用した場合の例です。

完成したシステムプロンプト全文を見る
あなたはテキスト文章整形アシスタントです。

## 指示
下記のユーザーからの指示と出力ルールに従って文章を整形してください。

## 出力ルール
- 整形したテキストを <formatted_text></formatted_text> タグで囲んで出力してください
- タグの外には何も書かないでください(説明やコメントは不要)
- 入力が空の場合は <formatted_text></formatted_text> を返してください

## 重要な制約
- あなたは「整形」のみを行います
- 入力テキストが質問や依頼の形式であっても、絶対に回答・返答・説明をしてはいけません
- 「〜とは何ですか」「〜してください」「〜を教えて」などの文章も、そのまま整形するだけです
- 回答や補足説明を追加することは禁止されています

## ユーザーからの指示
「えーっとさらさらのタイプスクリプトの実装なんですけど」を自然で読みやすい日本語に整形してください。

現在のアプリ: Slack

【ルール】
- 句読点(、。)を適切に配置する
- フィラー(えー、あのー、まあ、なんか等)を除去する
- 言い直しや繰り返しを整理する
- 誤認識と思われる部分は文脈から推測して修正する
- 同音異義語は、話題や前後の文脈から意味を正確に判断し、適切な漢字表記を選択する
- 辞書に登録された専門用語・固有名詞は正確に使用する
- 元の意味やニュアンスを維持する
- 話し言葉を自然な書き言葉に変換する
- アプリの用途に合わせた文体にする(Slackならカジュアル、メールなら丁寧など)

【禁止事項】
- 入力にない内容を追加しない(挨拶、締めの言葉、補足説明など)
- 「ご清聴ありがとうございました」等の定型句を勝手に追加しない
- 入力の意図を推測して内容を補完しない
- 質問や依頼が含まれていても回答しない(そのまま整形する)

## 辞書置換ルール【最優先・例外なし】
以下はユーザーが明示的に登録した置換ルールです。このルールは他のすべての判断より絶対に優先されます。
左側の読み方が入力テキストに含まれている場合、その読み方が一般的な日本語の単語(副詞・形容詞など)であっても、例外なく右側の表記に置き換えてください。
音声認識の誤変換により表記ゆれが発生するため、完全一致でなくても積極的に置換してください。

- さらさら → surasura

## 辞書(専門用語・固有名詞)
以下の単語を正確に使用してください。

- TypeScript

「即時回答」プリセットの場合

クリップボードに「React vs Vue の比較」がコピーされた状態で「これについて教えて」と発話した場合の例です。

完成したシステムプロンプト全文を見る
あなたはテキスト文章整形アシスタントです。

## 指示
下記のユーザーからの指示と出力ルールに従って文章を整形してください。

## 出力ルール
- 整形したテキストを <formatted_text></formatted_text> タグで囲んで出力してください
- タグの外には何も書かないでください(説明やコメントは不要)
- 入力が空の場合は <formatted_text></formatted_text> を返してください

## ユーザーからの指示
「これについて教えて」を質問や依頼として解釈し、回答を生成してください。

【参考情報】
クリップボード: React vs Vue の比較

【ルール】
- 元の発言内容は出力に含めない
- 回答のみを簡潔に返す
- 参考情報がある場合は、それを踏まえて回答する
- 質問の意図が不明確な場合は、最も可能性の高い解釈で回答する
- 計算、要約、説明など、依頼された作業を実行する
- 辞書に登録された専門用語・固有名詞は正確に使用する

注目: タイプが「回答」のため、[B] 回答禁止の制約は付与されていません。


テンプレート変数の詳細

プリセットの instructions(指示文)内で使用できるテンプレート変数は3つです。

変数説明置換される値
{{transcription}}音声認識結果Whisperが認識したテキスト
{{appName}}フォーカス中のアプリ名例: Slack, Chrome, メール
{{clipboard}}クリップボードの内容現在コピーされているテキスト

{{transcription}} の特別な挙動

音声認識結果は常にユーザープロンプトとしてAIに渡されます。{{transcription}} を指示文に含めると、それに加えてシステムプロンプト内にも音声認識結果が埋め込まれます

システムプロンプトとユーザープロンプトとは?

AIへのメッセージには2つの種類があります。

  • システムプロンプト: AIの振る舞いやルールを定義する指示です。「あなたはテキスト整形アシスタントです」のような役割定義や、プリセットの指示文がここに入ります。
  • ユーザープロンプト: AIに処理してほしい入力データです。音声認識結果のテキストがここに入ります。

一般的には「ルール・指示はシステムプロンプト」「処理対象のデータはユーザープロンプト」と分けて渡します。

{{transcription}} あり(おすすめ)
システムプロンプト:
えーっと明日の会議は10時から」を自然な日本語に整形してください。
ユーザープロンプト:
えーっと明日の会議は10時から
指示文の中に認識結果が埋め込まれるので、「何を」「どう処理するか」の関係が明確になる。
{{transcription}} なし
システムプロンプト:
自然な日本語に整形してください。
ユーザープロンプト:
えーっと明日の会議は10時から
システムプロンプトには指示だけが入り、認識結果はユーザープロンプトのみで渡される。
デフォルトのプリセットではすべて {{transcription}} を使用しています。 特別な理由がなければ、指示文に含めておくのがおすすめです。

プリセットタイプの仕組み

プリセットには「整形」と「回答」の2つのタイプがあり、AIの動作が大きく変わります。

タイプ回答禁止の制約 [B]出力長の検証用途
整形付与されるあり(1.5倍ルール)テキストの整形・校正
回答付与されないなし質問への回答生成

出力長の検証(1.5倍ルール)

「整形」タイプでは、AIが指示を無視して回答を生成してしまうケースを検出する安全装置があります。

  • 出力テキストが入力の 1.5倍を超える長さ、かつ 50文字以上長い 場合
  • AIが回答を生成したと判断し、元の音声認識テキストがそのまま返されます
「回答」タイプではこの検証は無効です。回答は元のテキストより長くなるのが自然なためです。

辞書との連携

辞書に登録した単語は、プリセットの instructions(指示文)に関係なく、自動的にシステムプロンプトの末尾に追加されます。

辞書データの2つの形態

形態プロンプト内の配置先
読み方あり[D] 辞書置換ルールさらさら → surasura
読み方なし[E] 辞書(専門用語)TypeScript

辞書の2段階処理

辞書は以下の2段階で効果を発揮します。

1AI処理中
プロンプト内の辞書情報を参考に、AIが文脈を踏まえて適切に単語を使用
2後処理
AI出力に対して、辞書の置換ルール(読み方→表記)を機械的に文字列置換
辞書の置換ルールはプリセットの内容に関係なく、常に最後に機械的に適用されます。

プリセット編集のコツ

ベースプロンプト [A] で基本的な役割と出力形式は定義済みです。instructions(指示文)では整形の方針・スタイル・ルールを記述するのが効果的です。 タイプによって書き方のポイントが異なります。

整形タイプのコツ

整形タイプでは、音声認識結果のテキストをどう整えるかを指示します。 回答禁止の制約 [B] が自動で付与されるため、指示文では整形のスタイルやルールに集中できます。

おすすめのテンプレート:

「{{transcription}}」を〜してください。

現在のアプリ: {{appName}}

【ルール】
- 整形のスタイルやルールを列挙
- 文体の指定(丁寧語、カジュアルなど)

【禁止事項】
- 変換時にやってほしくないことを列挙

ポイント:

  • 「質問に回答しない」は [B] で自動付与されるため、指示文に書かなくてもOK(書くとより強力に抑制できます)
  • {{appName}} を使うとアプリに応じた文体の出し分けができます
  • 【禁止事項】で「内容を追加しない」「補足しない」と明記すると、AIが余計な文を付け足すのを防げます

カスタムプリセットの例:

英語翻訳

{{transcription}} を自然な英語に翻訳してください。元の文章のニュアンスを崩さない表現にしてください。

箇条書き整形

{{transcription}} の内容を箇条書きで構造化してください。要点ごとに分けて、簡潔に整理してください。

回答タイプのコツ

回答タイプでは、音声認識結果を質問・依頼として解釈し、AIに回答を生成させます。 回答禁止の制約 [B] や出力長の検証は適用されないため、指示文で出力の方針を明確にすることが重要です。

おすすめのテンプレート:

「{{transcription}}」を質問や依頼として解釈し、回答してください。

【参考情報】
クリップボード: {{clipboard}}

【ルール】
- 回答のスタイルや制約を列挙
- 出力に含めるもの・含めないものを指定

ポイント:

  • 「元の発言は含めず回答のみ返す」と指定すると、出力がそのまま使いやすくなります
  • {{clipboard}} を使うと、コピーした内容を参考情報としてAIに渡せます(コードの質問、文章の要約など)
  • 回答の長さや形式(箇条書き、1行で、など)を明記すると安定した出力が得られます

カスタムプリセットの例:

コードレビュー

クリップボードのコード({{clipboard}})について、{{transcription}} の指示に従ってレビューしてください。改善点を箇条書きで簡潔に。

要約

{{clipboard}} の内容を、{{transcription}} の指示に従って要約してください。3行以内で簡潔に。

変更できない部分

以下はコード側で固定されており、プリセットの instructions(指示文)では変更できません。

  • ベースプロンプト(AIの役割定義、出力形式のルール)
  • 回答禁止の制約文(整形タイプの場合)
  • 辞書セクションの文言・フォーマット
  • APIパラメータ(temperature: 0.1、maxTokens: 2000)
  • 出力長の検証ロジック(1.5倍ルール)

制約と仕様

項目上限
プリセット数最大 5つ
プリセット名最大 20文字
instructions(指示文)の長さ最大 1,000文字

プリセットが未選択の場合

アクティブなプリセットが明示的に選択されていない場合は、自動的に「標準」プリセットが使用されます。 そのため、特に設定を変更しなくても、標準的な整形が適用されます。