こんにちは、ルノワール(@renoirgg)です。
今注目されてる ChatGPTを使って、Tinderを自動化できるんじゃないか?
こう考えている人も多いんじゃないでしょうか。
僕自身「Tinderのメッセージが面倒くさすぎる」と感じていたので、今回、ChatGPTを使って「Tinderメッセージ自動返信bot」を作ってみました。
結論、「できるっちゃできるけどまだbot感が出てしまう」という壁を越えられず、道なかばです。
以下、僕の試行錯誤の過程を紹介します。
botのイメージ
「ChatGPTに返信を考えさせて、その考え出したメッセージをSeleniumでTinder上に自動入力させる」いうのが今回のプランです。
この時点でのイメージは、
①マッチ
↓
②僕が考えた一言目のテンプレートを自動送信
↓
③女の子から返信が来る
↓
④それをChatGPTに入力(Selenium)
↓
⑤ChatGPTに返信を考えさせる
↓
⑥⑤をTinderで送信(Selenium)
↓
③ (以下、繰り返し)
こうすることで、スワイプからメッセージまで全て自動化できるはずです。
以前Tinderの自動スワイプボットをPythonとTinderAPIで作ったんですが、1週間経たずバンされてしまったので今回はAPIではなくSeleniumというブラウザ操作のためのフレームワークを代わりに使います。
この時点でChatGPTにどれくらいのポテンシャルがあるのかわからなかったので、
「会話のゴール地点 (どの時点で僕とメッセージを交代するか)」は保留にしておきます。
考えられる候補としては、以下のどれかだと思います。
デートの約束を取り付けるところまで
電話の約束を取り付けるところまで
インスタを交換するところまで
それでは、とりあえずChatGPTを試してみます。
ChatGPTにどんな指示をするのか
とりあえず、「Tinderで女の子に送る最適なメッセージを教えて」と頼んでみました。
紫の”r” のアイコンが僕(ルノワールのr)で、緑のアイコンがchatgptです。
どこが自然やねん。
この時点で、「ああ、ChatGPTはこういうことには向いてないんだな」と思いつつ、自動化する上での問題点に気づきました。
- 会話が自然じゃなさすぎる
- 会話形式に対応させないといけない
会話が自然じゃなさすぎる問題
「ChatGPTは神!」「小説も書ける」みたいな情報を見ていたので、
だから「こんなはずはない」と思い、いろいろ調べたところ
そういう時は「○○として振る舞って (act as ~)」という頼み方をするといいとわかりました。
act as を使えば、人間らしい活動を求めるときに、「私は人間ではなく人工知能だから無理」という返答を避けることができる。
以前のChatGPTのバーションでは、例えばインタビューの練習をしようとしても難しかった。それは、インタビューは人に対して実施させれる営みだからだ。現在のバージョンでは大きく改善され、ChatGPTができるだけサポートしてくれようとする。
なるほど。
今回目指しているのは「質問に答える」という形ではなく「会話を続ける」という人間的な活動なので、この「〜として振る舞ってください」という頼み方をすることにします。
会話形式に対応させないといけない問題
もう一つ、自動化するには「こちらが入力した返信に対して毎回メッセージを考えてもらうような指示(インプット)をしないといけない」と気づきました。
こちらは頼み方(インプット)を工夫すればすぐに解決しそうです。
以上の二点を踏まえて、たたき台となるプロトタイプ①が完成しました。
プロトタイプ①
「〇〇として振る舞ってください」と指示する
会話に対応させるように指示をする
とりあえずこの2点を解決するべく考えた、指示の出し方がこちらです。
Tinderでマッチしました。 あなたは男性として振る舞ってください。 私が女性側のメッセージをするので、それに最適な返信をしてください。 最初のメッセージを送るのはあなたです。
頼む…!
はい。
「対話形式に対応させる」という点はクリアしました。
実際は僕 (紫のrって書いてあるアイコンの方) の返信部分に、女の子の返信を入力すればいいので、「女の子の返信に対してChatGPTに返信を考えさせる」という今回の最大の目的は達成できそうです。
ただbot感が強すぎるので、これでは使い物にならなさそうです。
かなり色々(64通りくらい)試したんですが、この溢れ出るbot感はどうにもなりませんでした。
この時点で、「ChatGPTに任せた会話を長く続けるのは無理がある」と判断しました。
botだとバレる前に人間と交代したほうが良さそうです。
デートや電話の約束を取り付けるのはかなり難しそうなので、
「できるだけ早く会話を切り上げてインスタを交換させる」ことにします。
「インスタを交換するところまで自動化して、それ以降はインスタ上で自分で直接やりとりする」という、全体の方向性が見えてきました。
プロトタイプ②
会話を自然にする指示の出し方はひき続き模索していくとして、
とりあえず「3ターンくらいでインスタを交換させる」という指示を付け足すことにします。
これが、難しかった。
「3回目のメッセージ」という概念がないようで、
ひとことめでインスタを聞いたり、3つのメッセージを送り始めたり、「私はあなたのインスタグラムが大好きです」と言い出したり、、
「3ラリー目くらいの自然な流れの所でインスタを聞く」という作業がChatGPTには難しいようです。
結構色々試したんですが、なかなか上手く行きません。
正確にいうと「3回目でインスタを聞く」ことはできることはあっても、「2回に1回くらいの確率でほぼ同じメッセージを3つ連続で送り始める」というバグが止められませんでした。
ただ、この「3回目くらいでインスタを聞く」という作業自体は難しくないはずなので、僕の指示の出し方が悪い気がします。
ここでTinderのbotを思い出したんですが、大体1ラリー目でこういうメッセージを送ってきますよね。
だから技術的に「会話の流れが不自然にならないタイミングでインスタを聞く」という作業は難しいんかな、とも思ったりしています。
インスタを使って外国人の子と出会いたい!という方はこちらの記事に詳しく書いたのでよければみてください。
とりあえずの結論
まだ全然作業中なんですが、とりあえず経過報告と現時点でわかったことをまとめます。
bot感がえぐすぎる
3ターン限定、とかにするまでもなく、初っ端からbot感が溢れてしまいます。
これを受けて「もう自分でメッセージのテンプレートを用意した方が早いのでは?」と感じています。
そうするとChatGPTを使う意味が完全に消失するので、ここはちょっと検討します。
英語ならもっと自然なのでは?と思い一瞬検討したんですが、
英語で指示を出す
↓
ChatGPTが英語のメッセージを考え出す
↓
その返信をDeepLで翻訳して日本語にする
↓
それをTinderで送る
↓
女の子からの返信がくる
↓
女の子からの返信をDeepLで英語に翻訳する
↓
ChatGPTに入力する
↓
…
処理がシンプルに2倍になるので、めんどくせえな、と思いました。
また日本語に翻訳することを考えず普通に英語で試したところ、
「日本語よりはマシだけどbotっぽい」という感じでした。
わざわざ翻訳を介するともっと変になるので、これは現実的じゃなさそうです。
多分ChatGPTを使いこなせてない
この可能性が大きいんですが、「僕の頼み方が下手」という説も大いにあります。
引き続き勉強します。
とりあえず形にしたいので、ChatGPTのことは忘れてPythonの方の作業も進めていきます。
目処が立ち次第Twitterで続報をお知らせします。
Tinderのスワイプを自動化したいという方は興味あったらDMください。
それと、
エンジニアの方いらっしゃったら連絡ください😭
(スクレイピングについて聞きたいです)
それでは!
コメント