Python

プロンプトエンジニアリングのコツや例文をまとめていく!テキスト版と画像版!

プロンプトエンジニアリング
記事内に商品プロモーションを含む場合があります
ウマたん
ウマたん
当サイト【スタビジ】の本記事では、最近話題の生成系AIのアウトプットをハンドリングするのに大事なプロンプトエンジニアリングについてまとめていきます。AIに対する指示文をプロンプトと言いますが、このプロンプトが筋の良いアウトプットを出す上で非常に重要なのです。

こんにちは!

データサイエンティストのウマたん(@statistics1012)です!

昨今生成系AIの進化がスゴイですが、そんな生成系AIを上手く扱うためにプロンプトという指示文が大事になってきます。

この記事ではそんなプロンプトを操るプロンプトエンジニアリングについてまとめていきたいと思います!

プロンプトエンジニアリングの需要爆発!?

生成系AIの登場により、プロンプトエンジニアリングという言葉が生まれ、プロンプトエンジニアという職種が生まれました。

これは、今までプログラミング言語という名の「機械に人間の意図を伝える言語」を扱っていたものが自然言語で操れるようになったことによる変化です。

つまりプロンプトを上手く操れる人というのは従来の熟練プログラマーと同じような価値を持つと考えて良いんです!

プロンプトエンジニアの需要は増えてきており、現にプロンプトエンジニアの年収が場合によっては5000万円を超えるなんて話もあります!

ウマたん
ウマたん
プロンプトエンジニアで5000万円!?

が、、、注意が必要です。

現在は過渡期なのでプロンプトを上手く扱える人の価値が高まっていますが、これはここ数年で誰もが扱えるレベルまで標準化するかもしれません。

また高年収のジョブは、プロンプトだけを扱えるのではなく、後述するLangChainなどのライブラリを使って複雑なプロンプトの処理を制御したりそれをソフトウェアに組み込んだり一気通貫で出来る人である可能性が高いです。

とはいえ、今プロンプトエンジニアリングを学んでおくことは先行者利益を得る意味でも大いに意味があります!

ということで、プロンプトエンジニアリングをしっかり学んでいきましょう!

ウマたん
ウマたん
プロンプトエンジニアリングはプロンプトエンジニアという職種を手に入れるためというよりも自分の作業を効率化したりして労働生産性を高めて稼げる力を手に入れるためのものと捉えた方がいいかも!

プロンプトエンジニアリング:テキスト生成編

さて、生成系AIにはいくつかのタイプがありますがここではメジャーなテキスト生成系と画像生成系AIについて見ていきたいと思います。

まずはテキスト生成系AI!

テキスト生成系AIにはOpenAIの開発するGPTモデルやGoogleのPaLM、MetaのLLaMAなどのたくさんのモデルがあり、それらを総称して大規模言語モデル(LLM)と呼びますが、どのモデルに対してもプロンプトエンジニアリングのテクニックは効果的です。

それではどんなことに注意してプロンプトを作成していけばよいのか簡単に見ていきましょう!

役割を与える

これはChatGPTをある程度使ったことのある人にとっては当たり前のテクニックかもしれませんが、かなり有効です。

プロンプトの前に「あなたは〇〇です」と付け加えるだけで出力の精度が大きく変わる可能性があります。

小学生が書いたようなアウトプットがほしければ小学生という役割を与えればよいですし、専門性のある文章がほしければ専門家の役割を与えてあげましょう!

サンプルを与える

適切な解答を導きたいときにプロンプトに対して欲しいアウトプットの組み合わせをこちらでいくつか用意してプロンプトの中に含ませるテクニックがあります。

これをfew-shot learningと言いますが、タスクによってはかなり効果的です。

実際に僕自身がサンプルを与えてfew-shot learningをした上でChatGPTを使った事例を取り上げてみましょう。

あるサービス開発しているときに、あるデータを特定のカテゴリに分類したいタスクがありました。

バナナ:果物
なす:野菜
ほうれんそう:野菜

というように※実際とは違うデータ・カテゴリです

このとき、サンプルを与えないで

「バナナ、なす、ほうれんそう」を野菜か果物に分類してください

と指示出しをするよりも

以下のサンプルを参考にして分類対象を果物か野菜に分類してください

【サンプル】
りんご:果物
みかん:果物
きゅうり:野菜

【分類対象】
バナナ:
なす:
ほうれんそう:

というようにサンプルを与えてあげることで適切な分類回答が得やすくなります。

