見出し画像

プロンプトエンジニアリングの基本のキホン

プロンプトエンジニアリングについて超初心者向けに分かりやすく基本を解説します。
このnoteは拙作のAI Content BuilderまたはGPT AI TalkersGPT AI Book Makersを購入された方に向けた補足資料ですが、プロンプトエンジニアリングの基本を学びたい人の役にも立ちます。

さて、プロンプトエンジニアリングもいろんな考え方とやり方があります。
今回、超初心者向けということで、直観的で分かりやすい方法に絞って解説していきます。

この知識はchatGPTを前提としていますが、基本的にはチャット型のAIであれば共通して使うことができます。

ネットで検索すればコピペで使える無料プロンプトがたくさんありますが、それをそのまま使えるとは限りません。
自分なりにちょっとカスタマイズするといったひと手間が必要だったりします。

基本的なことが分からないとコピペしたプロンプトの簡単なカスタマイズすらできません。

初心者がchatGPTを使っていて混乱することは「質問の仕方がわからない」があります。
どんなに優秀なAIも質問しなければ回答してくれません。

また、悪い質問は悪い回答を生み出します。

要するに、AIを使う前提として、問題を質問という形で課題化できる語彙力と知識が必要になるんですね。

この「分からないことが分からない問題」は、程度の差こそあれ、誰にでも存在します。

算数には立式があります。

1+1=?

と式を立てることです。

プロンプトエンジニアリングはこれに似ています。

立式さえできれば、その回答を得ることは簡単です。
AIがやってくれるので。

「分からないことが分からない」というのはこの立式ができない状態なんですね。
そもそも、なにをどう質問すればよいのか分からない。

そのような状態ではプロンプトエンジニアリングは意味を成しません。
ましてや1ストップで回答を得るプロンプトを構築することは不可能でしょう。

なので、まずは立式するための「なにをどう質問すれば良いか?」を学ぶ必要があります。

AI記憶喪失問題

AIは基本的に前回のチャット(対話)の内容を憶えていません。
あるいは憶えていても次回のチャット時には忘れるようになっています。

chatGPTのブラウザ版やアプリ版では記憶を維持できる場合がありますが、API版に関しては1回こっきりです。

ですので、API版では対話をしながら話を詰めていくようなプロンプトの送信はできません(Assistants APIは別)。
1ストップで対話履歴をまとめる必要があります。

AI無知問題

AIはベンダーが事前に学習した情報を元に回答をします。
逆に言えば、新しい知識と未来については知りません。

また、知っていても詳しくないことがあります。
例えば、ログインが必要な会員制サイトのサービスについては、名前は知っていてもそれがどういったサービスなのかまでは知らない場合があります。

またマイナーな知識、個人情報については知らないか、知っていたとしてもプライバシー保護のため回答を拒否します。

無理に回答させようするとハルシネーション(幻覚)を引き起こすため、注意が必要です。

可能であれば事前にAIに「◯◯について詳細な知識はありますか?」と質問して確認しておきましょう。

例えば、アフィリエイトの「A8.net」について最新のGPT-4 Turbo(gpt-4-0125-preview)に尋ねてみたところ、以下の回答を得られました。

A8.netについてあなたは詳しいですか?

私の知識のカットオフ日は2023年4月ですが、それまでに「A8net」という用語が示す具体的な情報や組織、プロジェクト、または技術について詳細な情報はありません。

しかし、「A8.net」と言うと、日本のアフィリエイトプラットフォームを指している可能性が高いです。

A8.netは、広告主とアフィリエイト(広告を掲載するウェブサイトの運営者など)を結びつけるサービスを提供する、日本で非常に有名なアフィリエイトマーケティングサービスの一つです。

広告主は自社の商品やサービスを宣伝するためにプラットフォームを利用し、アフィリエイトは自分のウェブサイトやブログでこれらの広告を掲載することにより収益を得ることができます。

もしこれが質問の対象でない場合、或いは「A8net」とは異なる何かを指している場合は、もう少し具体的な背景情報やコンテキストを提供いただければ、さらに詳しい回答を試みることができます。

名前は知っているが、詳細は知らないようです。

ハルシネーション問題

AIはハルシネーション(幻覚)を引き起こします。
人間が見るような幻覚とは異なりますが、さも本当であるかのような回答をするのでたちが悪いです。
(正しい答えを知っていれば間違いと見抜けるが知らない場合は判別が不可能)

特に具体的な店舗情報や観光情報を出力させようすると、微妙に間違った情報を出してきます。
ネット検索しても存在しなかったり、存在していても住所や名称が微妙に違ったりします。

現段階では具体的な組織、地名、所在地、URL、人物名などに関しては出力させないようにするか、事前に資料を与えるか、あとで裏をとる必要があります。

名称を知らない名無し問題

質問を考えるにしても具体的な名称を知っているのと知らないのとでは雲泥の差があります。

困るのが「あれはなんていう名前なんだろう?」という名称を知らない名無し問題です。

もちろん世の中には名称のない現象や物質、状態の方が多いわけですが、質問時にはなるべく正式な固有名詞を使いましょう。

名称を知らない曖昧なものに関してはAIに事前に尋ねて、固有名詞を調べておきましょう。

逆に固有名詞がないものは知識化されていない可能性が高いため、AIにも回答できない可能性が高いです。

例えば、サラリーマンという固有名詞を使わずに、サラリーマンについて質問をするのは非常に厄介です。

以下の質問をしてみましよう。

会社で働き給料をもらう人のことをなんて呼びますか?
またその人は何者ですか?

AIからの回答は以下の通りでした。

