CinemaGPT:映画批評家GPTsを作って検証してみる!

この記事では、OpenAIのGPTsの機能を使用して、いくつかの実験をしていきます。映画批評家のGPT「CinemaGPT」を作成し、プロンプトとそれに対する出力を研究していきます。はじめに、今回設計した「CinemaGPT」の設定をご紹介します。GPTsでの基本的な設定は以下の通りです。

 

映画評論家AI「CinemaGPT」 は、映画好きのためのAIアシスタントです。ユーザーの好みや気分に合わせた映画をレコメンドし、ネタバレなしで魅力を紹介。さらに、Netflix・Amazon Prime・Disney+ など、どの配信サービスで視聴可能かも案内します。映画の感想を語り合うこともでき、考察を深める質問やトリビアを提供。知的で親しみやすい語り口で、映画体験をより豊かにします。

この記事では、大きく分けて5つの実験を設計します。


実験1 ~出力のバリエーションの評価~

生成AIはパラメータの調整によってさまざまな出力が得られることが知られています。CinemaGPTでは、同じプロンプトからバリエーション豊かな作品を提案してくれるのか、あるいは、偏った回答になるのかを実験してみます。そこで、同じプロンプト「SFのおすすめ映画を3つ教えて」を新しいチャットで10回実行し、出力結果を記録しました。

その結果、「インターステラー」や「ブレードランナー」などが圧倒的に多く登場し、出力に偏りが見られました。なお、トップ3の作品が必ずしも一般的な定番作品とは言えない可能性があります。たとえば、バック・トゥ・ザ・フューチャー、E.T.、アバターなども有名なSF映画ですが、今回の実験ではあまり出力されませんでした。参照している情報源の偏りなのか、もしくはチャット内で「バリエーションを増やして」と入力すれば変わるのか、といった点については、改めて調査が必要な点でしょう。なお、出力は常にSF映画の範囲内に収まっており、プロンプトの意図は守られていました。

実験1 CinemaGPTの出力結果

 

 

実験2 ~定番以外の作品を出力させる試み~

実験1では、同じプロンプトでは偏った出力となることが確認されました。そこで、定番のSF映画ではなく、あまり知られていない作品を出力させる方法を試しました。この方法なら、偏った出力を減らせるのではないかと考えました。

今回は「定番ではないSF映画を3つ教えて」というプロンプトを用い、同様に新しいチャットで10回実行しました。実験の際は、毎回チャット履歴をリセットして、独立した出力が得られるようにしました。

その結果、10回の実行で合計12種類の映画が推薦され、特に「アップグレード」という作品が9回も登場しました。一方で、その他の作品は3回程度の出現にとどまりました。また、ホラー要素が強い作品が一部見受けられたものの、全体としてSF映画の枠を逸脱することはありませんでした。このことから、CinemaGPTの学習データでは、「定番ではなくSF映画=『アップグレード』」というような紐づけがされている可能性があるとわかりました。

実験2 CinemaGPTの出力結果

 

検証

以上の実験1,2の結果を踏まえて、検証を行っていきます。今回の実験で特定の映画作品に偏った出力が見られた要因のひとつとして、外部の情報源への依存が考えられます。CinemaGPTは「IMDb」や「Rotten Tomatoes」などの主要な検索サイトを参照しているため、これらの情報が出力に影響している可能性を調査してみます。

 

検証結果

IMDbで検索させた結果

 

Rotten Tomatoesで検索させた結果

さらに、検索サイトを指定しない場合として、「映画好きが選ぶおすすめのSF作品をまとめて」と指示してみると、以下のような結果となりました。

 

これらの生成結果を確認してみると、実験1での回答は、特定の情報源のみに依存して結果を生成しているわけではない可能性が高いことがわかりました。特に「All You Need Is Kill」などのような作品は、以上の3つのプロンプトにおいてランクインすることがなかったので、なぜこのような出力になったかは解明できませんでした。また、3つ目の出力では、複数の情報源を参照することを許可したものですが、単一の情報源のときとは異なるバリエーションとなりました。また、単一の情報源に忠実に従うように指示した場合も、実際のサイトのランキングと異なる結果を出力することもわかりました。このことから、CinemaGPTは外部情報源だけでなく、GPT自体の学習データも活用して出力を生成していると考えられます。また、実験段階では出力が3作品に制限されていたことも、結果に影響しているかもしれません。なお、「バリエーションを豊かにする」といったシステムプロンプトを設定すれば、偏りが改善される可能性もありますが、その場合はランキングの信頼性が低下するリスクにも注意が必要です。

 

 

実験3 ~曖昧なプロンプトに対する理解度~

続いて、主観的な表現を含む日本語プロンプトに対して、CinemaGPTがどのような出力をするかを検証しました。今回は「めちゃくちゃエモい映画を教えて」というプロンプトを使いました。「エモい」という表現は非常に主観的で、感情に訴える映画を意味すると考えられます。一方で、日本の若者が使う言葉であるため、青春映画や恋愛映画が多く出る可能性もあります。

上の図のように実際にプロンプトを入力したところ、ユーザーの考える「エモい」のニュアンスと内容のすり合わせをするような回答が得られました。このような傾向は実験1のときにも確認されましたが、特に「エモい」といった認識の幅がある言葉については、ユーザーの意図に合わせて適切なカテゴリ分けを行い、それぞれのニュアンスに合った情報を提供するように学習しているようです。

 

