カテゴリー
技術

リクルートメールにGPT-3を使って自動返信する

転職エージェントや企業が送ってくる(スパムに近い)スカウトメールに対してOpenAI の GPT-3 API を使って自動応答をさせる方法を教えてくれるマット・ビリューさんのブログ記事がありました。

転職に興味が無いなら無視してもよいでしょうが、ビリューさんは3つの理由から返事はしたいと考えたそうです。

  1. それが礼儀正しいから
  2. 無視しても相手は何度もフォローアップのメールを送ってくるから
  3. いつか求職する時のために関係を維持することには興味があるから

2番はあるあるですね。リクルーター側も自動化されていると思いますが、〇日後、△日後に「先日メールを送りましたが、その後…」みたいなメールを送ってこられることはよくあります。

それで短文の「今は職を探してないけどあなたのことは覚えておくよ」的な返事をするのですが、これも手動は面倒なので、自動化したいと考えたそう。そして、一律の固定文面ではなく相手に応じたパーソナライズをしようとした時に、ルールベースでリクルーターの所属と名前を取り出すよりも、機械学習による処理を考えたと。

Python のソースコードが公開されているのですが、OpenAI の GPT-3 API を使って、相手の文面から企業名と相手の名前を抽出させ、返信のテンプレートにその社名と名前を埋め込んで返答を作っています。

メールがリクルートメールなのかその他の一般のメールなのかの分類はこのスクリプトでは行わず、メールサービスの方の機能で分類しフォルダに分けているようです。サンプルの環境変数ではFastmailの名前がありますね。これを IMAP でアクセスしフォルダ内のメールに自動応答をかけています。

スクリプト中ではサンプルのメール文面から”Apple”社の”Steve”さんを抜き出しています。OpenAI で実際にsummarize させてみると、ちゃんと取れてます。

英語のリクルートメールから送信者の名前と社名を抽出する on OpenAI の Playground

これは楽ですね。日本語だとどうなのかなと、適当な文面を作って(元ネタはいっぱいありますし)食わせると、これも取れるようです。

GPT-3 の話でよく見るのはテキストの自動生成だったので、こういう要素の抽出にも簡単に使えると知れたのは良かったです。

リクルートメールの方もどうせ自動化されまくっているので、この先はお互いが自動生成のメールを送りあって関係性を保つみたいなことになるのでしょうか。

[追記] Hacker Newsのトップにも出ました。

カテゴリー
ネットの事件

プルリクエストを巡る bot 対 bot の非生産的なやりとり

mysql/mysql-server でのプルリクエストを巡る、bot 対 bot の戦いです。

登場人物、いやbot は以下の2つ。

  • 依存ライブラリが古くなっているのを見つけてパッチを作り更新を提案する(今は)GitHub内のサービス dependabot
  • MySQL への更新提案に対してOCA(Oracle Contributor Agreement = オラクル貢献者同意書)に同意済かを確認する mysql-oca-bot

プルリクエスト上でのやりとりはこんな感じ。

dependabot: Babel (国際化に関する Python製ライブラリ)の最新バージョン 2.9.1 を確認しました。バージョン 2.8.0 から 2.9.1 への更新をコミットしました。

mysql-oca-bot: PRありがとう。OCA には同意してますか? 詳しくはこちらを読んで手続きに従ってください。MySQLバグ管理システムに登録したメールアドレスを添えてくださいね。

(ここで一か月)

mysql-oca-bot: リクエストに反応がないので、このリクエストはクローズします。

dependabot: 今回はこれ以上言わないけど、次のバージョンが出たらまた連絡します。もし次の特定のバージョンまでスキップしたい場合は以下の手順に従ってその旨通知してください。もし気が変わったらこのPRを再開してくれてもいいんですよ。

自動ボット2台だけでやりとりが完結してますね。完結といっても建設的なものではなく、何も進んでませんが。

mysql-oca-bot の方は、OCA に同意して何らかのリプライをつけることで、そのあとに別の人間のユーザーが出てきてマージするかどうかの議論を進める仕組みのようですね。OCA に同意しているかどうかを毎回提案者に聞くのが手間なので、そこを bot 化したのでしょう。

しかし、dependabot はそんな事は知らないし、追加の返答もしないから単に期限切れとなってしまう。

そもそも dependabot を動かしてるのは MySQL であり結局 Oracle なのだから、OCA も何も無いような。dependabot からのPRの場合は人間のアカウントに渡すように設定するべきじゃないのかしら。

同じリポジトリで検索してみたところ、他にも10個ぐらい同じような無為のやりとりが見つかりました。

via twitter

カテゴリー
fun

Zoombot – ビデオ会議に「分身」を参加させる

多人数のビデオ会議で、自分に関係のない話題が延々と続いてるとき、自分はいなくてもいいんじゃないか? ということは無いですか。自分が必要な議題になるまでとか、名前が呼ばれるまで待機状態になるようなこともあるでしょう。

マット・リードさん(Matt Reed)がエンジニア的に解決しようとしたのは、自分そっくりで自分と同じように応答するボット Zoombot でした。

受け取った音声が条件を満たしていたら、応答するスクリプトのようです。たとえば以下のようなものを仕込んだそう

  • 「元気?」と聴いたら「元気だよ、訊いてくれてありがとう」
  • 「わかった?」と聴いたら「ちょっと聴き取れなかった」
  • 「じゃあね」と聴いたら「今度また。気をつけて」

映像の方は、自分の顔を映した画面を録画してループで回しているだけのようです。こちらも凝るならば会議全体の話題に応じて表情を変えたりとか工夫の余地は多そうです。

マットさんはどれでしょう? 不自然に明るさが違うのはわざとでしょう。本当にボットで騙そうとしているわけではないので。録画された映像も、明らかに変です。

動画で、実際にやりとりしている状態が観られます。自分が呼ばれているわけではないところで突然反応したり、「マット、あなたロボットみたいね」とバレバレだったり。みんな反応を楽しんでいます。

zoombot のソースコードも公開されているので、あなた自身のzoombot を作ることもできます。

マットさんは面白ネタとして作ったと思いますが、この方向性でより精巧なものを作ろうとする人も出てくるかもしれません。

via Awesomer