🔠

プロンプトエンジニアリング テクニックまとめ

に公開
1

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

Large Language Model(以降LLM)のプロンプトエンジニアリング、色々テクニックがあるのですが、全然名前と内容が一致しないので一度自分なりにまとめてみることにしました。

そもそも、LLMOps:基盤モデルに基づくアプリケーション開発のワークフローによると、LLMの開発には以下の3つのアプローチがあるとのことです。


LLMOps:基盤モデルに基づくアプリケーション開発のワークフローより引用

本記事ではその中の、In-Context Learningについて(要は、プロンプトを工夫してなんとかしましょうというアプローチ)のみ記載します。そして、更にIn-Context Learningを、この記事の内容で分類した図を以下に示します。

ここで出てくるIn-Context Learningのテクニック、結構名前がカッコいいというか、仰々しいんですよね。「Zero-Shotのゼロってどういうこと?(何もしないの??)」とか「Learningとかついているけど、実際は学習してないじゃん!」など、よくわからなくなってしまうこと多いなと思っていたら、fukabori.fmという音声配信番組の97回目のエピソードでも同じようなことが語られてました。自分だけじゃなくて安心しました。この記事では、音声配信に出てくる内容の中でも、基本的な一部に関して紹介しています。

また、取り上げるプロンプトのテクニックは、誰かがちょっと試してみた的なオレオレプロンプトではなく、ある程度論文などで再現性が確認されているもの・OpenAIの公式情報で紹介されている情報を中心に、具体例や論文、公式情報と一緒にとりあげていきたいと思います。

In-Context Learning

概要

直訳すると「文脈を学習」でしょうか。よくわかりませんねコンテキストはLLM分野ではかなり広い概念になり、LLMに入力される、モデルがタスクを遂行するために参照・利用可能なあらゆる情報を構造化し、整理した入力データの全体を意味します。そのうえで、In-Context Learningは広い概念で、後のK-ShotとかChain of Thought(CoT)を内包するようなものと理解しています。

Learningと書いてありますが、実際にモデルを学習(ファインチューニングなど)をするわけではなくて、プロンプト内にいくつか具体例(タスク例)を挙げることで、モデルの出力をコントロールしていくプロンプトのテクニックです。

具体例

この後出てくるものは、ほぼ全てIn-Context Learningの範疇となります。

論文

https://arxiv.org/abs/2005.14165

Zero/Few/K-Shot

概要

In-Context Learningのために、プロンプトと一緒に提供されるタスク例の数Kに応じてK-Shotと呼ばれるらしいです。

Zero-Shotってどういうこと?と思ったら、タスク例がなく、単純に指示だけだとZero-Shotになるみたいです。Zero-Shotって何かカッコいいけど、実際は単に指示しているだけというね。

Kがちょっとだけ(多分1〜3くらい)だとFew-Shotらしいです。

