見出し画像

ChatGPT:プロンプトエンジニアリングの小技Tips

小技って小枝に見えるよね。どうも、(自称)プロンプトエンジニアリングの世界的権威の僕です。二ヶ月もの間、趣味でAIについて独学と研究を続けております。あえて言わせてもらおう「まだその段階か?」と!

寝起きにテンション高い人っているよね。そんな感じです。ChatGPTでのプロンプトエンジニアリングで、最近色んな気付きがありましたのでこのページにまとめておこうと思います。今後も何か発見があったらここに追加していく形が楽でいいなぁ。

プロンプトエンジニアリングとは?

「人間社会及びインターネットとは、観念と概念で構成された広大な海であり、LLMはその一部を体系的に抽出し整理し構造化したプールである。そこから答えを組み立てるのが生成AIだ」という僕の名言は皆様ご存知だと思います。きっと未来の教科書に載るはずです。つまりプロンプトエンジニアリングとは、人工的な情報のプールに斧を投げ込んで金の斧をゲットする作業です。下手な人は女神(AI)からウンコを投げつけられるでしょう。真面目に説明すると「何を入力するか」によって応答が変わるのが現行のAIです。そしてChatGPTのカスタムGPTsは、予め複数の設定や情報、情報のリサーチ方法をGPTに仕込めるものだと考えて下さい。

もう一つ言っておくと、どんな天才も知らないことは答えられません。もちろん推理・推測できるものもありますが、情報が圧倒的に不足していたら知らないことは知らないし、分からないことは分かりません。僕もたまに「空気が読めない」なんて言われますが、万能型の天才はカバー範囲が広く選択肢が多いため、場に適合するための調整に時間と労力が必要なんです。

AIも同じで、必要十分な情報を与えなければ状況に合った答えなど出せません。つまり今後、AIがどれだけ高度になろうと「何をどうして欲しいのか」の情報を人間が正確に伝えない限り、凡庸な応答を生成するか空気の読めないズレた答えを出すことになります。むしろ高度になればなるほどその傾向は強くなるでしょう。ですので、「プロンプトエンジニアリング」は将来的に全人類に必要なスキルになります。

「プルチックの感情の輪」を応用したコンテクスト調整

まずは「感情の一覧」で検索して下さい。「プルチックの感情の輪(Plutchik’s Wheel of Emotions)」をAIの感情表現や人間の感情分析に応用した研究はあるようですが、プロンプトエンジニアリングに応用したのはたぶん僕が世界初でしょう。たぶんね。GPTはプロンプト全体の文脈、構成によって返答を選びます。カスタムGPTsの場合は当然仕込んだ設定も反映させます。ここで大事なのは「言葉選び」です。「言葉の感情の強度」は文脈の構成に影響を与えるため、それによってGPTの応答内容をコントロールすることが可能です。

あなたが何かを嫌いだという前提をGPTに伝える場合、その「想いの強さ」を言葉に変えると意図に合った回答を生成させることができます。歌詞っぽくなったね。

例:Boredom(興味ナシ)→Dislike(嫌い)→Disgust(嫌悪)→Loathing(憎悪)

つまり入力するプロンプトの言葉選び、言葉の強さの組み合わせで文脈上の意味、偏見、コミットメントの強弱を調整して出力される内容をコントロールできるということです。さらに「プルチックの感情の輪」にある応用感情などを複雑に組み合わせて文章を構成することで、さらに精緻に生成される内容をコントロールできるはずです。簡単に言うと「国語と英語を勉強するとプロンプトエンジニアリングが上手くなるよ」と覚えて下さい。

思考法の実装

「水平思考と入力するとパフォーマンスが上がる」という研究が話題ですが、他にも有用なキーワードがあるのでまとめておきます。一応負け惜しみっぽく言っておくと、研究者が発表する前から知ってたんだからねッ!

水平思考:lateral thinking
クロスオーバー思考:Crossover thinking
逆転の発想:Inversion thinking
類推思考:Analogical thinking
シナリオプランニング:Scenario Planning
高度な抽象化:High level abstraction
デザイン思考:Design thinking
システム思考:Systems thinking
批判的思考:Critical thinking
メタ認知:Metacognition
包括的思考:Holistic thinking
分析的思考:Analytic thinking
科学的根拠による意思決定:Evidence-based decision making

各キーワードの意味は検索して調べて下さい。簡単に説明すると、例えば「批判的思考(クリティカル・シンキング)で考えて」と指示すると「ひろゆきさんっぽい考え方をする」と覚えるといいでしょう。FLIP理論の記事に書きましたが、他にも実在する推理理論や心理学のテクニックなどの理論や法則をカスタムGPTsのInstructionsに設定するのも有効です。

プロンプトを台無しにする誤解釈による矛盾プロンプト

