OpenAI GPT API(6) プロンプトデザイン

今回はOpenAI APIのプロンプトデザイン(プロンプトエンジニアリング)について説明します。

AIはそのまま使用した場合、特に規約のない自由な回答になるため、プログラミング等で活用したい場合は、ある種の規定を指定することで扱いやすくなります。
例えば通常の(AIではない)APIでは
countries/json
のように、国一覧をjsonフォーマットで取得するなど、
決められたエンドポイントによって確定されたフォーマットでレスポンスを得ることができます。
しかしAI系のAPIの場合は明確なルールがないため、ガイドラインをプロンプトで指示する必要があります。
プロンプトで規定するガイドラインのことをプロンプトデザインといいます。

プロンプトデザインの概要

プロンプトデザインの具体的な方法について以下のgithubリポジトリに
有益な情報がまとめられています。
https://github.com/dair-ai/Prompt-Engineering-Guide/tree/main/guides

上記の中からキーポイントをまとめます。
特に以下の3点が重要です。

・メインの指示
・インプットデータ
・出力フォーマットの規定

このうち、既存のWebシステムにAIを組み込んで活用したい場合は「出力フォーマットの規定」が重要になります。
出力フォーマットは、jsonなのか、csvか、または数値を指定するのか、プログラミング言語で処理しやすいように設定するのがポイントです。

例えばAIからのレスポンスがjsonフォーマットであれば、簡単にパースできるので、
AIからのレスポンスによって処理を分岐したり、データベースに登録したり、集計したりといった操作がおこないやすくなります。

出力フォーマットの規定例

実際に試してみます。

以下のような想定で考えてみます。
例えば、旅行会社のWebサイトで利用者からの旅行の感想文を受け付けていたとします。
感想文は以下のような文章が多数投稿されています。

先日旅行に行ってきました。関西国際空港からニューヨークのJFK空港までの直行便は高額だったので、韓国を経由してのフライトで行きました。ニューヨークではハーレムの教会でゴスペル音楽を鑑賞しました。


サイトの管理者は、感想文に含まれる地名、場所名を抽出して、もっとも話題になっている場所のTop10などをリスト化したいと思ったとします。
感想文に含まれる地名、場所名を抽出する作業は人がおこなうと精度は高いが工数も費用もかかりますので、AIでどこまで代用できるか確認したいと思います。
また、地名、場所名をcsvやjsonなどの指定した形式でのレスポンスがあれば、プログラム上でも扱いやすく、正規表現の調整やStringの文字列分割処理などが不要になるため、フォーマットの指定精度も確認します。

以下のプロンプトを作成しました。
自由入力された文章の中から場所の名称だけを抽出します。
まずはアウトプットデータフォーマットの指定をおこなわないで実行してみます。

Extract the place name in the following in Japanese.

Input: 先日旅行に行ってきました。関西国際空港からニューヨークのJFK空港までの直行便は高額だったので、韓国を経由してのフライトで行きました。ニューヨークではハーレムの教会でゴスペル音楽を鑑賞しました。


実行結果:


上記の実行結果が得られました。
抽出された、地名、場所名は番号付きの改行リストとして出力されました。
人間の目でみてわかりやすく表示されているという点では綺麗にフォーマットされていて見やすいですが
このリストをプログラム上で活用したりデータベースに登録をおこないたい場合のことを考えたときはどうでしょうか。
このリストをプログラム上で処理するには
・改行コードによるStringの文字列分割処理
・数値と「.」および不必要なスペースを除外する処理
が必要です。

このような処理をプログラム側でおこなうかわりにプロンプトでアウトプットフォーマットを指定することができます。

次回はプロンプトでアウトプットフォーマットを指定する方法について説明します。

木曜日担当:nishida



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム