一番星はての開発ブログ

AIブックマーカー一番星はてのの成長を記録するブログですの。

一番星はてののGPTを公開しました

GPT作ってみた

一番星はてののGPTをGPT Storeにて公開しました。 chatgpt.com

今更ながら久しぶりにChatGPT Plusに登録する機会があったので作成してみました。 少し前から無料版でも一定回数GPTsを使うことができるようなのでぜひ使ってみてください。

自分がPlusを退会したとしても作ったGPTは残ったままという話なのでたぶん使い続けられると思います。

なにができるのか?

普通のおしゃべりとお絵かきができます。 機能としてはウェブ参照、DALL-E画像生成は有効にしてますが、コードインタープリターとデータ分析は無効にしています。

例えば、「今日のはてなブックマークのニュースを教えて」と話しかけると次のようにウェブ検索して答えてくれます(初回の応答はわりと検索しないこともあります)。

大喜利もノリノリで回答してくれます。

絵も描いてくれてます。

一番星はてのを支えるインフラを整備しました

ずっとさぼっていたのですがインフラ周りを整備し、AWS SAMで構築できるようにしました。 下記が一番星はてのシステム構成図です。

一番星はてのシステム構成図

システム概要

はてのさんはLambda上におり、EventBridge経由で基本的に2時間に1回のスケジューリングではてなAPIやOpenAI APIと連携しブックマークを行います。
LambdaはコンテナイメージタイプでFastAPIで動いています。FastAPIのルーティングとLambdaを統合するためmangumを利用しています。
各インフラはAWS SAMによってコード管理されており、GitHub Actionsでpush時に自動ビルド、デプロイでAWS上のインフラが構築されます。

感想

これまでIaC化できてなかったが、すごくいい。
構成全体が把握しやすくなるし、変更や拡張が容易になる。
あとからやるのも面倒だし今後は最初からIaC化しようと思った。
CDKとSAMを組み合わせるという手もあるようなのでそれも見てみようと思う。

参考

はてのさんが動いているリポジトリそのものではないですが、今回の参考に以前公開したリポジトリも更新しました。
GitHub - ktny/AI_hatena_bookmarker: OpenAIで作るAIはてなブックマーカー

ブックマークについたスターを眺められるサイト「はてなギャラクシー(β版)」をリリースしました

まえがき

2023年も終わりなので「2023年 一番星はてのコメント10選」みたいな記事を書こうと思い、とりあえずスター数の多かったコメントを集計していました。 集計自体はすぐ終わったのですが、はての以外の人でもこれ知りたいなあと思い、サービスとして公開することにしました。

というわけで、ブックマークについたスターを眺められるサイト「はてなギャラクシー(β版)」をリリースしました。

はてな★ギャラクシー

どういうサイトなのか

サイト自体を見てもらった方が早いので、一番星はてののページを見てみます。

一番星はてののブックマーク
firststar_hateno - はてな★ギャラクシー

一番星はてののはてのギャラクシーのページ

ユーザーの全ブックマークを取得し、スター数の降順に並べます。 あとはキーワードと日付によるブックマークの絞り込みができます。 キーワードはブックマークコメントとブックマーク記事タイトルの両方に部分一致でHITします。

ブックマーク数が多いほど最初のブックマークの取得に時間がかかりますが、2回目以降はキャッシュを利用します。

今後の展望

リアルタイムに今人気のブックマークとかを出したいと思っていましたが2023年中に公開したかったのでいったんβ版としてリリースすることにしました。 他にもそれなりに反響や要望があったら追加開発していこうと思います。 一番星はてのも2024年はまたいろいろと強化していきたいと思います。

おわりに

2023年は一番星はてのを可愛がっていただきありがとうございました。 それではみなさんよいお年を。

一番星はてののLINEスタンプっぽい画像を作ってみた

StableDiffusionを使ってLINEスタンプを作ってみたかったのでとりあえず画像を作ってみた。使っているモデルはaiceKawaice_channel。ちび系キャラを生成するのにいいらしい。
(追記)このモデルは画像販売が不可なのでLINEスタンプには使えなさそうです。

AICE冰可 | KawAICE[幼态特化模型] - Channel | Stable Diffusion Checkpoint | Civitai

よく見るといろいろ粗はあるがパッと見はけっこう使えそうな感じなんじゃないだろうか。 この中では「ファイトですわ」の元気な感じと「ブックマークですわ」の微妙に面白くなさそうな感じが気に入っている。 ブクマするときの表情ってこんなんだよね。

作り方

LoRAを何度か試したが作り方が悪いのか、画像のパターン数が足りないのか結局ReferenceOnlyの方がいいクオリティのものができるのですべてReferenceOnlyで作っている。 作り方を備忘録として残しておく。
顔関連のブルーの瞳や髪色髪型などはそれなりに反映されるが、リボンや服などの付属物は基本的に反映されないのでその辺はけっこう妥協している。

prompt: best quality, 1 girl, solo, (chibi:1.2),  upper body,  (cheering:1.5), cute, kawaii, (white blazer:1.5), (ash gray hair, long hair:1.2), wavy hair, ringlets, school uniform, pink background,
negative: bad_prompt, EasyNegativeV2, (blush:1.5), (worst quality, low quality:1.4),
model: aiceKawaice_channel
ControlNet processor: reference_only

最近思っていること

AI生成もちょっと一段落というかハイプサイクルの幻滅期に入ってきてる気がする。 自分は当初はAI生成の良さは自然言語で作れるみたいなところにあると思っていたのだが(それももちろんあるが)、AI生成の良さはそういう手軽に作れることの先にある時間をかけずに大量に作れたり何度もやり直せたりすることにあるなあと思ってきている。 なので、大量生成して上澄みを取り出すとか、良かったものをちょっと修正するみたいな使い方ができないと、AI生成である良さをなかなか生かせないのではないかと思う。 これはテキスト、画像生成どちらにも言えることだと思う。


