Open8

Open AIのAPIでポジティブな記事を探す

kurehajimekurehajime

ネットには心が荒むようなニュースしかないのでOpen AIのAPIを使ってポジティブな記事を探すことにする。

使うもの

  • Open AIのAPIキー
  • Google Colab
kurehajimekurehajime

まずはOpen AIのAPIキーを変数に格納する。
直接書くとやばいのでgetpassというモジュールを使って実行時に入力してもらう。

from getpass import getpass
secret = getpass('Enter the secret value: ')
kurehajimekurehajime

ライブラリをインストールする。
Google Colabなどのノートブックの場合は先頭に!を入れる。

!pip install feedparser
!pip install openai 
kurehajimekurehajime

フィードを取得する。
今回ははてなブックマークの人気エントリを使う。
果たしてはてなブックマークにポジティブな話題は存在するのか。

import feedparser
url = "https://b.hatena.ne.jp/hotentry.rss"
feed = feedparser.parse(url)
kurehajimekurehajime

プロンプトに使いやすいよう、タイトルだけ抜き出す。
このコードではあとで応用するためにいったん辞書形式にしているが、結局使わなかった。

def to_obj(entry):
  title = entry['title']
  link = entry['link']
  description = entry['description']
  return {'title':title,'link':link}

entries = list(map(to_obj,feed['entries']))[:15]

entries_text = '\n'.join([f"[{entry['title']}]({entry['link']})" for entry in entries])

実行すると以下のようなmarkdownになる。

