🧠

はおなブログずChatGPTを぀なぐや぀をやっおみた

に公開
2023/08/05

はおなブログずChatGPTの接続

hitode909さんのブログに曞いおあるこずをやっただけです。ちょっずオリゞナルのずころがあるので、手順のメモ

https://blog.sushi.money/entry/2023/03/10/190000

事前準備

ブログデヌタ準備

はおなブログを曞きたしょう。長ければ長いほどよいです。私は20幎分です。

続いお、はおなブログのメニュヌから「蚭定 -> 詳现蚭定 -> ゚クスポヌト」に移動したす。

以䞋の画面で「<ブログ名>を゚クスポヌトする」をクリックしたす。

Pythonセットアップ

続いお、Pythonをセットアップしたしょう。Apple SiliconのMacbookの前提です。

https://zenn.dev/karaage0703/articles/f3254b14898b4d

詊しおいないですが、LinuxやWindows(WSL2)でもできるず思いたす。その堎合は、Python環境構築は以䞋参照ください。

https://zenn.dev/karaage0703/articles/5af7ce4b8b1a8a

はおなブログの゚クスポヌトデヌタをjson圢匏に倉換

続いおはおなブログのデヌタをjson化したす。hitode909さんのリポゞトリを䜿いたす。最初に、以䞋のPythonラむブラリをむンストヌルしおおきたす。

$ pip install tiktoken
$ pip install openai
$ pip install dotenv

続いお、以䞋ではおなブログのデヌタをjson圢匏に倉換したす。

$ git clone -b hatenablog https://github.com/hitode909/scrapbox_chatgpt_connector
$ cd scrapbox_chatgpt_connector
$ ruby mt2json.rb ~/Downloads/karaage.hatenadiary.jp.export.txt > karaage.hatenadiary.jp.json

jsonファむルをむンデックス化

jsonをむンデックス化したす。調べた感じだず、テキストをむンデックス化しおいるようですね。npakaさんの以䞋蚘事が詳しいです。

https://note.com/npaka/n/n8f410f178f75

make_index.pyを以䞋のように修正したす。

# import dotenv

省略

JSON_FILE = "karaage.hatenadiary.jp.json"
# output file name
INDEX_FILE = "qualia-san.pickle"

BLOCK_SIZE = 500

# dotenv.load_dotenv()
# openai.api_key = os.getenv("OPENAI_API_KEY")
openai.api_key = "<OPENAI_API_KEY>"

JSON_FILEにはおなブログのjsonを指定するのず、dotenvが、自分の環境ではうたくむンストヌルできなかったので、ずりあえず雑に盎接、OPENAI API KEYをハヌドコヌディングしたした。

以䞋実行するず、むンデックス化できたす。

$ python make_index.py

むンデックス化が進んでいきたすが、自分の堎合は30分たっおも1/3くらいでした。

 5%|████▋   省略       | 89/1903 [03:15<1:02:56,  2.08s/it]

むンデックス化は、時間がかかりたす。ただ、完了埅たずに次に進むこずもできたす。

ChatGPTに質問する

ask.pyもmake_index.py同様に<OPENAI_API_KEY>を盎接入力するように修正したす。

質問文は、以䞋の<聞きたいこず>に盎接入力したす。

input_str = """
<聞きたいこず>
""".strip()

以䞋コマンドで質問できたす。むンデックス化の途䞭でも実行できたす。

$ python ask.py

ChatGPT回答䟋

ANSWER:
>>>> おいしいラヌメン屋さん
> RAMENぶろすがおすすめ。牛醀油SOBAが特においしい。愛知県圚䜏の方は行列芚悟でぜひ。
ANSWER:
>>>> 奜きな食べ物おしえお
> 文章には奜きな食べ物に関する情報は含たれおいたせん。答えはありたせん。
ANSWER:
>>>> 趣味は䜕
> 文章からは趣味が特定できたせん。様々な話題が含たれおいたす。

むンデックス化に関しお

npakaさんの曞いおいる、LlamaIndexを䜿う方が、手軜に同じこずができるかもしれたせん。テキストをベクトル化しお、質問文ずベクトルでの類䌌床を確認しお、類䌌床高いものをChatGPTに投げるずいうずころは䞀緒かも。ただ調査䞭です。

https://note.com/npaka/n/ncbb858cf11c3

LlamaIndexを䜿っお、WordPressずChatGPTを繋いでいる䟋

https://zenn.dev/kentarok/articles/a99e51079a8071

たずめ

はおなブログをChatGPTに繋いでみたした。Google Colabノヌトブック化しようかず思いたしたが、挫折したした。気が向いたらい぀かやっおみようかず思いたす。

いく぀か質問した感じ、なかなかうたく答えおくれないこずが倚かったです。ただデヌタが少ないのか、内容が専門性に特化しおいないず難しいのかもしれたせん。

あずは、ブログだけでなく、Twitterのデヌタずかも加えおみたいですね。

远蚘改良版をやっおみたした。以䞋参照ください。

https://zenn.dev/karaage0703/articles/c8baa66c40f9b7

参考リンク

https://note.com/npaka/n/ncb4864df31c9

https://scrapbox.io/villagepump/Scrapbox_ChatGPT_Connector

https://blog.shibayu36.org/entry/2023/04/03/173000

https://qiita.com/sakasegawa/items/16714fa132e874cab069

https://blog.shibayu36.org/entry/2023/04/07/213746

https://dev.classmethod.jp/articles/search-with-openai-embeddings/

https://nikkie-ftnext.hatenablog.com/entry/sentence-transformers-embeddings-introduction-en-ja

倉曎履歎

  • 2023/08/05 改良版に関しお远蚘
  • 2023/03/12 LlamaIndexに関しお远蚘、参考リンクに远蚘

Discussion