[AI] LlamaIndexアプリ製作 その8 例外処理

[M1 Mac, Monterey 12.6.3, Python 3.10.4]

LlamaIndexアプリが簡単には落ちないよう例外処理を強化しました。

def makeIDX(self):
    # インデックスの作成および保存
    llm_predictor = LLMPredictor(llm=OpenAI(temperature=0, model_name="text-embedding-ada-002"))
    service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor)
    
    data_path = self.input.text()
    data_path2 = data_path.replace("'", "") # 拡張子判定用
    data_path3 = Path(data_path2) # loader用

    if data_path2.endswith('.csv'):
        SimpleCSVReader = download_loader("SimpleCSVReader")
        loader = SimpleCSVReader()
    elif data_path2.endswith('.pdf'):
        PDFReader = download_loader("PDFReader")
        loader = PDFReader()
    else:
        print('ファイルがcsv,pdfではありません')
        self.output.setText("ファイルがcsv,pdfではありません")
        self.box.setStyleSheet('background-color: #ff00ff')
        return

    try:
        nodes = loader.load_data(file=data_path3)
    except Exception as e:
        print('エラーが発生しました:', e)
        self.output.setText(str(e))
        self.box.setStyleSheet('background-color: #ff00ff')
        return
    else:
        self.box.setStyleSheet('background-color: #00ffff')

    index = GPTSimpleVectorIndex.from_documents(nodes, service_context=service_context)
    
    now = datetime.datetime.now()
    formatted_time = now.strftime('%y%m%d_%H%M%S')

    index_file = "/AI/LlamaIndex/index/" + formatted_time + "_index.json"
    index.save_to_disk(index_file)
    
    self.input2.setText(index_file)
    self.idxBtn2.click()