見出し画像

ChatGPTで星占いを作ってみる

但し書き

 ChatGPTや生成系AIについてものすごく詳しいわけでも、テクニックを知ってるわけでもなく、知るために書いてる記事なので間違えなどあれば教えていただけると幸いです

 どうもヤマカンです。第2回目で、もっと触りたいなと思いつつ、あまりネタも思い浮かばず、なんだかんだ 結局あまり動けてない状況です。
 ChatGPTの凄さが何かを勘がると、「対話型のインタフェース」にあると感じてますが、この対話って結構面倒なものでもあるなと感じてます。
 良い対話をしないと結局想定外の方向に行ってしまうし、それだと何も得られない状況なので、そこを良い回答を得るために「プロンプトエンジニアリング」という分野ができてきたんですね。今日はプロンプトエンジニアリングって結局何かを体験することを目的に書いてます。
 ちなみにプロンプトエンジニアリングを詳しく知りたい場合は、多分今はここがいいと思っています。( https://www.promptingguide.ai/jp )

プロンプトエンジニアリングって何?

わたからない時はとりあえず、ChatGPTに聞いてみるスタイルで行きます

Q: ChatGPTで良いプロンプトを作りたいんだけど そもそもプロンプトエンジニアリングが何かと、どうやったら再現できるプロンプトができるか教えてください

A: プロンプトエンジニアリングは、人工知能の分野で、特定の目的に適した対話システムを設計することを目的とした技術です。プロンプトとは、対話システムがユーザーから入力を受け取る前に提示するメッセージや質問のことを指します。

ChatGPT

 今までの「検索」というインタフェースだと、自分が知りたいことを軸にキーワードを考えて、記事を読んでいいものを探してという流れでしたが、サクッと聞いて回答が来るのはいいですね。ただ、ChatGPTの現状の理解として、生成系AIは確率的な文章生成を行なってるものと理解してます。なので、前回の記事にも出したように、どうしても間違った答えもでてくるかと思います。でもこれって現状も変わらなくて、人と会話する時や記事を読む時には、それがファクト情報なのかどうかは実際にはサイトの信頼度であったり、記載者の背景だったりで判断する部分はあるので、まあ今も変わらないなという印象です。

ChatGPTに聞いた良いプロンプトの作り方

 だいぶ話がそれましたが、プロンプトの作り方を聞いたものをざっくりまとめると以下なのですが、これはまあ通常のアプリケーション作るのも同じですね。前回試した通り目的やスコープを絞ることができれば適切な回答が得られるし、一方でふわっとしている質問すると一般論しか燃えないですよね。

  1. 目的を明確にする

  2. 想定ユーザを設定と期待値を把握する

  3. 目的を達成するのに必要な質問などを作成する

  4. 評価する

実際に作ってみる

目的と結果を伝える,実際に入力したものに加えてコメント部分は `#` で追記してます。

# 目的と期待値を入れる
星占いを作るとすると、例えば 4/15 は獅子座になると思います。この星座に合わせて今日の運勢を出してもらいたいと思ってます。
# アウトプットの追加要望を入れてみる
総合運、恋愛運、仕事運、金運をそれぞれ10段階で、どうしてそのスコアかも教えるといいと思います。 それができるプロンプトは可能でしょうか

input

1) ユーザーに「あなたの誕生日を教えてください」と尋ねます。
2) ユーザーが入力した誕生日から、その人の星座を算出します。
3) 算出した星座に基づいて、本日の総合運、恋愛運、仕事運、金運についてそれぞれ10段階のスコアを出します。
4) スコアが算出される理由について説明します。例えば、「今日はあなたの総合運が8/10です。牡牛座の人々は今日、努力が実を結ぶ日です。自分の目標に向かって一歩一歩進んでください。」といった具合に説明することができます。
5) ユーザーがもう一度占いをしたいかどうか尋ね、もう一度占いをする場合は1から4を繰り返します。

ChatGPT

ということで、上記を入れると動くらしいので試してみました。
結果的には、これ入れるだけだと失敗して、実装を回答もらっちゃいます。Pythonコードを僕はもらったのですが、色々課題あるので割愛します

じゃあどうするか?

前回同様に、「ふるまい」や「制限」を入れていく

1)あなたは占い師です。
2)あなたは私に「あなたの誕生日を教えてください。例: 3月14日」と聞きます
3)入力された誕生日から星座を算出します。
4)星座に基づいて、本日の総合運、恋愛運、仕事運、金運についてそれぞれ10段階のスコアを出します。
5)スコアが算出される理由について説明します。例えば、「今日はあなたの総合運が8/10です。牡牛座の人々は今日、努力が実を結ぶ日です。自分の目標に向かって一歩一歩進んでください。」といった具合に説明することができます。

このルールは絶対で、ユーザには説明なく質問を行い、ユーザが質問に答えたら占い結果を出してください。

プロンプト

役割設定・目的・実行手順などを整理して入れてく必要がある。
また実行結果の総定例を入れていく。あとやらなくていいものを含めて書いておく必要はありそうです。

実際にやるとこんな感じです


ChatGPTからの質問例
解答例

日付入れれば、なんとかそれぽい回答をもらうことはできたなと思います。ただこれが何に役立つのかは不明です。。。

まとめ

 今回は、プロンプトの勉強も兼ねて質問と回答を得るだけのものとして「星占い」をテーマに触ってみました。ただ、これが何に役立つかというとその辺の乱数スクリプトでもいいなというのがあるので悩ましいところですね。
 一方で触っていくとわかるのは余計な質疑をさせないためのテクニックは必要になってくるので、プロンプトを作る上でポイントとしてどこかで整理したいと思いました。
 役割や制約の明確化などは共通してるので、その辺フォーマット揃えてるものありそうだし、時間とって今度調べようと思います。


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