hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

自分のはてなブログをChat GPTにつないだ

id:nishiohirokazuさん作のScrapboxの情報をChat GPTに流し込んで対話するスクリプトがおもしろそうだったので動かして遊んでみていた。
自分のScrapboxをChatGPTにつないだ - 西尾泰和のScrapbox


自分はScrapboxよりはてなブログのほうをよく書いてるので、当然はてなブログと対話してみたい。
はてなブログのMT形式のエクスポート結果をScrapboxのエクスポート結果のJSONっぽく乱暴に書き換えるスクリプトを用意して、はてなブログのデータを使ってチャットできるようにした。
.pyが置かれているリポジトリをforkして突然.rbを追加している。
github.com


解析中でも対話できて、時系列順に処理しているので最近のエントリn%分、みたいな形で対話できておもしろかった。
とりあえずこのチャットに投げてもらえたら、過去の日記の内容をふまえて、それっぽい返答ができる、というような返答ができておもしろい。


過去10年分のブログ記事を使って、と言うと、なんか大規模なネットワークを構築して、すごい理解不能なことが起きているるような気がするけど、やってることはもうちょっと簡素で、事前にembeddingという処理をして、どのキーワードがどの文章に含まれるかのベクトル化をして、質問を投げるときには、質問文に近い文章を探して、一緒にプロンプトで何千文字かを送る、という形で実現されているようだった。なので、4000文字くらいの話題をかき集められれば、1年分でも10年分でも賢さは変わらない。ここは分量の多さよりは、一貫したスタンスの入力を与えられるか、みたいな方が重要そうな気がする。

PROMPT = """
Read the following text and answer the question. Your reply should be shorter than 250 characters.
## Text
{text}
## Question
{input}
""".strip()
https://github.com/nishio/scrapbox_chatgpt_connector/blob/main/ask.py#L25-L33


ということをふまえて、この以前流し読みしていた記事を読んだら、ああこういうことをやってるのね、というのがようやく理解できた。いや、本当は理解できてなくて、APIを呼び出してるのかがちょっとわかっただけ。
acro-engineer.hatenablog.com


賢いチャットもすっかりキャズムを超えていて、見知ったテキストを使ってチャットできるのは当然のこと、になってきたと思う。なんか感動的だけど、OK Googleしたり、Hey Siriしたりで使えていたので、このキャズム超え感はなんなのか?精度が高いし、APIもすぐ提供されていて、呼び出しがめっちゃ簡単、というのが良かったのだろうか。
手元で遊ぶ分にはいいけど、これを使ってサービス提供しようと思うとプロンプトインジェクション対策がたいへんそう。
こういう破壊活動ができるのもAIならではの愛嬌、ということになるのか、もうちょっとテクノロジーが進歩したら、こういう問題はこうやって防ぐのが定番、というのが出てきて解決するのか、気になる。
いま思うこととしては、プログラムへの指示が全部自然文で、対象のデータだけでなくて、こういうルールで動いてください、というところもプロンプト経由でやってるのが、これまであまり見たことない世界でおもしろいと思う。
qiita.com