他にもたくさんあるのですが、もっと色々知りたい方は以下のスタアカのプロンプトエンジニアリングコースをチェックしてみてください!

以下のコースではどんなプロンプトにも使える汎用的なプロンプトをいくつか取り上げています。

ちなみに海外のpromptbaseというサービスでプロンプトが売り買いされているのでそちらから人気なプロンプトを購入してみるというのも筋の良いプロンプトを手に入れる一つの手です。

LangChainを使ったプロンプトエンジニアリング

ここまでどんなプロンプトを使えば筋の良いアウトプットを出力してくれるか簡単に見てきましたが、ここからさらに踏み込んでテキスト生成系AIのAPIを利用してプログラムを組む際はまたひと手間必要です。

複雑なプロンプトの流れをプログラムで組む際に役立つのがLangChainというライブラリなのです!

LangChainの特徴

LangChainの公式サイトには以下のように記述があります。

LangChain は、言語モデルを利用してアプリケーションを開発するためのフレームワークです。私たちは、最も強力で差別化されたアプリケーションは、API を介して言語モデルを呼び出すだけでなく、次のことも行うと信じています。

  1. データを意識する: 言語モデルを他のデータ ソースに接続する
  2. エージェント的である: 言語モデルがその環境と対話できるようにする

そのため、LangChain フレームワークは、そのようなタイプのアプリケーションを可能にするという目的を念頭に置いて設計されています。
(出典:LangChain公式サイト

そうなんです。LangChainは言語モデルを利用してアプリケーションを作る際に効果を発揮します。

その上で2つの特徴を取り上げている通り、他のデータソースに接続したり対話できるように過去のやり取りを参照したりなどできるようになります。

現状ChatGPTのAPIをそのまま利用すると、インターネット上のデータソースを参照して答えを返したり過去のやり取りを保持して参照しながら答えを返すみたいなことをするにはかなり手間がかかります。

そこら辺の処理をLangChainでは簡易的によしなにやってくれるので、アプリを構築する際に非常に便利なのです!

LangChainをPythonで使ってみよう!

それでは、簡単にLangChainをPythonで実装していきましょう!

まずは、ライブラリ「langchain」をインストールしていきましょう!

pip install langchain

続いて必要なメソッドをインポートしていきます。

from langchain.llms import OpenAI
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
import os

続いてOpenAIのAPIキーを取得して環境変数にセットしましょう!

os.environ["OPENAI_API_KEY"] = "<OpenAIのAPIキー>"

そしたら早速LangChainの出番です。

以下のように記載してあげてください。

llm = OpenAI(model_name="text-davinci-003")
conversation = ConversationChain(
    llm=llm,
    verbose=True,
    memory=ConversationBufferMemory()
)

conversation("データサイエンスを勉強するための方法を3つ教えて下さい。")

conversationの中身は何でも大丈夫ですので好きなプロンプトを入れてみてください。

以下のような回答が返ってくることが分かると思います。

LangChain※回答のパターンは必ずしも完全一致しません

これではシンプルな一問一答のやり取りですが、続いて以下のように問いかけてみましょう。

conversation("1つ目についてもっと詳しく")
LangChain2

こちらを見てみるとちゃんとHistoryという箇所に今までの過去のやり取りが格納されており、それをふまえてちゃんとAIが1つ目について詳しく教えてくれています。

LangChainに関しては以下の記事で詳しく解説しているのであわせてチェックしてみてください!

LangChain
【5分で分かる】LangChainのPythonでの使い方 -チュートリアル-当サイト【スタビジ】の本記事では、大規模言語モデル(LLM)を上手く扱う上で非常に便利なLangChainというライブラリについて概要からPythonでの使い方まで見ていきたいと思います。LangChainを使うことで複雑な処理に対応したプログラムを簡潔に書くことができるのでLLMを組み込んだサービスを作るときなどに重宝します!...

以下のスタアカのプロンプトエンジニアリングコースでもLangChainの使い方について詳しく取り上げています!

プロンプトエンジニアリング:画像生成編

続いて、画像生成系AIのプロンプトエンジニアリングについて見ていきましょう!

画像生成系AIにも、Stable diffusionMidjourneyDALL-Eなど様々なモデルが存在しますが、基本的にどのモデルでも同じようなプロンプトが効果的なことが多いです。

プロンプトを探す際はMidjourneyを利用することをオススメします(※現在は無料版が存在せず利用するとなると有料版になってしまいます)。

Midjourneyでは他人の出力した画像とプロンプトを確認することができますので、気に入った画像があればそれを参考にしてプロンプトを組み立てることで理想の画像を生成できる可能性が高くなります。

Midjouney

以下のように特定の画像のプロンプトも確認できます。

Midjouney

画像生成AIについては以下の記事で詳しく解説しているので、参考にしてみてください。

image_generation_ai
画像生成AIの仕組み・手法とおすすめサービス10選を紹介!当サイト【スタビジ】の本記事では、画像生成AIについて紹介します。画像生成AIの仕組みからその手法、おすすめのサービスまで徹底的に解説していきます!本記事を読んで画像生成AIに触れていきましょう!...

Midjourneyの始め方を知りたい方は以下の記事をチェックしてみて下さい。

midjourney
Midjourney(ミッドジャーニー)の使い方4STEPと生成のコツ3つ当サイト【スタビジ】の本記事では、Midjourney(ミッドジャーニー)ついて解説していきます。テキストの説明文から画像を生成するAIであるMidjourney!使い方や画像生成のコツを理解して、自分アイデアを画像にしていきましょう!...

本物の人が写っている写真のような画像を生成するためには

おそらく最も需要のあるリアルな写真を生成する方法はどうすればよいのでしょう?

「real photography」や「professional photography」などというプロンプトを入れてあげると割とそれっぽい人物写真が出来上がります。

以下はこんなに短文でリアルな画像ができあがるのか!?と感激した例です。

Extremely closeup of dust girl, professional photography

Midjouney3

たったこれだけの短文でこんなにリアルな画像が出来上がるんです!!

ちなみに以下のようにカメラのタイプやクオリティを入れることも効果的なようです。

handsome korean pop-star 20 years old, watching right to the camera, portrait, photograph, shot on fujifilm pro 400H, magazine, editorial, photorealism

Midjouney4

画像生成AIを上手く扱うためには、自分の好きな画像をMidjourneyやプロンプトベースなどのプロンプト売買プラットフォームで見つけて、それを参考にしながら試行錯誤していくことです。

他にもたくさんあるのですが、もっと色々知りたい方は以下のスタアカのプロンプトエンジニアリングコースをチェックしてみてください!

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

ここまでで、生成系AIを自在に操る上で非常に重要なプロンプトエンジニアリングについて見てきました!

ウマたん
ウマたん
プロンプトエンジニアリングを利用して色んな価値を生み出していこう!

プロンプトエンジニアリングについてより詳しくは当メディアが運営するスタアカの以下のコースを是非チェックしてみてください!

スタアカは業界最安級のAIデータサイエンススクールです。

スタアカトップ
【価格】ライトプラン:1280円/月
プレミアムプラン:149,800円
【オススメ度】
【サポート体制】
【受講形式】オンライン形式
【学習範囲】データサイエンスを網羅的に学ぶ
実践的なビジネスフレームワークを学ぶ
SQLとPythonを組みあわせて実データを使った様々なワークを行う
マーケティングの実行プラン策定
マーケティングとデータ分析の掛け合わせで集客マネタイズ

・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ

AIデータサイエンスを学んで市場価値の高い人材になりましょう!

データサイエンスやAIの勉強方法は以下の記事でまとめています。

【5分で分かる】データサイエンティストに必要なスキルと独学勉強ロードマップ!当サイト【スタビジ】の本記事では、データサイエンティストに求められるスキルとそれを身に付けるための勉強法について徹底的にまとめていきます!入門者でも、しっかりデータサイエンティストについて理解しある程度独学で駆け出しの状態までいけることを目指します。...
AIのロードマップ
【これだけ!】AI(人工知能)の勉強ロードマップを徹底的に解説!当サイト【スタビジ】の本記事では、AIを勉強するロードマップについて徹底的に解説していきます。まずは、AIの概要について理解して統計学の基本知識・機械学習の基本知識・Pythonでの実装・インフラ周りの知識などを包括的に理解していきましょう!...

プロンプトエンジニアリングを学ぶ上で以下のサイトも参考になるので是非参考にしてみてください!

スタビジアカデミーでデータサイエンスをさらに深く学ぼう!

スタアカサービスバナースタビジのコンテンツをさらに深堀りしたコンテンツが動画と一緒に学べるスクールです。

プレミアムプランでは私がマンツーマンで伴走させていただきます!ご受講お待ちしております!

スタビジアカデミーはこちら