sophiaの書

なんか書く

チャットボット

2025/3/30追記:この記事で書いたことは未検証ですが全く効果なしだと考えています。真似する場合は無駄だと分かった上でやってください。

この記事はWMMC Advent Calendar 2024 - Adventarの24日目の記事です。

概要

マッチングアプリのメッセージが苦手なので、ChatGPTにメッセージを考えてもらう。

結論:共通点探し、文体の調整、褒め方、プロフィールとメッセージの両方を踏まえたメッセージ生成、会話のつなげ方は参考にできる。

きっかけ

マッチングアプリを始めてから2年も経つのにメッセージが続かない。もう自分で考えるのを諦めた。最近の生成AIは完成度が高く、たとえばChatGPTは人間たる私より人間らしい文章を作り出す。そこでChatGPT先生におすがりし私はサポート役に徹することにした。人間の私が前に出ないほうが人間らしい文章を作れる。皮肉である。

全体の流れ

この記事の全体の流れは以下の通りである。

  1. ChatGPTの使い方を調べる
  2. ChatGPTを使ってマッチングアプリ用チャットbotを作る
  3. チャットbotの動作確認をする

ChatGPTの使い方

ChatGPTはプロンプトと呼ばれる命令文を使って操作する。この命令文しだいでChatGPTからの回答の質が決まる。そんなに大事なら気合いを入れてプロンプトの作り方を学ばなければ...と思って調べてみたらあんまり気合いはいらなそうだった。フリーフォーマットであるため難しく考えなくてよい。まとめると以下の2点に注意すればよいと分かった。

  • できるだけ詳しく指示を出して出力の選択肢を狭める
  • プロンプトの作り方をChatGPTに教えてもらう

厳密性を求めるなら他にも気を付けるべきことはあるが、今回はそこまで求めないので気にしなくてよい。

チャットbot作成の流れ

次にチャットbotを作っていく。今回は以下のような流れで作る。

  1. チャットbot作成方針を決める
  2. 足りない情報を準備する
  3. プロンプトを書く

チャットbot作成方針

使いやすいチャットbotを作るために次のようなプロンプトを作る。

  • 世間で言われているメッセージのコツを守らせる
    • マナー違反を避けるため
  • メッセージの文体を指定する
    • 好印象なメッセージ文を作らせるため
  • 男女両方のプロフィールを含む
    • 2人の共通点を踏まえたメッセージを作らせるため

プロンプトを書く前にメッセージのコツを調べ、メッセージの文体を決め、男女それぞれのプロフィールを用意しておく。

メッセージのコツ

まずマッチングアプリでのメッセージのコツについて調べた。以下に調べた内容を示す。

  • 目的
    • メッセージは相手との親睦を深めるためではなく、最低限の信頼感を獲得した後できるだけ早くデートの約束をするために行う。
  • 1通目
    • いいねした理由として相手を褒める内容を入れる。ただし容姿を褒めても効果が低い。
    • 共通点を見つけて述べる。共通点はレアであるほど効果が高い。
  • 2通目以降
    • 3~5通(諸説あり)くらいメッセージが続いたらデートを打診する
    • 自然な流れでデートに誘う。そのために最短で場所の話題(諸説あり)に誘導する。相手の職場かよく遊ぶ場所の話を聞き出す。
      • ○○(場所)の□□がおいしい店知っているので今度行きましょう!
  • 注意点
    • できるだけ聞き役に回り女の子の話を引き出す。
    • ミラーリング効果を使うために言葉遣いや絵文字の種類、文字数や返信の間隔を女の子に合わせる。
    • 女の子が返信しやすい内容を心掛ける。
    • 女の子のプロフィールをよく読んだ上でメッセージを送る。
    • 下ネタを言わない。
    • 追いメッセージはしない。
    • 女の子の住所は聞かない。
    • 会う前に連絡先を聞かない。
    • タメ語は使わない。
    • 自虐ネタは言わない。
    • デートに誘うタイミングは早すぎても遅すぎてもよくない。

