Foundation Models frameworkを活用するにあたっての、プロンプトの設計方法に関するメモ。AI要約+筆者による加筆。いわゆるプロンプトエンジニアリング的なtipsに加えて、安全性構築のための prompt / instruction の使い分けについて。
Human Interface Guidelines にも、Generative AI のページが用意されたので、合わせて読む。
Generative AI | Apple Developer Documentation
0:00 – Introduction
- Foundation Models frameworkを使ったアプリで、さまざまな現実世界の状況に対応できる堅牢な生成AI体験を設計するためのガイダンスを紹介
- プロンプトは自然言語でLLMに指示を与えるもので、Apple Intelligenceでも同じ仕組みが使われている
- 本セッションでは、オンデバイスLLM向けの設計戦略、プロンプトのベストプラクティス、AIセーフティ、評価・テスト方法を解説
2:30 – Design for on-device LLM
- オンデバイスLLMは約30億パラメータで、サーバー型LLM(数百億〜数千億)より小型
- 複雑な推論や最新の世界知識には限界があるため、タスクはシンプルなステップに分解するのが有効
- 数学計算やコード生成には不向き
- world knowledge が限られている(直近の知識を網羅できていないなど)ため、事実情報も要検証
- 逆にゲーム内のやりとりには向いている
- ハルシネーション(事実でない出力)に注意し、重要な情報はプロンプトに明示的に含める
- Guided generation(型や制約を指定した出力)が信頼性向上に有効
6:14 – Prompting best practices
- 出力量は「3文で」「詳細に」など期待する出力の長さをプロンプトで明示的に指示
- スタイルや役割もプロンプトで指定可能(例:シェイクスピア風のキツネ)
- 明確なコマンド形式で、1つの具体的なタスクを与えると精度が向上
- 望ましい出力例を3〜5個プロンプトに含めると効果的
- “MUST” “DO NOT” など強い否定も、望まない出力を防ぐのに有効
- XcodeのPlayground機能でプロンプトの試行錯誤が容易
- instructions(指示文)はセッション全体の振る舞いを制御し、プロンプトと組み合わせてインタラクティブな体験を設計できる
11:03 – AI safety
- Foundation Models frameworkにはApple独自のガードレール(安全対策)が組み込まれており、入力・出力の両方で有害な内容をブロック(エラーが投げられる)
LanguageModelSession.GenerationError.guardrailViolation
- エラー発生時はUIで適切にフィードバックし(逆にしないことも)、ユーザー主導の機能では代替案や説明を提供
- 信頼性を高めるため、アプリ側でもプロンプトや指示文の設計に注意し、ユーザー入力の扱いに配慮
- promptよりもinstructionに従うよう設計されているため、安全な出力のためにinstructionsは必ず開発者が用意し、ユーザー入力はpromptとして分離
- 柔軟性と安全性のバランスを考え、
- ユーザーインプットをプロンプトに組み込んだり(補助線的に)
- プロンプトの選択肢を用意するのも有効
- アレルギーや不適切な内容など、ユースケースごとに追加の安全対策や警告を設ける
- 安全対策は多層防御(スイスチーズモデル)で設計
18:37 – Evaluate and test
- 品質・安全性評価のため、主要ユースケースやリスクのあるプロンプトを集めてデータセット化
- 自動化テストやUIテスター、手動検証、他のLLMによる自動評価などを活用
- エラー時の挙動(アンハッピーパス)も必ずテスト
- 継続的な評価・テストで品質と安全性を担保し、モデルやプロンプトの更新にも追従
- ユーザーからのフィードバック収集やプライバシー配慮も重要
- Appleの責任あるAI設計ガイドラインやHuman Interface Guidelinesも参照推奨
- Safety checklist
- ガードレール違反エラーを適切に処理する
- 安全に関する指示を追加する
- プロンプト内のユーザー入力を制御する
- ユースケース固有の対策を適用する
- 評価とテストを行う
- 問題を報告する