LLMのプロンプトエンジニアリング

―GitHub Copilotを生んだ開発者が教える生成AIアプリケーション開発

[cover photo]
TOPICS
発行年月日
PRINT LENGTH
276
ISBN
978-4-8144-0113-0
原書
Prompt Engineering for LLMs
FORMAT
Print
Print
4,180円

LLMのポテンシャルを最大限活かし、期待通りの精度の高いアウトプットを引き出すためには、LLMの能力や特性を正しく評価、把握し、綿密な設計に基づいたプロンプトを組み立てることが必要です。本書では、まずLLMを理解することから始め、その上で、プロンプトにはどんなことを組み込み、どのような構造にすべきか、本来の意味での「プロンプトエンジニアリング」を行う方法を説明しています。著者たちはGitHub Copilotの開発者であり、その実装過程で得られた貴重な知見や、評価手法、設計上の判断など、通常は表に出てこない開発の裏側も詳しく解説されています。AIアプリケーション開発の実際を知りたい開発者はもちろん、生成AIの可能性と限界を理解したいユーザーにとっても、示唆に富む内容となっています。

目次

はじめに

Ⅰ部 基礎

1章 プロンプトエンジニアリングの世界
    1.1 LLMは魔法だ
    1.2 言語モデル:私たちはどのようにたどり着いたのか
        1.2.1 初期の言語モデル
        1.2.2 GPTの登場
    1.3 プロンプトエンジニアリング
    1.4 まとめ

2章 LLMを理解する
    2.1 LLMとは何か
        2.1.1 ドキュメント補完
        2.1.2 人間の思考とLLMの処理の違い
        2.1.3 ハルシネーション
    2.2 LLMが見る世界
        2.2.1 違いその1:LLMは決定論的なトークナイザーを使用する
        2.2.2 違いその2:LLMは文字を1つずつゆっくり確認できない
        2.2.3 違いその3:LLMは文字を人間とは異なる見方をする
        2.2.4 トークン数を数える
    2.3 1つのトークンずつ
        2.3.1 自己回帰モデル
        2.3.2 パターンと繰り返し
    2.4 temperatureと確率
    2.5 トランスフォーマーアーキテクチャ
    2.6 まとめ

3章 チャット形式への移行
    3.1 人間のフィードバックによる強化学習(RLHF)
        3.1.1 RLHFモデルを構築するプロセス
        3.1.2 LLMの正直さを保つには
        3.1.3 一部の偏った振る舞いを避けるには
        3.1.4 RLHFは費用対効果が非常に高い
        3.1.5 アラインメント税に注意
    3.2 インストラクトモデルからチャットモデルへ
        3.2.1 インストラクトモデル
        3.2.2 チャットモデル
    3.3 APIの変化
        3.3.1 チャット補完API
        3.3.2 チャットと補完の比較
        3.3.3 チャットを超えてツールへ
    3.4 プロンプトエンジニアリングは脚本作成
    3.5 まとめ

4章 LLMアプリケーションの設計
    4.1 ループの仕組み
        4.1.1 ユーザーの問題
        4.1.2 ユーザーの問題をモデルドメインに変換する
        4.1.3 プロンプトを補完するためのLLMの使用
        4.1.4 ユーザードメインへの復帰
    4.2 フィードフォワードパスの詳細
        4.2.1 基本的なフィードフォワードパスの構築
        4.2.2 ループ処理の複雑さを探る
    4.3 LLMアプリケーションの品質評価
        4.3.1 オフライン評価
        4.3.2 オンライン評価
    4.4 まとめ

Ⅱ部 中心的なテクニック

5章 プロンプトのコンテンツ
    5.1 コンテンツのソース
    5.2 静的なコンテンツ
        5.2.1 質問を「明確化」する
        5.2.2 Few-shotプロンプティング
    5.3 動的なコンテンツ
        5.3.1 動的なコンテキストを見つける方法
        5.3.2 RAG
        5.3.3 要約
    5.4 まとめ

6章 プロンプトの組み立て
    6.1 理想的なプロンプトの構造
    6.2 どのようなドキュメントを作るべきか
        6.2.1 アドバイスの会話
        6.2.2 分析レポート
        6.2.3 構造化ドキュメント
    6.3 スニペットの形式
        6.3.1 トークンの独立性に関して
        6.3.2 Few-shotの例のフォーマット化
    6.4 伸縮自在なスニペット
    6.5 プロンプト要素間の関係
        6.5.1 ポジション
        6.5.2 重要度
        6.5.3 依存関係
    6.6 すべてを組み合わせる
    6.7 まとめ

7章 モデルの制御
    7.1 理想的な補完の構造
        7.1.1 序文
        7.1.2 認識可能な開始と終了
        7.1.3 追記
    7.2 テキストを超えて:logprob
        7.2.1 補完がどれくらい優れているか
        7.2.2 分類のためのLLM
        7.2.3 プロンプトの重要なポイント
    7.3 モデルの選択
    7.4 まとめ

Ⅲ部 プロンプト作成のエキスパート

8章 会話型エージェント
    8.1 ツールの使用
        8.1.1 ツールの使用に関してトレーニングされたLLM
        8.1.2 ツール定義のガイドライン
    8.2 推論
        8.2.1 思考の連鎖(CoT)
        8.2.2 ReAct:反復的な推論とアクション
        8.2.3 ReActを超えて
    8.3 タスクベースのやり取りのためのコンテキスト
        8.3.1 コンテキストのソース
        8.3.2 コンテキストの選択と整理
    8.4 会話型エージェントの構築
        8.4.1 会話の管理
        8.4.2 ユーザー体験
    8.5 まとめ

9章 LLMワークフロー
    9.1 会話型エージェントで十分か
    9.2 基本的なLLMワークフロー
        9.2.1 タスク
        9.2.2 ワークフローの組み立て
        9.2.3 ワークフローの例:Shopifyプラグインマーケティング
    9.3 高度なLLMワークフロー
        9.3.1 LLMエージェントによるワークフローの駆動の許可
        9.3.2 ステートフルなタスクエージェント
        9.3.3 役割と委任
    9.4 まとめ

10章 LLM アプリケーションの評価
    10.1 私たちは何をテストしているのか
    10.2 オフライン評価
        10.2.1 サンプルスイート
        10.2.2 サンプルを見つける
        10.2.3 解決策の評価
        10.2.4 SOMAアセスメント
    10.3 オンライン評価
        10.3.1 A/Bテスト
        10.3.2 メトリクス
    10.4 まとめ

11章 未来を見据えて
    11.1 マルチモダリティ
        11.1.1 ユーザー体験とユーザーインターフェース
        11.1.2 知能
    11.2 まとめ

索 引