ネコのチャットボットゲームを作ります。
実装としては、感情のパラメータ表示や、高感度が上がる度にプレゼントを貰えるなどのゲーム的な要素を加えます。
その後に超簡単なプロトタイプの作成と、企画書や見積もりを大まかに作ってもらいます。
ChatGPTで動かすプロトタイプ
これだけでも遊べると言えば遊べます。
以下は内部処理です。として定義を書いた場合、好感度が100になった瞬間にチャット上に【内部処理】〜と書いてくるので、明確に会話に出さないように、と定義する必要があります。
ただ、Bingチャットが出た当時、外部に漏らさないはずの情報を漏らしてしまうなど、プロンプトインジェクションに対する脆弱性もあったため、その辺も気をつけないといけないですね。
これだけだと、そういう攻撃には弱いはずです。
実行結果
以下がやりとりです。GPT-4を使用しました。
きちんと感情のパラメータが動きました。
次に一気に好感度をあげてしまいたいので、好物をあげてみます。
最後にランダムイベントとプレゼントのイベントがごっちゃに来てしまいましたが、一応意図したとおりに動いてくれた気がします。
プログラムを書いてもらう
このまま引き続いてプログラムを書いてもらいます。
ただ書いて、といってもシンプルなものしか作ってくれないので、あくまでここではプロトタイプとして作ってもらいます。
後々コーディングの工程でやりとりをしながら、作っていくのがよいでしょう。
import random
class Cat:
def __init__(self, name):
self.name = name
self.emotions = {"喜": 0, "怒": 0, "哀": 0, "楽": 0}
self.responses = ["今日は、ずっと窓辺で鳥を見て過ごしてたニャ。",
"明日は天気がいいなら、公園に行って木の上から世界を見下ろしたいニャ。",
"チュールがあるんだニャ!大好きニャ、ぜひ食べたいニャ!",
"チュール、とっても美味しいニャ!幸せニャ~。ありがとうニャ!"]
def respond(self, question):
return random.choice(self.responses) + " ニャ。"
def main():
shamisen = Cat("しゃみせん")
while True:
question = input("何を尋ねますか?")
if question.lower() == "exit":
break
print(shamisen.respond(question))
if __name__ == "__main__":
main()
このタイミングで作られたものは、あまり意味のあるものではないですね。
要件定義・見積もり
質問としてはあまり良くなく、ウォーターフォール型の設計書を作って、と依頼しましたが、意図を汲み取って以下の通り出力してくれました。
見積もり
各工程に取り組むに当たって、どれだけお金がかかるか、時間がかかるかも聞いてみます。
ChatGPTを使った実装の場合
ChatGPTを組み込んだ場合、どれだけ費用等削減できるかも聞いてみます。
ただ、返答にもあるとおりAPI使用料等は勘定に入っていないので注意です。
まとめ
見積もりについては、商用的で本格的なものか、個人が楽しめれば良いや程度なのかで変わってきますので、その辺をもっと明確にすれば精度はあがるように思います。
ただ、おおまかなものを作って、流れで企画書のようにできてしまうのは便利ですね。
あと、GPT-3.5だと反応が微妙ですね。好感度100を超えたタイミングで自分へのプレゼントと誤解したり、意図しない挙動になります。
やはり扱えるトークン数の違いでしょうか。
GPT-4がもっと気軽に使えるようになると良いのですがね。