ギャルがニュースをまとめてメールしてくれるやつを作った

作成日
カテゴリ: blog AWS  タグ: AWSBedrock

intro

amazon nova 実装記念で何か作りたくなってしまった。 超安いらしい。

めちゃくちゃ安いなら使い方に気を使わなくても気軽に使えるので今後のために触ってみたい感じもある。

ということで簡単に何か作ってみることにする

作るモノのテーマ

普段、ニュース記事を収集するためにRSSリーダーを愛用しているが、概要だけ読むとしても読むのが結構大変。 しかも、X等に夢中になってしまえばアプリを開くのを忘れてしまい、読み忘れてしまう。 (実際にRSSリーダーアプリを開いたら記事のところに3日前とか書いてあることがしばしば。。。)

ということで、記事をAIに要約してメールで送ってもらおう!!

今回作る仕組みの構想

architect.png

今回はこんな感じ。 色々工夫する余地はあると思うが、今回はシンプルに作って使うことを目標として組む。

Lambdaについて

シンプルに処理はすべてLambdaに任せる。 Pythonでサクッと作る。

1日3回は情報が欲しいのでEventBridgeで定期実行させる。 諸般の事情からメールはLambdaから送ることができないので、SESを介して送る。

DynamoDBについて

テーブルを2つ用意する。

  • RSSのURLを格納するためのテーブル
  • 過去に取得した記事を格納するためのテーブル

どちらもシンプルに必要な項目だけ作った。

Bedrockについて

今回のかなめ。 実装されたばかりの最新モデルということで現在はバージニア北部リージョンにしかないっぽい。たぶん。

センシティブな情報は扱わないので、適当にboto3でネット経由でアクセスする。 boto3経由だと関数とかもあって簡単。

とりあえず、簡単に要約してもらうだけなので、ロール付けとキャラ付けの簡単なSystemPromptsを指定して、RSSから取得した記事の概要(description)をPromptsとして渡して要約してもらう。

SystemPromptsは取り急ぎだったのでCopilotに書いてもらった。

Amazon Novaについて

今回はテキストしか扱わないので一番安いAmazon Nova Microにした。

肝心のモデルの性能だが、結構いい感じ。 日本語性能は体感でCopilotとかGeminiくらいの性能はありそう。

メールの整形まで任せてみたけど、レイアウトが入力内容次第で結構ブレるので今回はコードで整形することにしようと思う。 Promptsを工夫すれば整形も任せられそうな感じはあるけど、あんまそこに力入れても仕方ないので。。。

出来上がったもの

1日3回チェックして記事の追加があれば、ギャルがメールを送ってくれる。

mail_demo.png

結局、テキスト量は結構あるが口語なので幾分読みやすい気がする。 しばらくはこれで運用してみよう。

結局コストは?

こんな感じ。

billing.png

inputトークンが1Ktokenあたり$0.000035 outputトークンが1Ktokenあたり$0.00014 他との比較はしてないが、この価格ならコストを全然気にしないで使ってもよさそう。

まとめ

思ったより安かったのと思ったより使えそうなモデルだったので、何かに活用したいって気になってきた。 今後何かあったらまた使ってみよう。