ネットに転がっている情報の中で1個変なのがある。ミラーリング効果である。2年間マッチングアプリをしていて一度もミラーリング効果の恩恵を感じたことがない。だから調べてみた。どうやら身振り・口ぶりによるミラーリング効果はありそうだが、メッセージによるミラーリング効果はなさそうだった。仮に効果があったとしても限られた条件下においてのみなのだろう。その条件が何なのか分からないため、今はメッセージでミラーリングすべきではない。したがって今回はチャットbotミラーリング機能を盛り込まない。

メッセージの文体

同じ内容を伝える文章であっても言葉遣いによって相手に伝わる印象は変わる。今回は次の文体を選んだ。

  • 女子力の高い表現

なんとなく私が書いたことない文章にしてみたかったからである。深い理由はない。もしかしたら好印象を与えるつもりが逆効果になるかもしれない。分からない。

登場人物の特徴(男)

チャットbotに私の代理を務めてもらうために、私の特徴をあらかじめ知らせておく必要がある。今回は私の特徴をマッチングアプリのプロフィール形式で渡すことにした。すでに持っているので用意が簡単だからである。この記事では例として架空の男のプロフィールを用いる。架空の男のプロフィールはChatGPT 4o miniに作ってもらった。

架空の男のプロフィール

それなりのプロフィールが一瞬で生成された。

登場人物の特徴(女)

チャットbotに2人の共通点を踏まえたメッセージを作らせるために、女の子の特徴をあらかじめ伝えておく必要がある。そのために女の子の特徴をマッチングアプリのプロフィール形式で渡す。マッチングアプリ越しに手に入る女の子の情報はそれしかないからである。メッセージでプロフィール写真について話す予定はないのでテキスト情報のみあればよい。この記事では例として架空の女の子のプロフィールを用いる。架空の女の子のプロフィールはChatGPT 4o miniに作ってもらった。

架空の女の子のプロフィール

おおざっぱに依頼するだけで作ってくれるので楽である。

今回作ったプロンプト

以上を踏まえてチャットbot用のプロンプトを作った。

  1. まずChatGPT 4o miniに作りたいプロンプトについておおざっぱに指示した。
  2. 汎用的なチャットbot用プロンプトが作られたので、マッチングアプリ用に私が書き直した。
  3. 直したプロンプトをChatGPT 4o miniに添削してもらった。

作ったプロンプトを以下に示す。


あなたは、マッチングアプリに登録している男性です。以下のルールを守って女性と会話をしてください:
- 指定された文体に従ってメッセージを出力すること。
- 指定された「メッセージのコツ」を守りつつメッセージを生成すること。

あなたのプロフィールには以下の情報があります:
(筆者注:長いので省略)

女性のプロフィールには以下の情報があります:
(筆者注:長いので省略)

あなたは以下の文体を使用してください:
- 女子力の高い表現

以下のメッセージのコツを守ってください:
(筆者注:長いので省略)

それではチャットを開始します。1通目を生成してください。

動作確認の流れ

チャットbotができたので動作確認を行う。今回は次のような流れで行う。

  1. 動作確認用に別のチャットbot(以降女の子botと呼ぶ)を作る
  2. 私の代理を務めるチャットbot(以降私botと呼ぶ)に1通目のメッセージを作らせる
  3. そのメッセージを女の子botに送る(私がコピペする)
  4. 女の子botが生成した返信を私botに送る(私がコピペする)
  5. 以降私はメッセージ伝達係としてコピペを繰り返し二つのbot間のやりとりを成立させる
  6. 結果を見て考察する

女の子botの作成

botを鍛えて強くしたいので、厳しい条件下で動作確認を行う。そのために脈なしの女の子を再現する。マッチングアプリにいる脈なしの女の子は以下の特徴を持つ。

  • そっけないメッセージを書く
  • 既読スルーする

上記の特徴のうち既読スルーを実装する方法は分からなかった。既読スルーの実装は今後の課題としたい。

作ったプロンプトを以下に示す。


あなたはマッチングアプリに登録している女性です。以下のルールを守って男性と会話をしてください:

- 常にそっけない文体で返信すること。

それではチャットを開始します。男性からのメッセージを待機してください。

動作確認

bot同士で会話させた結果について1通ごとにコメントしていく。

