地方新聞社でも可能性が広がるChatGPTのAPIを活用した簡単なウェブアプリの実装について
はじめに
4月23日のツイートで、「AI社会部長」というジョーク半分、本気半分な簡単なウェブアプリを実装した社会部ポータルサイトを紹介しました。ざっくりこんな感じで作りましたという方法を書いておきます。
AI社会部長とは
ボタンを押すと、ChatGPTが社会部員を励ます熱い一言を発してくれます。非常に単純なものです。あらかじめ決められた候補文のリストからランダムに選んで出力するのではなく、AIがその都度セリフを生成してくれるので、新鮮味や意外性があります。AIを使うことで、簡単な操作で時宜を捉えた言葉や業務連絡を生成文に盛り込ませることもできます。拡張性は無限大です。
つくった背景
ChatGPTが騒がれていましたので、せっかくなのでAPIを使って新聞社の業務に活用できないかと思い、仕事を終えた夜中につくりました。社会部の共通の取材予定や勤務表、業務連絡をワンストップでアップしている「社会部ポータルサイト」というサイトがあるのですが、それを少しでも部員に活用してもらうためというのが表向きの理由です。本当の理由はちょっとひねくれているので、最後に書きたいと思います。もちろん部員への声かけをこのAI社会部長に任せるというわけではないのですが、AI社会部長の一言をきっかけに話題が盛り上がることもあり、なかなか優秀な部長です。
ちなみに、ロボットのようなAI社会部長の画像もAI(DALL・E)で生成しました。
仕組み
構成
ほとんどGoogleのサービスを使っているので、誰でも簡単に作ることができます。AIというと今までは大手新聞社さんが研究されているというイメージでしたが、地方紙でも十分にいろいろ試せそうだという実感があります(実際にできるかどうかは別としてですが…)。ChatGPTのAPIが必要なので、そこだけ少しハードルが高いかもしれません。使っているのは次の通りです。
Google Site > 「社会部ポータルサイト」に使用。そもそもAI社会部長がいるところ。
Google Apps Script (GAS) > 簡単なスクリプトとhtmlを書いています。このスクリプトが肝です。
ChatGPT API > ChatGPTに一言を生成してもらうためのAPIです。GPT3.5です。料金はおおよそですが1生成あたり2~4円程度かと思います。
Google Spreadsheets > ChatGPTに送るプロンプト(指示文)をいくつか入力してあります。生成された一言を格納するデータベースとしても使っています。
処理の流れ
①まずGoogle Site上で「生成ボタン」が押されます。
②「生成ボタン」が押されたら、乱数を発生させます。1~3の目が出る"サイコロ"を振ります。
③Spreadsheets上に3つの異なるプロンプトを用意してあります。乱数の目に応じて、どれか一つが選ばれます。
④選ばれたプロンプトをChatGPTに送ります。ChatGPTは数秒で応答を生成します。
⑤その応答を最初のGoogle Site上で表示します。
⑥応答をスプレッドシートに保存し、過去の一言の履歴が参照できるようにデータベース化します。
用意してあるプロンプトは例えばこんな感じです。
3つ目のプロンプトが選ばれた場合、スラムダンクの安西先生が出現します。これは完全にお遊びですが、いつも良いことを言ってくれるので、一番人気があります。プロンプトの候補はいくつでも増やすことができるので、やろうと思えばバリエーションを無限に作り出せます。各プロンプトが選ばれる確率もここで調整できます。例えば100個プロンプトを作っておき、安西先生を1つだけ入れておけば、安西先生の出現率は1%にできます。
また、プロンプトをスプレッドシートで管理することで、いつでも好きなタイミングで気軽にプロンプトを書き換えることができます。時宜を捉えて業務連絡を盛り込むことができます。上の例では、高校野球のチーム紹介の取材が今ピークを迎えていることや、暑い日が続いているので県内の最高気温のチェックや熱中症被害への警戒をしてほしい旨を盛り込んでいます。ChatGPTはこうした部分を拾って一言を生成してくれます。
例えば、暑さや熱中症を拾い、次のような一言が生成されました。
ちなみに、生成した一言は次のように生成日時とともにスプレッドシートに格納されます。安西先生の一言がどうしてなかなか熱いじゃないですか。テンション上がります。「安西先生、取材がしたいです…」
むすびに
可能性は無限
仕組み自体は非常に簡単ですが、無限の可能性を秘めていると思います。取材スケジュールや時事ネタのヘッドライン、広報メモなどをスクレイピングしてプロンプト文に変換し、スプレッドシートに格納するように自動化しておけば、それを基にChatGPTがよりリアルで実用性のある一言を生成してくれることになります。朝一番で「昨日はこんなことがあった。今日はこんな取材があるから、こうしたほうがいい」などとAI社会部長が現実的なアドバイスをくれる時代はもう来ていると言っていいでしょう。
本来は対話型のAIなので、時間があれば対話も実装して本領発揮してもらいたいとは思いますが、知識と時間が不足しているのと、こちらの意図とは違う使われ方をしてしまうプロンプトインジェクションへの対策の必要性もあり、二の足を踏んでいるのが現状です。新聞社のAI活用に関心があるというエンジニアの方がいらっしゃれば、ぜひお声かけいただき、コラボできればと願っています。
新聞記者はもっと面白くなる
いずれにしても、私たち新聞社の軸足は地道に足で稼ぐ取材活動です。デジタルが苦手な記者の一部は今、将来の不安に苛まれています。「このままでは将来、自分のようなアナログ人間は路頭に迷うのではないか」と毎日、地に足が付かない思いをしている記者もいるような気がします。AI社会部長をつくった本当の理由は、そうした不安を払しょくし、現場の記者が記者として本来の仕事に没頭できるようにするためと言ってもいいかもしれません。なにしろこうしたAIやデジタル技術に触れるたび、アナログな記者の知識や人脈、取材力、執筆力がこれからの時代、デジタルと融合してめちゃくちゃ面白くなっていくだろうという思いを強くするからです。ITやデータサイエンスなどの業界では、実力が伴った昔気質のアナログ人材は実は引く手あまたと聞きます。100人は要らないけど1人いたらIT企業にとってすごく有用な人材なんです。不安を感じている新聞記者はそれを知らないし、実感がないかもしれません。「現場の記者は自分の信じる地道な取材に没頭していればいい。デジタルなんて今は分からなくていい。心配するな。いざとなったらなんとかしてやるから」。説得力を持ってそう言い切るためにもAI社会部長をちょっと実装してみようかな、と思ったわけです。なんだかうまく説明できませんが、そういう感じです。伝われ~(佐久間一行さん風に)。
次のエントリーでは、新聞記者の仕事の自動化(RPA)のあれこれについて書いてみたいと思っています。ありがとうございました。