見出し画像

考察ノート:Anthropicのプロンプト講座 /w Claude

Claudeはプロンプトエンジニアリングの推進者であり、モデル性能は今一だけども、(システム)プロンプト能力が優れていると言われている。プロンプトエンジニアリングのコンテンツも公開している。

今回は、"Prompt Engineering 101"を見た。話者は、Hannah Moran, Applied AI at ‪@anthropic-ai‬ Christian Ryan, Applied AI at ‪@anthropic-ai‬

お題は、交通事故のレポート。事故の様子をあらわす手書きの図から、レポートの定型フォーマットを埋めるという課題。最後の「感想」で少しプロンプトエンジニアリングの必要性について考察してみた。


Prompt Engineeringセッション開始

今回は、複数ターンのやり取りではなくて、プロンプトを工夫して一発で回答をえるという設定。

課題は交通事故レポート

0 最初のトライアル

最初は、単に、手書きメモとフォームの画像を添付して、直接指示を行う場合。

直接プロンプト

そして最初のClaude 4 Sonnetの回答は、スキー事故と認識されて、、、

最初のトライアルとしては、悪くないというのが話者の感想だそうだが、ここで今回のセッションのテーマである、「プロンプトエンジニアリング」についての紹介。

Prompt Engineering

最初のプロンプトからスタートして、科学実験のように、プロンプトを工夫、実行、振り返りと修正を繰り返すという話だ。

Prompt Structure

このセッションでは、チャットでくり返しながら洗練化するというよりも、一発プロンプトで解決する方法をとる。それには以下のような構造が必要である。

Prompt Structure
  1. 1、2のセンテンスで、AIの役割(role)や、高レベルでのタスクの説明をつける。

  2. 動的に与える、あるいは、RAGのように抽出されたコンテンツ

  3. タスクの詳細なインストラクション

  4. n-shotの例(オプション)

  5. そして、(LLMは長いコンテキストだと忘れやすいから)重要なインストラクションの繰り返し。

という基本構造をもつ。右には、この構造に対応するプロンプトのテンプレートが展開される。

Prompt Structure(詳細版)

そして、このプロンプトの構造を詳細化したものが、次のスライドで、この10の部分に沿って、説明を続ける。

 Prompt Structure(詳細版)

最初は、Task contextとTone context、まずもともと入力って、警察などが事故を分類とかするチェック表があって、

フォーム

一方、手書きの事故状況のイラストがある。

事故のスケッチ

まず、これらの、画像についての説明を追加する、車の事故のレポート作成であり、チェックボックスと、手書きの図、そしてセッションの目的は、車のどちらかの過失を主張できるか、あるいはより詳細な情報ならどんな情報が必要かがわかるというのを明確化。

どんな情報が必要か教えてね。

そしてClaudeの回答がこちら、こんどはスキー事故じゃなくて、車の事故と認識し、そして、どういう情報がないので、fully confidentでないかを説明してくれる。

こんな情報が足らないという回答

 3 Background data, documents, images

xmlタグを利用

xmlタグを用いて、各セクションが明確化されているが、これはxmlが単にトークンが少ない、範囲指定が明確ということで採用しえているだけだとの説明があった。

なぜかここで、System promptに(いままではUser Prompt)、詳細なバックグラウンドの説明を入力し始める。

バックグラウンドの説明をシステムプロンプトへ

4 Detailed task description and rules

事故の絵について、車両A,Bがあって、どっちがどうでとか。それからフォームの説明。

Fromを埋めるためのルールを明確化。

フォームを埋めるルールを書く

User プロンプトは前回と同じで、実行。

答えが向上

こんどは、Claudeが、図をちゃんと理解し、またフォームの内容も事前にsystem promptで分かっているのでスムーズに解析が進む。"I can confidently determine fault in this accident"ということで、確信度も高いという回答が返った。

7. Immediate task description or request

"5. example"や"6. history"は飛ばして、"7. Immediate task description or request"のところの説明に入り。

この部分の指示の例としては、ハルシネーションの防止を紹介。

ハルシネーションを予防する支持

8 Thinking step by step/ take a deep breath

そして、detail list of taskをsystem promptに追加。

より詳細にタスクの進め方を支持、XをみてからYをみるみたいな。

ここでの詳細なステップとは、例えば、先にチェックボックスをみて何がよ級されているかを調べて、自分の中でリスト化してから、図を見るというような、XをみてからYをみる、それにはYをみるまえにXの知識が役に立つみたいな、ちょっとマクロなステップ指示となっている。

Claudeの反応はちゃんとチェックボックスを先にみるので、それを埋めることが図を見ることの目的になり、結果としてチェックボックスは埋まる。

しして、スケッチの分析、

スケッチ分析結果

そして、これらの情報から、過失の決定ということで、車両Bに過失があるという推定を導き出す。

過失の推定

9 output formatting

そして、最後に"output"の指示、

出力の指示

出力に関するガイドラインそして、<final_verdict>タグで推定の結果を明示的に示すことを支持。

そして、ちゃんと所望の出力を得る。

10 Prefilled response

出力の指示は、claudeの責任を、回答を事前に埋めておいて、明らかにして、指示するみたいな説明だった。

Prefilltという考え方

What about extended thinking?

いや、プロンプトエンジニアリングで頑張るのか、いやそれとも、extended thinkingを使えば済むじゃん?という話には、まずextended thinkingの中身をトレースすればプロンプトエンジニアリングの役に立つという話と、毎回extended thinkingやるってのは、このようなノウハウとか手順を毎回、「車輪の再発明」しているようなものだし、それに確率的な回答になってしまうという話。

感想

さすがAnthropicのプロンプトエンジニアリングの説明。しっくりくるところがある、解像度の話とも通じていて、ちゃんとバックグランドの情報とか図の説明とか、LLMの認知負荷を下げつつ、フォームの説明や埋め方のルールを教える、すなわち自分でも明確にしている。また、手順の提示も単なるstepの指示ではなく、Xをみて、理解した上でYを実行といった、解き方の方策を示唆する提示、つまりClaudeの能力(ちゃんと理解し、ときに忖度してくれる)をちゃんと生かすような、指示もあって、さすがに、手練れだと感じた。

いや、これが普通の人にできるか?いや、半分メンタルモデルがLLM化している(と職場でもいわれる)私でも何とか、プロンプトの裏にある意図をなんとか読み取ったぐらいのので、難しいかも。モデルの性能が上がれば、プロンプトって不要という意見はあるが、結局、課題の解像度を上げてゆくというのは、人間側にも有効なわけで、これなしに、ガラガラポンで答えが出てくると思ったら、それは間違えであり、正しい期待値の設定の仕方ではない。

正しい期待値の設定の仕方とは、LLMはこれくらいのことはできるだろうな、例えば足らない情報の補完とか、推論とか、を思いはせながら、結果を楽しみに見る。そうすると、その期待する能力の発揮を自分で確認できる。そういうのが正しい期待値で、これを人間側も身につけないといけない。




いいなと思ったら応援しよう!