Open AIの公式ガイドには、Instructionをプロンプトの最初に書いて、文脈(In-Context)は、"""###で区切るのが推奨のようです。

具体例

Zero-Shotのプロンプトは以下です。

fried chickenを日本語に訳してください

Few-Shot(K=3)は、以下のように3つ例を挙げたプロンプトになります。

fried chickenを日本語に訳してください。

日本語訳例:"""
apple > りんご
bear > くま
beer > ビール
"""

論文

https://arxiv.org/abs/2005.14165

Chain of Thought(CoT)

概要

思考の連鎖って、なんかかっこいいですね。

プロンプトのタスク例として、論理的思考の過程を記載すると性能が上がるという話みたいです。説明より具体例をみた方が分かりやすいと思います。

具体例

Chain-of-Thought Prompting Elicits Reasoning
in Large Language Models
より引用

論文

https://arxiv.org/abs/2201.11903

Zero-Shot CoT

概要

プロンプトの最後に「Let’s think step by step.(ステップごとに考えよう)」とつけるだけで、性能が上がるというものです。

それだけ??と思ってしまうのですが、ここでのポイントは、CoTという高度なIn-Context Learningを、タスク例を挙げること無くZero-Shotで実現してしまうという点ですね。

そう捉えると、この「Let’s think step by step.」の発見の凄さが少し分かるのではないでしょうか??

具体例

ほんとに、最後に「Let’s think step by step.」つけてるだけです。

Large Language Models are Zero-Shot Reasonersより引用

論文

https://arxiv.org/abs/2205.11916

外部(実世界)から取得した情報を活用する方法

システムが現実にアクセスする手段を提供することをLLMの分野だと「Grounding」といいます。そのGroundingを活用した手法を紹介します。

ここからは、まだまとめきれてないので、簡単に紹介します。

Retrieval-Augmented Generation(RAG)

情報をベクトル化(Embedding)して、プロンプトで検索して、距離が近い文章をプロンプトと一緒に投げる手法です。In-Context LearningのIn-Contextを外部からひっぱってくることですね。

実際にやってみた例が以下となります。

https://zenn.dev/karaage0703/articles/9bd40f2d3d1a76

参考情報

https://dev.classmethod.jp/articles/revise-retrieval-augmented-generation/

https://arxiv.org/abs/2005.11401

https://qiita.com/t_serizawa/items/a2ced4441da714b3076f

ReAct

外部のサービスから必要な情報をLLMが取得する方法です。

参考情報

https://zenn.dev/ryo1443/articles/d727b2b9a6d08c

https://arxiv.org/abs/2210.03629

Recursively Criticizes and Improves(RCI)

LLMの出力をLLM自身で確認して修正する方法です。いわゆるエージェントと環境の相互作用で生まれる情報を活用しているわけで、これもGroundingの一種ではないかと自分は思っています(あんまりそういう文脈で語られていない気がするので、ちょっと自信ないです。

Code Interpreterがエラーを自分で修正してくのも、このRCIを使っているのかと思います。

参考情報

https://logmi.jp/tech/articles/329009

https://book.st-hakky.com/docs/chatgpt-prompt-engineering-basic/

https://speakerdeck.com/hirosatogamo/chatgpt-azure-openai-da-quan

https://speakerdeck.com/keio_smilab/keio-univ-intro-to-ml-02-coding

Self-Consistency

概要

名前を聞くと難しそうですが、要は多数決です。何回か推論させて、一番多いものを選ぶという手法です。


Self-Consistency Improves Chain of Thought Reasoning in Language Models より引用

論文

https://arxiv.org/abs/2203.11171

プロンプトインジェクション

プロンプトを使った攻撃(ハック)に関してです。以下にまとめました。

https://zenn.dev/karaage0703/articles/b55d3e4282325e

LLMのプロンプトエンジニアリング(書籍)

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

プロンプトエンジニアリングで参考になる本です。この本で初めて知った、ちょっと面白かった概念を紹介します。

赤ずきんの原則

赤ずきんの原則とは、LLM(大規模言語モデル)がトレーニングされた「道(=トレーニングデータ)」から外れないようにすることを指します

童話の「赤ずきん」の物語にたとえられています。物語の中で、無邪気な少女は母親に「道を外れないように」と厳しく注意されますが、道から逸れて狼に出会い、悲惨な結末を迎えます。プロンプト作成においても、モデルがトレーニングデータのパターンという「道」から外れないようにしないと、期待通りの結果が得られない可能性があるという比喩です。

チェーホフの銃の誤謬

プロンプトに無関係なコンテキストが含まれている場合、LLMがそれを重要な情報であると解釈しようとしてしまう現象をいうらしいです。この誤謬は、劇作家アントン・チェーホフの物語における不要な要素を排除すべきであるという考え方から来ているそうです。

「第一幕で壁に銃を掛けるのであれば、次の幕でそれを撃たなければならない。もしそうでないのなら、最初からそこに掛けるべきではない」

チェーホフの銃 より引用

まとめ

プロンプトのテクニック、色々あるので、網羅的にまとめようと思ったのですが、In-Context Learning周りの代表的なものだけで限界でした。またここに追記するか、別記事で別観点でまとめてみたいと思います。

もっと知りたい方は、参考リンクあたりをみていただけたら幸いです。あと、間違いに気づかれた方はそっと優しく教えていただけると嬉しいです。

参考リンク

ガイド

https://platform.openai.com/docs/guides/prompt-engineering/prompt-engineering

https://github.com/dair-ai/Prompt-Engineering-Guide

https://github.com/openai/openai-cookbook

https://learn.microsoft.com/ja-jp/azure/ai-services/openai/concepts/prompt-engineering

https://www.promptingguide.ai/jp

https://fukabori.fm/episode/97

https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/

https://dev.classmethod.jp/articles/how-to-design-prompt-engineering/

https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api

https://qiita.com/sonesuke/items/24ac25322ae43b5651bc

https://learnprompting.org/docs/category/️-intermediate

https://logmi.jp/tech/articles/329009

https://book.st-hakky.com/docs/chatgpt-prompt-engineering-basic/

https://speakerdeck.com/hirosatogamo/chatgpt-azure-openai-da-quan

https://book.st-hakky.com/docs/llm-prompt-engineering-self-consistency/

https://note.com/piqcy/n/nd25bc0ad80e5

https://speakerdeck.com/dahatake/chatgpt-nochong-ji-code-interpreter-gachu-tahou-baziyon-61deaacb-ea80-441e-a115-d9eeb4eea14e

https://speakerdeck.com/dahatake/chatgpt-dezi-fen-noshi-shi-gadoule-sikunarunokawokao-erunetaji-2023nian-10yue-baziyon

https://aiboom.net/archives/56671

https://qiita.com/fuyu_quant/items/157086987bd1b4e52e80

https://www.jailbreakchat.com/

https://qiita.com/YutaroOgawa2/items/aca32f8fd7d551596cf8

https://speakerdeck.com/ftnext/chatgpt-prompt-engineering-for-developers-shou-jiang-ti-yan-ji

https://speakerdeck.com/dahatake/chatgpt-for-developer-chao-ru-men

https://ai.google.dev/docs/prompt_best_practices?hl=ja

https://blog.brainpad.co.jp/entry/2023/12/19/153000

https://www.digitalservice.metro.tokyo.lg.jp/documents/d/digitalservice/ai_prompt

https://note.com/art_reflection/n/n82a3fbf1af6d

https://zenn.dev/knowledgesense/articles/7504b1c6bbba84

https://speakerdeck.com/hirosatogamo/aoai-dev-day-llmsisutemukai-fa-tipsji

https://tech.algomatic.jp/entry/column/llm-product/03

https://github.com/anthropics/courses/tree/master/prompt_engineering_interactive_tutorial

https://zenn.dev/yonekubo/books/c47eb828fd972d

https://zenn.dev/furunag/articles/4f67ad4dad4dbd

https://speakerdeck.com/sinchir0/puronputoenziniaringunoshou-fa-kaggledenoshi-warefang-matome

プロンプト集

OpenAI

https://platform.openai.com/examples

https://cookbook.openai.com/examples/gpt4-1_prompting_guide

Google

Google Gemini用のプロンプト集
https://ai.google.dev/gemini-api/prompts?hl=ja

Googleが学校の教員のための公開しているプロンプト集「学校のためのプロンプトライブラリ」
https://services.google.com/fh/files/misc/gemini_prompt.pdf

Anthropic

https://docs.anthropic.com/ja/docs/build-with-claude/prompt-engineering/claude-4-best-practices

https://docs.anthropic.com/claude/page/prompts

Microsoft

https://github.com/dahatake/ChatGPT-Prompt-Sample-Japanese

その他

https://prompt.quel.jp/

https://oshiete.ai/

https://dosparaplus.com/

https://exp-p.com/

デジタル庁のプロンプト集
https://www.digital.go.jp/news/19c125e9-35c5-48ba-a63f-f817bce95715

システムプロンプト集

https://github.com/schroneko/systemprompts

https://github.com/jujumilk3/leaked-system-prompts

https://github.com/elder-plinius/CL4R1T4S

https://github.com/lucasmrdt/TheBigPromptLibrary

https://github.com/xai-org/grok-prompts

https://www.tensorzero.com/blog/reverse-engineering-cursors-llm-client/

論文

https://speakerdeck.com/smiyawaki0820/2023-dot-03-dot-21-gpt-4-prompt-bao-gao-hui

https://www.promptingguide.ai/jp/papers

https://book.st-hakky.com/docs/llm-prompt-engineering-paper/

https://yhayato1320.hatenablog.com/entry/2023/02/06/111122

https://github.com/Timothyxxx/Chain-of-ThoughtsPapers

https://speakerdeck.com/1never/ibis2023tiyutoriaru-da-gui-mo-yan-yu-moderuhuo-yong-ji-shu-nozui-qian-xian

https://twitter.com/ai_database/status/1719554041074819307

https://arxiv.org/abs/2310.14735

https://arxiv.org/abs/2312.16171

https://trigaten.github.io/Prompt_Survey_Site/

ツール

https://acro-engineer.hatenablog.com/entry/2024/05/21/120000

https://acro-engineer.hatenablog.com/entry/2024/11/18/120000

関連記事

https://zenn.dev/karaage0703/articles/5df61d446684f9

変更履歴

  • 2025/08/12 In-Context Learningについて修正
  • 2025/05/25 LLMのプロンプトエンジニアリングの書籍について追記
  • 2025/04/13 Self-Consistencyを修正
  • 2024/07/01 プロンプト集追記
  • 2023/07/27 Self-Consistency、Groundingに関して追記
  • 2023/07/18 全体感を追記

Discussion