[M1 Mac, Monterey 12.6.3, Python 3.10.4]
これまでGoogle Colabで検証していましたが、VSCodeに環境を移しました。
インデックス化するファイルさえあれば、GPT-3.5を手軽に専門ボット化できるようになりました。
ただし、この方法ではプロンプトを箇条書きにするなど分かりやすい構成にすることができず密度の高い質問が出来ないため、検証は一旦ストップすることにしました。
色々検討すればするほど、私の中でgpt-3.5-turboチャットボットの優位性が揺るがなくなっています。OpenAIのEmbeddingsについては開発がかなり遅れているように見受けられました。公開内容を制限している可能性もありますね。
import os, logging, sys
from pathlib import Path
from llama_index import download_loader,LLMPredictor, GPTSimpleVectorIndex, ServiceContext
from langchain import OpenAI
# APIキーを環境変数から取得
apiKey = os.getenv("CHATGPT_API_KEY")
os.environ["OPENAI_API_KEY"] = apiKey
# ログレベルの設定(DEBUG)
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG, force=True)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
# インデックスの作成および保存
SimpleCSVReader = download_loader("SimpleCSVReader")
llm_predictor = LLMPredictor(llm=OpenAI(temperature=0, model_name="text-embedding-ada-002"))
service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor)
csv_path = Path('fine_tuning_data.csv')
loader = SimpleCSVReader()
documents = loader.load_data(file=csv_path)
index = GPTSimpleVectorIndex.from_documents(documents, service_context=service_context)
index.save_to_disk('fine_tuning_data.json')
# インデックスの読込
llm_predictor = LLMPredictor(llm=OpenAI(temperature=0, model_name="text-davinci-003", max_tokens=3500))
service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor)
index = GPTSimpleVectorIndex.load_from_disk(save_path="fine_tuning_data.json", service_context=service_context)
# 質問(Ctrl+cで終了)
while True :
print("質問を入力して下さい")
question = input()
print(index.query(question))