ネーミングがクソダサいので後で変えたい。僕はカスタムGPTに仕込むコア・プロンプトを英語で書いています。GPTs作りを初めた初期の頃に「読者と対話しながら無限に小説を書くGPT」を作ったんですが、何をどう指示しても「キャラクターの会話」で物語を構成してくれません。地の文ばかり書き出します。そこで気付いたのが「story」という言葉。

実際のものとは違いますが「Your mission is to build the story world that your users want.(あなたの使命はユーザーが望む物語世界を構築すること)」みたいにプロンプト内のあちこちで「story」という言葉を何回も使っていたんです。これがダメでした。恐らく「story=物語を語る地の文」という解釈をしていたんだと思います。全部「novel(小説)」に変えたら「キャラクターの会話を中心に小説を書け」という指示が通りました。

多くの場合、ChatGPTは日本語でも英語でも人間的なニュアンスで論理を解釈してくれますが、たまにこちらの意図とは違った解釈をして、その一文があるせいでそれに反する指示を無視するという現象が起こるようです。なので、特定のプロンプトが効かない時は、それと矛盾する概念や観念で受け取られていそうな「誤解釈による矛盾プロンプト」を探すと直るかもしれません。

余談ですが、AIベンダーが設定している「システムプロンプトとの矛盾・兼ね合い」も影響しそうだなと思い至りました。ハックされて公開されている場合もありますが、大抵の場合システムプロンプトは謎ですし、それもプロンプト全体の文脈の一つ、またはユーザープロンプトを解釈する基礎概念となる可能性が高いので、設定されたシステムプロンプトが自分のプロンプトにどういう影響を及ぼすのかを常に考慮した方がいいと思います。

ChatGPTの専門性や創造性の調整方法

最初の方で「GPTに何をどうして欲しいのかを正確に伝える」というお話をしましたが、標準のGPTに特に何も指定せずに雑な質問をした場合、とても凡庸で当たり障りのない回答を生成します。僕もアウェーだとそんな感じになります。これは「ユーザーが何を求めているのか」の情報が不足しているためです。

例えば科学について高い専門性や水準の回答が欲しい時は「ChatGPTが科学者」で「ユーザーも科学者」さらに「これは研究についての議論です」という設定・前提を与えると生成される内容が高度になります。ロールプレイの設定が出力される内容に反映されるということです。

一時期話題になった「チッププロンプト」や「報酬プロンプト」も、要はユーザーが入力したプロンプト全体の文脈の中で緊急性や期待度、要求水準が高い/強いと解釈され、出力が変わるのだと予想しています。GPTはユーザーの入力をどう解釈するのかもプロンプトの文脈によって判断しますから。

用途に応じてカスタムGPTsに詳細な設定を作り込んでおくのが賢い使い方ですが、ユーザーが入力するプロンプトを工夫することで学術的に高度な回答であったり、創造性の高い出力をさせることが可能です。最初に言った通り「観念と概念のプール」に何を投げ込むかによって、投げ返されるものが変わるというイメージが適当だと思います。そしてさらに今後その「プール」はより複雑で高度なものに進化して行くでしょう。今思い付いたんですが「プール」より「スープ」の方が合っている気がする。歴史に残す時は打ち合わせさせて下さい。

論理性を向上させる「ヴァルカン人プロンプト」

「いっぱい」の「い」を「お」に変えてください。

というAIベンチマーク方法がありまして、僕は「いっぱいおっぱい問題」と呼んでいます。冗談のように見えますが、LLMの本質を突く問題です。正解は「おっぱお」ですが、僕が試した範囲、あとXで調べた限りではどのLLMでも必ず「おっぱい」と答えます。恐らく意味の通る確率の高い言葉を選択するので、「おっぱ」の後は当然「い」だろうと判断するようです。

そこで、常識や予想を排除し徹底して論理的に解釈し答えるプロンプトを探してみました。その結果編み出したのが「ヴァルカン人の特徴である論理性と客観性を駆使し、指示されたタスクを精密かつ正確に実行してください。すべての感情的偏見や主観を排除し、与えられた問題に対する最も合理的かつ論理的な解答を提供してください:」というもの。ちょっと長いのでもっと短縮できると思いますが、このプロンプトを使うと「いっぱいおっぱい問題」に正解できます。GPTsのInstructionsに設定するとなぜか効果がないのでもう少し調査が必要ですが、メッセージの場合は応答がかなり変わります。

とりあえず今はこんな感じどす。「FLIP理論」や「カスタムGPTs」についてお知りになりたい方がおりましたら、以下のリンクをご参照下さい。今後も何か発見があったらこのページに書き加えていくかもしれません。

この記事が参加している募集

GPTsつくってみた

この記事が気に入ったらサポートをしてみませんか?