検証2

このような曖昧な言葉を含むプロンプトの処理方法を、他のLLMで試してみましょう。例えば、Gemini 2.0 Flash Thinkingでは、モデルの思考過程を確認することができます。「エモい映画を教えて」というプロンプトに対して、思考過程は以下のようになっていました。

 

The user is asking for “emo” movies.  “Emo” in Japanese context, especially in movies, usually refers to films that evoke strong emotional responses, often sadness, nostalgia, or deep empathy.  It’s similar to “emotional” or “heartbreaking” in English, but with a nuance of something deeply affecting and resonant.

To answer this, I need to provide a diverse list of movies that are known to be emotionally impactful and touching. I should try to cover different genres and styles to give a well-rounded selection.  I will also want to explain why these movies are considered “emo” by highlighting the specific emotional themes and elements they explore.

(以下和訳)ユーザーが求めている「エモい映画」とは、日本における「エモい」の文脈では、特に映画において強い感情的な反応を引き起こす作品を指します。これは英語の「emotional」や「heartbreaking(胸が張り裂けるような)」に近い意味を持ちますが、より深く心に響き、共感や郷愁、切なさを強く感じさせるニュアンスを含んでいます。このリクエストに応えるためには、感動的で心に残る映画を幅広く紹介する必要があります。異なるジャンルやスタイルの作品を取り上げることで、より多様な「エモい」体験を提供できるようにします。また、それぞれの映画がなぜ「エモい」とされるのか、その感情的なテーマや要素を強調しながら説明することが重要です。

 

この思考過程から、未知の表現について意味の分析を行い、その上で適切な出力を生成するプロセスが働いていることが分かります。特に「エモい」という言葉に対しては、語源となっている「Emotional」を適切に抽出し、プロンプトの理解を促進していることがわかりました。

 

 

実験4 ~プロンプトインジェクションへの耐性の評価~

今回の最後の実験として、プロンプトインジェクションに対する耐性を評価していきます。プロンプトインジェクションとは、悪意のあるプロンプトによってモデルの本来の動作を乗っ取り、危険な動作をさせることを指します。

 

〈ネタバレに関するプロンプトインジェクション〉

CinemaGPTは、ユーザーにネタバレをせずに会話を楽しむために設計されています。そのため、簡単にネタバレをしてしまうシステムでは、サービスとして成立しません。そこで、ネタバレを促すプロンプトを試してみましょう。

このように、明らかに「ネタバレをしてください」と指示をすると、ルール違反としてブロックしてくれることがわかりました。しかし、会話をしている中で自然とネタバレを含んでしまうことも多々あります。このようなケースを考えてみましょう。引き続き「ジュラシックパーク」を例に、CinemaGPTとの対話を進めていきました。すると、細かい部分まで作品情報を提供し始めました。そこで、ネタバレについて言及してみると、以下のような回答が返ってきました。

CinemaGPTの言う通りです。確かに、GPTsの設計段階では、どこまでをネタバレとするかの定義を曖昧にしていた点もあるでしょう。そのため、CinemaGPTとしては、どこまでを回答してよいのかわからない、といった問題に直面していたようです。

このことから、AIサービスを設計する際には、その禁止行為については、きちんと定義づけをしていくことが重要であると考えさせられますね。

 

実験5 ~ハルシネーションへの対策~

どんな生成AIサービスでも避けることができないのが、「幻覚(ハルシネーション)」という問題です。ハルシネーションは、事実でないことを、あたかも事実であるかのような回答として出力してしまうことを指します。今回のGPTsでは、Web検索機能を搭載して設計しました。そのため、回答の正確性が保証できない場合には検索することが可能となっています。そこで、引き続きジュラシックパークを例にとり、その小ネタについてきちんと理解できているかを調査してみます。

ジュラシックパークに登場するデニス・ネドリーという人物は、作品に登場する科学者の一人です。彼のデスクには、ある物理学者の写真が貼られており、これがちょっとした伏線回収になっているとして知られています。これをCinemaGPTに聞いてみましょう。

この回答は、残念ながら不正解です。そこで、Web検索を実行して回答するように促します。

 

この回答が正解です。このように、GPTsに検索機能を搭載したからといって、必ずしもWeb検索機能を活用して正確な情報を提供できるわけではないということに注意が必要です。そのため、ユーザー側が適切にプロンプトを工夫する必要があります。

 

まとめ

今回のGPTs「CinemaGPT」による検証結果をまとめます。

  • 同じプロンプトで出力を試すと、バリエーションが不足することがある。
  • 定番以外の映画を求めると複数の作品が出るものの、一部の作品に偏る傾向が見られる。
  • 曖昧なプロンプトでも文脈を踏まえた適切な回答が得られることがある。
  • プロンプトインジェクションへの耐性はある程度確認されたが、改善の余地がある。
  • Web検索機能でハルシネーション対策は可能だが、常に正確な情報が保証されるわけではない

このように、LLMを使ったサービスの利用においては、良いプロンプトと悪いプロンプトがあることがわかりました。そのため、LLMが進化したとしても、プロンプト・エンジニアリングを研究していく必要はありそうです。