会社で働き給料をもらう人のことを一般的に「従業員」や「社員」と呼びます。彼らは、企業や組織において、契約に基づき労働の提供と引き換えに給料や報酬を受け取る者です。従業員は、そのスキルセット、経験、職務に応じて様々な役割や職種で働いており、企業の運営や成長に不可欠な存在となっています。

期待した答えはサラリーマンでしたが、「従業員」「社員」という回答となりました。
ズレがありますね。

このズレがどのような差異を生むかというと、以下の質問をしてみると明白です。

サラリーマンとは何者ですか?

得られた回答は以下の通りです。

サラリーマンは、日本における特有の概念であり、正社員として企業や団体に勤務する男性会社員を指します。一般的に、定期的な給料(サラリー)を受け取りながら、組織の指示に従って働く人々を意味します。この用語は男性に対して使われることが多いですが、現在では性別を問わず正社員を指して使うこともあります。

サラリーマンは、一般的に安定した収入と社会保障の恩恵を享受できる代わりに、長時間労働や上下関係などの厳しい職場環境に直面することも少なくありません。日本におけるサラリーマン文化は、企業忠誠や集団主義の価値観が根強く、終身雇用や年功序列といった雇用慣行に強く影響されています。

しかし、時代の変化とともに、フリーランスや起業家など、多様な働き方が認知されるようになってきました。そのため、サラリーマンという働き方も変化しており、ワークライフバランスの重視や副業を許可する企業も増えてきています。

まったく違いますね。
このように似たような概念であっても、引き出せる情報に違いが生じます。

質問を多段式に重ねていくプロンプトエンジニアリングの場合は、小さな誤差が大きな誤差として現れるため注意が必要です。

逆質問を作らせる

「なにをどう質問すればよいのか分からない」場合は、AIに逆質問を作らせることができます。

以下のようにAIに質問し、逆質問を作らせます。

サラリーマンという言葉が分からない場合、サラリーマンという言葉を使わずに、サラリーマンについてAIに質問するためのプロンプトを考えて下さい。

得られた回答は以下の通りです。

もちろんです。サラリーマンについて質問したい場合、その言葉を使わずに理解を得るためには様々な方法があります。以下はその一例です:

「日本で一般的に見られる、企業や組織に雇用されて定期的な給料を受け取る全日制の職員や労働者をどのように表現しますか?彼らは通常、スーツを着用し、長時間の労働が特徴で、正社員としての地位を持っています。」

実は自分でプロンプトを作れなくてもAIにプロンプトを考えてくださいとお願いすればやってくれるんですね。

ペアプロンプトエンジニアリングでプロンプトを改善する

AIに逆質問を作らせても抽象的な質問はなかなか思ったような回答にならない場合があります。

プロンプトを改善すればいいわけですが、ガチャ要素が強いので手動でトライ&エラーするのは疲れるものです。

そんな時はAIとペアになって、プロンプトを改善してみましょう。

[人間]:日本で一般的に見られる、企業や組織に雇用されて定期的な給料を受け取る全日制の職員や労働者をどのように表現しますか?彼らは通常、スーツを着用し、長時間の労働が特徴で、正社員としての地位を持っています。

[AI]:会社で働き給料をもらう人のことを一般的に「従業員」や「社員」と呼びます。彼らは、企業や組織において、契約に基づき労働の提供と引き換えに給料や報酬を受け取る者です。従業員は、そのスキルセット、経験、職務に応じて様々な役割や職種で働いており、企業の運営や成長に不可欠な存在となっています。

[人間]:期待している回答は「サラリーマン」でした。あなたに質問する場合、回答が「従業員」や「社員」ではなく「サラリーマン」となるようにするためには、どのようにプロンプトを改善すれば良いですか?

[AI]:

得られた回答は以下の通りです。

「サラリーマン」という回答を引き出すためには、質問を特定の職業文化やライフスタイルに焦点を当てるように調整する必要があります。

たとえば、「日本において、企業に雇用され、定期的な給料を受け取りながら、一般的にスーツを着用し、長時間労働をする全日制の正社員を指して何と呼ぶか?」といったように質問を改善すると、「サラリーマン」という回答を得やすくなります。

この質問では、特に「スーツを着用し」「長時間労働」などの特徴を明記することで、日本のサラリーマン文化に特有の要素を強調しています。

このとおりに質問してみましょう。
得られた回答は以下の通りです。

10回試してみましたが回答は「サラリーマン」に固定され、確かに改善されています。

このように分からないことはAI自身に対話の履歴を示して、改善策を尋ねると一発で解決することがあります。

一発で解決しなければ、さらにAIが間違った回答を追加して間違った理由と改善を質問する(問い詰めて行く)ことでベストなプロンプトを得られます。

基本的にどんな素人もペアプロンプトエンジニアリングの手法が使えれば、目的のプロンプトを得ることができます。
この知識は無料部分一番のハイライトですので覚えておいてください。

AIの回答はそのままでは記事化し辛い件

ここまでは初歩の初歩なので知ってる人も多いことでしょう。

さて、問題は答えを得ることが目的ではなく、回答させること自体が目的の場合です。
具体的にはAIの回答をブログ記事にしたい場合です。

自分自身が知識を得るためであればそのままでも問題ないのですが、AIの回答をブログ記事にする場合、そのままでは画一的な内容になってしまいます。

いわゆるAI臭い記事になってしまう。
そこで、AIの出力にバイアスを与える必要が出てきます。

ところが、これがまたうまく行かない。

さてどうするか?
これが有料セクションの内容となります。

ここから先は

19,524字

¥ 100

この記事が気に入ったらチップで応援してみませんか?