ポリシー上はてのちゃんに大量ブックマークをさせるつもりはないが、AI生成である良さを生かす方法も模索している。

一番星はてのとMisskey.ioでおしゃべりできるようになりました

一番星はてののMisskey.ioアカウント misskey.io

少し前からMisskey.ioではてののブコメを流していましたが、ブコメに対する返信ではてのとおしゃべりできるようになりました。

お星さまのパワーをあげている様子

まだ試験運用中なのでいろいろ変わったり不安定なところもありますが現在の仕様は下記です。

  • 300字以上のメッセージにはちゃんと返信できません
  • パブリックでないメッセージにはちゃんと返信できません
  • センシティブフィルターに引っかかった場合はちゃんと返信できません

その他Misskeyやその他のエラーで返信しないことがあります。

はてののブコメに話しかけたいことがある場合は是非Misskeyで話しかけてみてください。

ちなみにTwitterはAPI料金が高いので対応していません。

一番星はてのがなるべく非建設的なコメントをしないように判定を強化しました

一番星はてのがなるべく非建設的なコメントをしないように判定を強化しました。

これまでもある程度そのような仕組みを入れていましたが、コメント全文と文単位でGoogle Perspective APIで判定し建設的でない場合は一定回数までコメント生成をリトライするようにしました。

Perspective APIについて

perspectiveapi.com

Perspective APIはテキストの次のような属性への該当度合いを0~1の数値で判定してくれます(1に近づくほど有害判定となる)。日本語対応もしています。
OpenAIにも同じようなポリシーに準拠しているかどうかを判定するmoderations APIがありますがこちらは2023年6月現在では日本語対応は限定的です。

  • TOXICITY(失礼な発言)
  • IDENTITY ATTACK(アイデンティティへの攻撃的な発言)
  • INSULT(侮辱的な発言)
  • PROFANITY(卑猥・冒涜的な発言)
  • THREAT(個人または集団への脅威となる発言)

それぞれの属性である程度閾値を調整して判定しており、今後もその調整は行う予定です。

例えば、PROFANITYは1単語で卑猥だと判定される可能性があり、下記のはてののコメントはPROFANITYがそこそこ高い数値で判定されます。

セックスしたらもう少し生きる気になった

この記事は「セックスしたくて仕方ない人が、セックスしたら気分がすっきりした」という、なんとも哀しくも切ない話ですのね。でも、彼が彼女に対してしたことは許されませんわよ!

2023/05/28 08:01
b.hatena.ne.jp

このコメントの全体の判定は下記です(0~1で1に近づくほど有害)。実際には一文ごとの判定も行うがここでは省略します。

TOXICITY: 0.37751234
IDENTITY_ATTACK: 0.04023018
INSULT: 0.05144889
PROFANITY: 0.47001255
THREAT: 0.018192071

TOXICITYとPROFANITY以外は問題ない判定です。TOXICITYは一番基本の属性なのでPROFANITYに引っ張られているように感じます。

このコメントはなかなかいいコメントだと自分は思っており、PROFANITYの閾値を低い値にすることでこのようなコメントをさせないことは本意ではないためPROFANITYは他と比べて少し高めに閾値を設けるなどしています。

はてののコメントについて

とはいえ、これでもすべての非建設的なコメントが防げるわけではありません。

例えば、コメントの表面だけ取れば問題ないが、裏の文脈を読むとキツめの皮肉に読める場合などは判定されないはずです。

ケースバイケースですが、そのように防げなかった場合は開発者により削除することがあります(twitterのしゅうまい君もそういうことがあるらしい*1)。編集はしません。

また、この判定強化により、ある意味で面白いコメントが減る可能性がありますが、これまでのはてののコメントもほとんどは問題ない判定なので特に心配はしていません。

それより、はてのが建設的かつ面白いコメントをすることの方が大事です。はてのがそのようなコメントをするよう見守りたいと思います。


なお、はてののコメントはたまに人間が書いてないか?と思われることもありますが、中の人がコメントしたことは一度もありません。

その証明は簡単にはできませんが、証明するとしたらオープンソース化するなどした方がいいのかもしれませんね。その方が機能や品質が向上するだろうし。

*1:『あと、たまにNGワードの網を掻い潜って、本当に最低な発言をすることがあります…。そういうときはなるべく急いで手動で消すようにしています。 』ポンコツだからこそ愛される? AIツイート歴10年“しゅうまい君”のアカウント誕生秘話 | ORICON NEWS

一番星はてのが英語学習記事に無言ブクマするようになりました

500ブクマ以上の英語学習っぽい記事を見つけたら無言ブクマするようになりました(「英語」タグでブクマされます)。なお、タイミングによってはブコメありでブクマされる場合もあります。

図書館で英語を勉強する一番星はての

キャラ画像生成にReference-onlyが便利

ここ最近は主にキャラLoRA作成を頑張っていたんですが、あまり安定せずにどうしたものかと思っていたらControlNetのReference-onlyという便利な機能でキャラの特徴を掴んで簡単に画像出力できるようになったのでそれではてのの画像を生成してみた。頭のリボンはうまくいかなかったので仕方なく後から調整している。

インターネットを見る一番星はての

まだまだ同じ向きの顔とかしか出せないけど、そのうちブックマークコメントに合わせた画像生成をしてツイートするなど行いたい。

参考

www.youtube.com