0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

プロンプトエンジニアリング~プロンプトの基本~について調べてみた

Posted at

記事の概要

ChatGPTなどの自然言語モデル(LLM)を使うようになってプロンプトエンジニアリングという表現をよく聞くようになったが、そもそもプロンプトエンジニアリングってどういうものか調べてみた内容を記事にまとめました。

プロンプトエンジニアリングってなに?

プロンプトエンジニアリングとは、AI、特に自然言語処理を担う言語モデル(LM)を効率的に使用するために、言語モデルへの命令(プロンプト)を開発・最適化する学問のこと。もうすこしかみ砕くとChatGPTのようなAIに対して、うまく指示を出して良い結果を引き出すための技術のことです。

AIに質問や指示を与えることを「プロンプト」と言います。プロンプトの与え方次第で、AIの出力結果は大きく変わります。例えば、「日本の首都はどこですか?」と聞くのと、「日本の首都である東京について説明してください」とプロンプトを工夫するのとでは、AIの答えの詳しさが変わってきます。

そのため、プロンプトエンジニアリングでは、AIの特性をよく理解し、タスクに合わせて効果的なプロンプトを設計します。プロンプトを適切に設計することで、AIの能力を最大限に引き出すことができるということです。

なぜプロンプトエンジニアリングが必要なの?

ChatGPTなどで使われている大規模言語モデル(LLM)では、大量のテキストデータから言語の使い方を統計的に学習しているため、人間のように言葉の裏にある意味合いを汲み取ることが得意ではありません。そのため、あいまいな指示では的確な出力が得られず、意図しない内容が出力されます。

また、プロンプトであいまいな指示をすることにより、AIが学習データとは異なる事実や、学習データに存在しない情報を生成する可能性が高くなります。こうした事実と異なる情報や学習データに存在しない情報の出力のことは、一般的にハルシネーション(幻想)とよばれています。

どうすれば出力内容を向上させられるの?

プロンプトエンジニアリングを使った自然言語処理の精度を向上させる方法はいくつかありますが、主だったものは以下のようなものになります。

指示の仕方

  • 曖昧な表現は避け、具体的で詳細な指示を与える
  • 望ましい出力形式やスタイル、文脈などを具体的に指定する
  • 指示は常にプロンプトの先頭に置き、区切り文字などで指示と文脈を明確に分ける

具体例を提示する(Few-shot learningの活用)

  • 文脈の中に望ましい出力形式の具体例を2、3個提示することで、言語モデルの理解を助ける

最新の高性能な言語モデル(LLM)を使う

  • 一般的に最新で性能の高いモデルほど高精度の出力が期待できるため、可能な限り先進的なモデルを活用する
  • OpenAIの最新モデルだけでなく、AnthropicやGoogle、Metaなど、各社で切磋琢磨してLLMモデルの開発しているため、各社の最新動向を参考にしながらより高性能なモデルを場面ごとに使い分ける

プロンプトは簡潔に

  • 冗長で複雑なプロンプトは言語モデルの理解を妨げる可能性がある
  • 必要最小限の情報に絞ってコンパクトなプロンプトを心がける

Chain of thoughtを利用する

  • 推論プロセスを段階的にプロンプトに含めることで、複雑なタスクの精度向上が期待できる
  • 言語モデルの出力をプロンプトに再利用することで、AIが反復的に推論を深められる

プロンプトの例

このプロンプトでは、AIに演じてほしいペルソナ(役割)と、入力文に対して求める出力内容を明確に指示しています。また、制約条件を設けることで、より具体的で質の高い回答を引き出すことができます。

あなたは[ペルソナ]です。以下の制約条件と入力文をもとに、[出力内容]を出力してください。
# 制約条件
[制約条件1]
[制約条件2]
[制約条件3]

# 入力文
[入力文]

# 出力文
[出力内容の指示1]
[出力内容の指示2]
[出力内容の指示3]

上記例を使ったサンプルのプロンプトを作成してみましょう。

あなたは経験豊富な雑誌編集者です。
以下の制約条件と入力文をもとに、おいしい料理店を探すための情報を出力してください。

# 制約条件
・料理のジャンルは和食、イタリアン、中華料理の3つに絞る
・東京23区内の店舗のみを対象とする
・予算は1人あたり5,000円から10,000円の範囲内とする

# 入力文
読者におすすめしたい、東京でおいしい料理が楽しめるお店を探しています。
和食、イタリアン、中華料理の3ジャンルから、それぞれ2店舗ずつ選んでください。
雰囲気が良く、ゆったりと食事を楽しめる店舗が望ましいです。

# 出力文
・ジャンルごとに2店舗ずつ、合計6店舗を紹介してください
・各店舗について、以下の情報を箇条書きで提供してください
 ・店名
 ・最寄り駅からのアクセス方法
 ・おすすめのメニューと価格帯
 ・店舗の雰囲気や特徴
 ・予約の必要性や予約方法
・紹介文は1店舗あたり100文字以内にまとめてください

このプロンプトでは、雑誌編集者のペルソナを設定し、おいしい料理店を探すための具体的な制約条件と求める情報を明示しています。出力形式も箇条書きで指定し、1店舗あたりの文字数制限も設けることで、より的確で簡潔な情報が得られるようにしています。

まとめ

もちろん、こうしたプロンプトを作りこまなくてもAIによってある程度の内容は出力されますが、より求めている情報に早く近づけるためには、こうしたプロンプトを工夫してAIに指示する方が確実なため、プロンプトエンジニアリングという手法を駆使してAIが使われていると考えています。

ぜひ、いろんなプロンプトを作成してAIにたくさん質問してみましょう。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?