[ゲームさんぽの次に見るべきYouTubeの教養コンテンツ](https://anond.hatelabo.jp/20230222194136)
[「頭のいい人」が自然とやっている4つのこと。“素直に○○する” ことも意外と大切だった - STUDY HACKER(スタディーハッカー)|社会人の勉強法&英語学習](https://studyhacker.net/sharp-people)
[はあちゅうさん講演講師交代の経緯まとめ(かながわハートフルフェスタ2022inおだわら) - ドクダミ自由帳](https://www.dokudamiyoshiko.com/entry/20230223/1677078000)
[上野千鶴子氏のいう「おひとりさま」は、社会から孤立するススメではなく、家族以外の選択肢も増やすことのススメ - 法華狼の日記](https://hokke-ookami.hatenablog.com/entry/20230223/1677099600)
[子供は作っておいた方がいい](https://anond.hatelabo.jp/20230222190044)
[家計管理アプリ「マネーフォワード ME」に課金したら、お金に無頓着な私でも節約できるようになった | ライフハッカー・ジャパン](https://www.lifehacker.jp/article/2302-tinyhack-money-forward-me-premium/)
[ウクライナ政府が自国での『Atomic Heart』配信停止を要求―他国のゲーマーに対してもプレイを控えるよう呼びかけ | Game*Spark - 国内・海外ゲーム情報サイト](https://www.gamespark.jp/article/2023/02/23/127353.html)
[リス◯◯ング](https://anond.hatelabo.jp/20230222220943)
[生産性を高めれば高めるほどますます忙しくなる /「限りある時間の使い方」を読んだ - kakakakakku blog](https://kakakakakku.hatenablog.com/entry/2023/02/22/084137)
[トマト1個、もやし1袋入り「フライパン炊き込みご飯」にんにく、チーズ、コンソメで簡単、激ウマに炊けます【筋肉料理人】 - メシ通 | ホットペッパーグルメ](https://www.hotpepper.jp/mesitsu/entry/kinniku/2023-00766)
[セッション認証とトークン認証について](https://zenn.dev/oreilly_ota/articles/31d66fab5c184e)
[Naoki Iso on Twitter: "上野千鶴子氏「結婚するな、と言っているわけではないのよ。自分の人生に巻き込んでいい、相手の人生に巻き込まれていい。そう思えるほどコミットできる相手は、一生のうちで5人もいないはず。そういう「血迷える相手」に出会えるのは、やはり幸福… https://t.co/uVscqGfzQW"](https://twitter.com/isnki/status/1627952307618091008)
[エマニュエル・トッドが仏紙に断言「第三次世界大戦はもう始まっている」 | 「クレイジーな反逆児野郎」が持論を展開](https://courrier.jp/news/archives/317205/)
[baizou1000 on Twitter: "バズっているようなので放置せず言わせてもらいますが、脳疾患とサウナとの因果関係を示すデータは存在しません。サウナの温度も日本とフィンランドで大差はありません。フィンランドも乾式が主であり、湿度100%もありません。ロウリュウ中でも… https://t.co/aGg98LphZi"](https://twitter.com/baizou/status/1627399580592791553)
[アップルウオッチで血糖値測定する技術、開発が飛躍的進展-関係者](https://www.bloomberg.co.jp/news/articles/2023-02-22/RQHT1BT1UM0W01)
kurehajimekurehajime

Open AIのAPIにプロンプトを投げる。
今回はFrom the following news, extract only five rows that contain positive news.にした。
「以下のニュースから、ポジティブなニュースを含む行を5行だけ抽出して」といったところ。

import openai
openai.api_key = secret
completion = openai.Completion.create(
    model="text-davinci-003",
    prompt=f"""From the following news, extract only five rows that contain positive news.

{entries_text}
    """,
    max_tokens=700,
    temperature=0.5)

プロンプトを考えるのはとても重要。
試しにChatGPTに「明るい気持ちになれるニュースが書かれている行だけ抽出して」とお願いしたところ。
身も蓋もない回答をされた。

はてなブックマークの人気エントリは荒んでいる。

kurehajimekurehajime

あとは結果を出力するだけ。

for comp in completion.choices:
  print(comp.text)

結果はこんな感じ。

1. [「頭のいい人」が自然とやっている4つのこと。“素直に○○する” ことも意外と大切だった - STUDY HACKER(スタディーハッカー)|社会人の勉強法&英語学習](https://studyhacker.net/sharp-people)
2. [家計管理アプリ「マネーフォワード ME」に課金したら、お金に無頓着な私でも節約できるようになった | ライフハッカー・ジャパン](https://www.lifehacker.jp/article/2302-tinyhack-money-forward-me-premium/)
3. [生産性を高めれば高めるほどますます忙しくなる /「限りある時間の使い方」を読んだ - kakakakakku blog](https://kakakakakku.hatenablog.com/entry/2023/02/22/084137)
4. [トマト1個、もやし1袋入り「フライパン炊き込みご飯」にんにく、チーズ、コンソメで簡単、激ウマに炊けます【筋肉料理人】 - メシ通 | ホットペッパーグルメ](https://www.hotpepper.jp/mesitsu/entry/kinniku/2023-00766)
5. [アップルウオッチで血糖値測定する技術、開発が飛躍的進展-関係者](https://www.bloomberg.co.jp/news/articles/2023-02-22/RQHT1BT1UM0W01)

markdownをそのまま貼り付けるとこうなる。

  1. 「頭のいい人」が自然とやっている4つのこと。“素直に○○する” ことも意外と大切だった - STUDY HACKER(スタディーハッカー)|社会人の勉強法&英語学習
  2. 家計管理アプリ「マネーフォワード ME」に課金したら、お金に無頓着な私でも節約できるようになった | ライフハッカー・ジャパン
  3. 生産性を高めれば高めるほどますます忙しくなる /「限りある時間の使い方」を読んだ - kakakakakku blog
  4. トマト1個、もやし1袋入り「フライパン炊き込みご飯」にんにく、チーズ、コンソメで簡単、激ウマに炊けます【筋肉料理人】 - メシ通 | ホットペッパーグルメ
  5. アップルウオッチで血糖値測定する技術、開発が飛躍的進展-関係者

ポジティブな記事…まぁそう言われてみればそうとも言える感じがする。

kurehajimekurehajime

おまけ

俳句を作ってみた。

https://github.com/kurehajime/openapi_sandbox/blob/main/haiku.ipynb

こんな感じのプロンプトで

あなたは俳句で喜怒哀楽や季節感を表現する詩人です。
俳句とは、5・7・5という音節数の文章を作ることを指します。
俳句の例として以下のようなものがあります。

* 古池や 蛙飛びこむ 水の音
* 若草や つわものどもが 夢の跡
* 柿食えば 鐘が鳴るなり 法隆寺
* 梅一輪 一輪ほどの あたたかさ
* 静かさや 岩にしみ入る 蝉の声

それでは「---」に続く文章をテーマにして俳句を作ってください。

---
{entry['title']}
{entry['description']}

こういうのを出力する

愛すべき者と
 地下壕にて
  笑いあふれ
https://www.dailyshincho.jp/article/2023/02211131/