OpenAIとGoogleの発表がもたらした、AI開発のベストプラクティスの変化
https://www.deeplearning.ai/the-batch/issue-249/
ポイント
AI開発者のベストプラクティスが変わってきた
推論能力の向上と、より長い入力コンテキストウィンドウの影響がかなり大きい。
それによって、メガプロンプトを処理できるようになった
https://scrapbox.io/files/664d88176156d1001dbf73fa.png
多ショットが、少数ショットFew-Shotより効果的なことがわかってきた。
プロンプト戦略は以下の通り
まずは、簡単なZero-Shot
ダメなら、詳細にしていく。時にメガプロンプトになることも
ダメなら、Few-Shot、Many-Shot、ファインチューニング
ダメなら、タスクを細分化し、Agentic Workflowを適応
感じたこと
これからは、Many-ShotとAIエージェントの時代
https://x.com/ottamm_190/status/1792480943296610749
https://scrapbox.io/files/664d89b9b5fbf7001cc066bb.png
MedPrompt論文、Medpromptは知ってたけど、ちゃんと読んでなかった
しっかり読みます。
概要
この数日間で、GoogleはGemini 1.5 Proの入力コンテキストウィンドウを100万トークンから200万トークンに倍増し、OpenAIはGPT-4oをリリースしました。
GPT-4oはトークンの生成速度が2倍速く、GPT-4 Turboより50%安価で、マルチモーダルトークンをネイティブに受け入れ、生成します。私(Andrew Ng)はこれらの開発を、過去18か月のトレンドの最新のものとして見ています。これまでの改善を踏まえると、開発者のベストプラクティスも変化しています。
2022年11月にChatGPTがローンチされ、GPT-4、Gemini 1.5 Pro、Claude3 Opus、Llama3-70Bのリリースを含む主要なマイルストーンを経て、多くのモデルプロバイダーは2つの重要な方法でその能力を向上させてきました。
(i) 推論、これはLLMが複雑な概念を考え抜き、複雑な指示に従うことを可能にします。
(ii) より長い入力コンテキストウィンドウです。
GPT-4や他の先進的なモデルの推論能力は、詳細な指示を含む複雑なプロンプトを解釈するのに非常に優れています。多くの人は、LLMに対して短い1〜2文のクエリを送信することに慣れていますが、アプリケーションを構築する際には、洗練されたチームが頻繁に1〜2ページにわたるプロンプト(私たちのチームはこれを「メガプロンプト」と呼びます)を書き、LLMがタスクをどのように実行すべきかを詳細に指定しています。それでもなお、詳細な指示を書くことに十分に取り組んでいないチームも見受けられます。中程度の長さのプロンプトの例としては、Claude 3のシステムプロンプトをご覧ください。
https://scrapbox.io/files/664d87a7751dfb001cf12018.png
https://x.com/AmandaAskell/status/1765207842993434880/photo/1
これは詳細で、Claudeがどのように振る舞うべきかについて明確な指針を示しています。
https://scrapbox.io/files/664d88176156d1001dbf73fa.png
これは、通常LLMのウェブユーザーインターフェースで使用するプロンプトのスタイルとは大きく異なります。そこで私たちは短いクエリを送信し、応答が不十分であればチャットボットとの会話を繰り返して望む結果を明確にします。
さらに、入力コンテキストウィンドウの長さが増加したことで、開発者のツールキットに新たな技術が追加されました。GPT-3はFew-ShotのICL(コンテキスト内学習: In Context Learning)に関する多くの研究を開始しました。例えば、テキスト分類にLLMを使用する場合、テキストスニペットとそのクラスラベルの例を1〜5個ほど与えることで、それらの例を一般化して追加のテキストに適用できます。
しかし、より長い入力コンテキストウィンドウ(GPT-4oは128,000トークン、Claude 3 Opusは200,000トークン、Gemini 1.5 Proは100万トークン(限定プレビューで200万トークンに増加発表))により、LLMは少数の例に限定されません。多ショット学習では、開発者はプロンプトに数十、さらには数百の例を提供でき、これは少数ショット学習よりも効果的です。
複雑なワークフローを構築する際、次のプロセスで良い結果が得られることを確認しています:
- 1. 短くて簡単なプロンプトを書き、それがどのように機能するかを確認する。
- 2. 出力が不十分な部分に基づいて、プロンプトを反復的に充実させる。これにより、長くて詳細なプロンプト、場合によってはメガプロンプトになることがよくあります。
- 3. それでも不十分な場合は、Few-ShotやMany-Shot学習(該当する場合)を検討するか、まれにファインチューニングを行う。
- 4. それでも必要な結果が得られない場合は、タスクをサブタスクに分解し、Agentic Workflowを適用する。
段階的にプロンプトを複雑にする戦略
インクリメンタルプロンプティングに似ている。
従来、OpenAIのベストプラクティスでは、上3つまでしかなかった。
https://scrapbox.io/files/664d908fbee866001d80327c.png
https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api
ここに、Many Shotsという選択肢と、Agentic Workflowが新たに追加された。
面白いじゃんか。
このようなプロセスが、アプリケーションの構築をより容易にすることを願っています。プロンプト戦略に関する詳細な情報に興味がある場合は、非常に優れた結果をもたらす複雑なプロンプト戦略をまとめたMedprompt論文をお勧めします。
参考
https://x.com/AndrewYNg/status/1791134037178020308