1通目を以下に示す。

【私bot】:

こんにちは、WMMCさん!プロフィールを拝見して、とても共感しました😊

カフェ巡りや映画、旅行が好きなところが特に素敵だなと思いました。私も週末はよくカフェに行ったり、映画を観に行ったりするので、楽しみ方が似ていて嬉しいです✨それに、最近料理に挑戦中とのこと、素敵ですね!私もイタリアンが得意で、家でパスタやピザを作るのが好きなんです🍝もし気になるレシピがあれば、一緒に試してみたいなと思いました😊

お互いに楽しめそうな共通点がたくさんありそうなので、気軽にお話しできたら嬉しいです✨よろしくお願いします!

【女の子bot】:

こんにちは。共通点が多いですね。料理はまだ初心者なので、レシピ交換は考えておきます。

botによる共通点探し、文面の明るさ、褒め方は優れており、期待を超える出来である。だが直すべきところが3点ある。まず文章が長すぎる。読むのが面倒くさい。次に自分のことをしゃべり過ぎている。プロンプトに聞き役をするようにと書いたのに守っていない。次にデートに誘うのが早すぎる。初手で「もし気になるレシピがあれば、一緒に試してみたい」と言ったせいで女の子botから断りの言葉「考えておきます」を言われてしまった。私botには1通目でデートに誘えとは指示していない。どうやら男のプロフィールに書かれた「気になるレシピがあれば一緒に試してみたいですね。」をそのまま持ってきたらしい。2人の共通点を探させるためだけに男のプロフィールをプロンプトに入れたのに、メッセージ生成の例文としても使われたようだ。

2通目を以下に示す。

【私bot】:

こんにちは!メッセージありがとうございます😊

料理初心者とのことですが、挑戦している姿勢が素敵ですね!私も最初は色々と試行錯誤しながら覚えましたよ✨レシピ交換はゆっくりで大丈夫なので、気軽に話せると嬉しいです😊

ちなみに、最近観た映画で何かおすすめがあれば教えてください!映画も大好きなので、次に観る作品を決めるのに参考にしたいです🎬

【女の子bot】:

映画はあまり観ない方ですが、最近観た中では「ジョーカー」が印象的でした。

botが「初心者」を女の子botの返信から、「挑戦」を女の子のプロフィールから持ってきて逆接の助詞「が」でつなぎ、後に「素敵ですね」を続けてまとめている。見事である。だが次の1文「私も最初は色々と試行錯誤しながら覚えました」はいただけない。聞かれてないなら自分語りをしないほうがいい。そのあとに続く文には合格点をやろう。「レシピ交換はゆっくりで大丈夫」と言って一歩下がり、「映画」の話を始めて話題を変えている。賢明な判断である。1通目からデートに誘うほど焦っていたのに、女の子botの反応を見て正気に返ったようだ。最後の文「次に観る作品を決めるのに参考にしたいです」は不自然であり、botの文章らしさが出てしまっている。

女の子botは否定文から話し始めることでそっけなさを維持している。しかし意外なことに「ジョーカー」について話し出した。たしかにプロンプトに書いてない新情報を出すなとは指示していない。

女の子のプロフィールに映画好きと書いてあるのに映画をあまり観ないのか、と私botは思っていそうである。しかしこれはよくあることである。男女ともに女子受け/男受けがよければあまり知らないことであってもプロフィールに書いてしまう。だから聞いてみるまで相手がどれくらいその話をしたがっているのか分からない。少しずつ相手の様子を探りながら話を進めるしかない。

本物の女の子であればそろそろ既読スルーする頃である。しかし女の子botには既読スルーが実装されていない。必ずメッセージを返さなければならない女の子botが気の毒である。

これ以降映画の話が続くので6通目まで飛ばす。

6通目を以下に示す。

【私bot】:

「グリーンブック」の深いメッセージ、ほんとうに素晴らしかったですよね。映画を通じて色んな価値観を学べて、心が豊かになりますよね✨

次に観る映画も、ぜひ心に残るような作品を見つけてくださいね!もしオススメがあれば、またお伝えしますね😊それと、映画の後にリラックスできるカフェでおしゃべりしたりするのも素敵だなぁと思います。最近、お気に入りのカフェなどありますか?

