人工知能に関するニュースは、最初に英語で発信されることが多い。
Hacker Newsは、人工知能を含む計算機科学に関するニュース記事を投稿するサイトとして英語圏で人気がある。
Hacker Newsはタイトルのみが並んだシンプルな見た目で、どれが人工知能に関連するホットな記事か見分けるのが難しい。
そこで、Hacker NewsのREST APIを使い、人気順に並べ替えて、人工知能に関連する記事かをChatGPTで判定するようにした。
結果は、Google Sheetsに出力するようにした。
一連の処理は、Google Apps Scriptで実装した。
Hacker News REST API
Hacker Newsの記事一覧は、REST APIで取得できる。
APIの仕様は、こちらにある。
GitHub - HackerNews/API: Documentation and Samples for the Official HN API
人気記事は、
https://hacker-news.firebaseio.com/v0/topstories.json
で、取得する。
最大500記事のID一覧が取得される。
各記事は、IDを元に、
https://hacker-news.firebaseio.com/v0/item/< id >.json
で取得する。
取得されるのは、「記事ID」、「スコア」、「日時」、「タイトル」、「URL」などである。
Hacker Newsから記事一覧を取得する処理
Google Apps Scriptで、Hacker Newsから記事一覧を取得してGoogle Sheetsに保存する処理は、こちらのコードを参考にした。
Hacker Newsを日本語訳してSlackに通知(Google Apps Script) · GitHub
スプレッドシートは、あらかじめ作成して、1行目に列名を記述しておく必要がある。
参考にしたコードになかったが、以下の処理を追加した。
scoreの更新
1日以上経過した記事のscoreを更新するようにした。
score順にソート
処理の最後に、ソートする処理を追加した。
SpreadSheetsSQLには、ソートする機能はないが、privateのプロパティにアクセスして、ソートするようにした。
sheetObj.sheet_.sort(3, false);
ChatGPTで人工知能に関連する記事か判定する
REST APIで記事のタイトルが取得できるので、タイトルを元に人工知能に関連する記事か判定する。
記事のURLから記事の内容を取得して判定する方が多くの情報から判断できるが、課金が膨らみそうなため、使用する情報はタイトルのみとした。
Google Apps Scriptで、OpenAI APIを使用する処理は、こちらの記事を参考にした。
【忘備録】SlackチャンネルにChatGPTを組み込んでみた!【Google Apps Script】 | 情報学部生の気ままなブログ
人工知能に関連する記事か判定する方法
systemロールのcontentを「Answer Yes or No if the article is related to artificial intelligence(人工知能に関連する記事かをYesかNoで答えよ)」として、userロールのcontentに、記事のタイトルを設定して、YesかNoが返却されることを期待してリクエストする。
結果に、Yesが含まれているかを文字列検索して、含まれていれば人工知能に関連する記事と判断する。
なお、プロンプトを設計する際は、PlayGroundを使うと便利である。
https://platform.openai.com/playground