システムエンジニア目線のプロンプトエンジニアリング
2024-12-15
azblob://2024/12/16/eyecatch/2024-12-15-prompt-engineering-from-system-engineers-perspective-000.jpg

Intro

まいどどうも!


プロンプトエンジニアの坂倉(さかくら)です!

私は前職ではシステムエンジニアとして業務しておりました。

それで現在はFIXERにプロンプトエンジニアとして入社して数か月が経ち、日々の業務でプロンプトを作成する日々なのですが、システムエンジニア時代に培ったスキルが活きてくるなぁと思う場面が多々あるなと思いました。


今回はそんな元システムエンジニアの自分から見た、プロンプトエンジニアにおいて大切なことをまとめましたので、是非お読みいただければ幸いです。

1. アルゴリズムを踏まえて作る


システム構築、プログラミングの中では必須のスキルである、
特定の問題を解決するための明確な手順、『アルゴリズム』を踏まえて製作すること。

これは生成AIに対するプロンプト作成でも大事なスキルとなってきます。


例えば今ご覧頂いているようなブログの記事を作るとしてその原稿案をAIに考えてもらうとします。

というわけでGaiXerにリクエストを投げてみます。
『システムエンジニア目線で見たプロンプトエンジニアに関する紹介ブログ記事を作って』↓

初回生成


これだけでAIが考えて良い感じの構成で記事を作成してくれます。
(この一文でここまで作ってくれるのが優秀ですわね)


どうしてこのように良い構成で記事が作成されるのか
それは生成AIもアルゴリズムを用いて生成結果を作るからです!


生成AIにリクエストプロンプトを渡した時、
生成AI側でそのリクエスト内容を分解して、指示内容を理解して、回答を作り、体裁を整えて返す
ここまでの工程をアルゴリズムを用いて手順として理解しているから
あのような良い感じの構成で記事を作成してくれたというわけです。


上記の生成結果としてこのままでも記事投稿しちゃって良さそうな原稿が出来ますが、
例えばこの要点は盛り込んでほしいだったり、言葉の選び方はこうしてほしいだったり、
最終的に記事を投稿する自分にとって理想の形があると思います。

そういった自分の望む形で作ってもらうためにプロンプトを作る側も生成AIと共にアルゴリズムを考えて作る必要があるというわけです。

2. 完成品のイメージを持つ

これはアルゴリズムから繋がってくる話ですが、
最終的にどういう表示が出てきて欲しいのか これをしっかりプロンプトで指示することが大切です!

先ほどのブログ記事の生成の部分でいうと、
結果どういう記事構成が出てくると良いかこれを指示に含めてみましょう。

# 出力形式
{タイトル}
{始めの挨拶}

{目次 3~4項目程度}

{各目次とその内容 内容は10行ほど}

{終わりの挨拶}

プログラムでいうところのreturnでの返り値を設定するような感じですね。

このように出力形式を指示に含めてあげることで
生成AIはこの指示を叶えるように出力してくれます。ありがたいですねー。

3. プロンプトの構成をパーツで分ける

これはより技術者思考な話になってきますが、
プロンプトの為に必要な指示をパーツで分けて
都度そのパーツを取り出すような形でプロンプトを書くのも有効な手法です。

{条件}に沿って、{情報}の内容を整形して{出力形式}に沿って表示して

# 条件
~~

# 情報
~~

# 出力形式
~~

このような感じですね。「#」でパーツを置いて「{}」で参照するような書き方です。

この辺りはプログラミングでいうとclass化やオブジェクト指向での作り方が活きてくる部分ではあります。
このように書くとプロンプトを作る側としても内容を分かりやすく確認できるという点でも良いですね。


そうして出来たもの

ここまでの要素を取り入れた、最終的なブログ記事作成プロンプトがこちらです。

{要点}を押さえ、{出力形式}に沿って{テーマ}に沿ったブログ記事原稿を作成してください。

# テーマ
システムエンジニア目線で見たプロンプトエンジニアとは

# 要点
- システムエンジニアとプロンプトエンジニアの共通点を載せる
- アルゴリズム思考を持つことの重要性を含める
- 堅苦しい表現は使わず話し言葉のような書き方

# 出力形式
{タイトル}

{始めの挨拶}

{目次 3~4項目程度}

{各目次とその内容 内容は10行ほど}

{終わりの挨拶}

こうしてこれをGaiXerにリクエストして出来たものがこちら↓

prompt改修後の生成

いかがでしょうか?割と指示通りの形で出力されたのではないでしょうか?
もちろんこれが正解というわけではありません!あくまで一例としてご査収ください。この辺りは自分もまだまだ模索中ですね…


終わりに

というわけで今回はシステムエンジニア目線でプロンプト作成について掘り下げさせていただきました。

この記事ではブログ記事の作成を一例にプロンプトを考えましたが、これ以外にも色んなものを生成出来るのが生成AIというものです。
無限のユースケースをサポートしてくれるものです。

加えて使用するLLMのモデルでも結果が変わってきます。今回生成に使用したGPT-4o以外のLLMモデルを使った場合はまた違う生成結果が出力されます。

無限のユースケースに対して、沢山のLLMモデルを選定して理想のプロンプトを考えていくこと、
それがプロンプトエンジニアにとって大切なことだと今現在、絶賛実感している所です。

その為のシステムエンジニア時代の思考と経験をこれからも駆使してプロンプト製作に励んでいきたいと思います。

最後までお読みいただきありがとうございました。
この記事がお読みいただいた方の生成AIライフにとって何かの一助となれば嬉しい限りです。では!