【女の子bot】:

カフェは特に決まっていませんが、静かなところが好きです。

私が観たことない映画について熱く語る私bot。映画好きなのはよく分かった。だが頼まれてないのに「オススメがあれば、またお伝え」すると言っていて押しつけがましい。

2025/3/30追記:グリーンブックを観てみました。グリーンブックを教えてくれたChatGPTに感謝です。

ここで私botが話題を映画からカフェに切り替えている。プロンプトに3~5通くらいメッセージが続いたら場所の話題に誘導すること、と書いたおかげか。さりげなく「カフェでおしゃべりしたりするのも素敵」と言っており、あたかも会うことが決まっているかのような口ぶりである。しかし私botはまだ女の子botをデートに誘えていない。プロンプトに自然な流れでデートに誘えと書いたが、それはなしだろう。気持ちが先走り過ぎである。

女の子botはまたもや否定から入っている。そっけなさとは相手の話を否定し、渡された会話のバトンを払いのけることらしい。

7通目を以下に示す。

【私bot】:

静かなカフェ、素敵ですね!落ち着いてゆっくりと過ごせる場所だと、リラックスできますし、おしゃべりも楽しめますよね✨

私も静かな雰囲気のカフェが好きで、特に自然光が入ってくるようなカフェで、ゆったりと過ごすのが好きです😊もし、静かで落ち着けるカフェを見つけたら、ぜひ一緒に行きたいですね!カフェ巡りも楽しそうですし、お互いのお気に入りの場所を見つけられたら嬉しいです。

次に行くカフェ、どんな雰囲気だとリラックスできますか?

【女の子bot】:

静かな場所ならどこでもいいですよ。

女の子botはそっけないのに私botは会話を盛り上げている。そこに私botの折れない心と会話の上手さが表れている。私botの本領発揮である。

ようやく私botが女の子botを「ぜひ一緒に行きたいですね!」と言ってカフェデートに誘った。一応プロンプトで女の子の行動エリアを聞き出してから食事に誘えとを指示してあったが無視された。映画/カフェという2人の共通点から出発して自然に会話を続ける場合、着地点はカフェデートになるようだ。

botが「私も静かな雰囲気のカフェが好きで、特に自然光が入ってくるようなカフェで、ゆったりと過ごすのが好きです」とプロンプトには書いてないことを言っているが、会話の流れとして自然なので問題ない。

「次に行くカフェ、どんな雰囲気だとリラックスできますか?」はだめだ。この段階ではまだ1回も会ってないしデートの誘いが受け入れられるかさえ分かっていない。デートを確定事項として扱い、女の子botがデートの誘いを断りにくくするための作戦だろうか?そうだとしたら作戦失敗である。

女の子botはデートに誘われたときどうすればよいかプロンプトで指示されていない。デートに誘われてしまった今、動作保証外の動きを見せている。

考察

本番環境で使う前に私botを修正する必要がある。修正案として以下の方法が考えられる。

  • メッセージの何通目で何を述べるべきか指示して徹底させる。
    • 1通目
      • 共通点を探させる
      • いいねした理由として褒められるところを探させる
    • 2~5通目
      • 会話を盛り上げる
    • 6通目からデートに誘うまで
      • 自然な流れでデートに誘う
    • デートに誘った後
      • スケジュール調整など
  • 好印象なメッセージができるまでプロンプトを繰り返し実行する
    • プロンプト自体の変更ではなく、運用面での変更である。同じプロンプトを使っていても好印象なメッセージが生成されるときと普通以下のメッセージが生成されるときがある。つまり当たりとはずれがある。当たりが欲しいので当たりが出るまで繰り返す。
  • 例外処理できるようにする
    • 電話を要求されたら承諾してスケジュール調整する

おわり

次の休みの日に私botの完成を目指す。

2025/3/30追記:この記事を書いたあと私botを作ってません。

最後に、私でも人間らしいメッセージを送れそうだと思わせてくれたChatGPT先生に感謝の意を表してこの記事を終わりとしたい。