gpt_index を使ったプログラムと、それを試しているときに出るいろんなエラーの対策。
gpt_indexのプログラム
gpt_indexでは、データの入ったファイルを送ることで、そのファイルに書かれた情報をGPTの回答に役立てることができます。
特にGPT3の回答は精度が低かったり、新しい情報に対応できませんので、gpt indexを活用することでそういった問題を回避できます。
プログラム例は以下。
OPENAI_API_KEYはあらかじめOpenAIから取得しておきます。
URLは岸田さんのウィキです。
from gpt_index import GPTSimpleVectorIndex, SimpleWebPageReader
os.environ["OPENAI_API_KEY"] = "*********"
json_path = "kishida.json"
url = "https://ja.wikipedia.org/wiki/%E5%B2%B8%E7%94%B0%E6%96%87%E9%9B%84"
documents = SimpleWebPageReader(html_to_text=True).load_data([url])
index = GPTSimpleVectorIndex(documents)
index.save_to_disk(json_path)print(index.query("誕生日はいつ?"))
実行するとでました...が1957年7月29日生まれなので違っていました。
上記プログラムではindexを保存しているので、次回からは作成されたインデックス(Json)を指定すればOK.毎度ネットにアクセスしなくてもいいです。
json_path = "kishida.json"
index = GPTSimpleVectorIndex.load_from_disk(json_path)
gpt_indexでエラー
No module named 'gpt_index'
from gpt_index import GPTSimpleVectorIndex, QueryMode, SimpleWebPageReader
でのエラー。
対策として以下バージョンでPIPインストールしておきます。
pip install gpt_index==0.4.15
pip install langchain==0.0.96
ModuleNotFoundError: No module named 'gpt_index' · Issue #1863 · jerryjliu/llama_index · GitHub
データファイルが開かない
ファイル名を直接指定するのではなく、ファイルの入っているフォルダ名までを指定します。複数ファイルに対応させるため?
documents = SimpleDirectoryReader(r'C:/py/data').load_data()
ValueError: A single term is larger than the allowed chunk size.
データ用のファイルにおいて、日本語がスペースで分割されていないため、扱うデータの長さが大きすぎるためのエラー。
対策として、「。」や「、」のあとに半角スペースをいれることで回避可能。
また、データをとりあえず英文にして動作するか先に試すのもよさそう。
LlamaIndex : ChatGPTで独自のデータに対して質問するためのフレームワーク | by Kazuki Kyakuno | axinc | Medium
INFO:numexpr.utils:Note: NumExpr detected 20 cores but "NUMEXPR_MAX_THREADS" not set, so enforcing safe limit of 8. INFO:numexpr.utils:NumExpr defaulting to 8 threads.
以下のように変数をセットすれば出力が出なくなります。
import os
os.environ['NUMEXPR_MAX_THREADS'] = '4'
os.environ['NUMEXPR_NUM_THREADS'] = '2'