輔助函數
儲存紀錄
每次執行akasha 的任何函數時,如果使用參數keep_logs=True,它都會保存此次運行的參數和結果到logs。每個運行都有一個timestamp,您可以使用 {obj_name}.timestamp_list 來查看它們,並使用它來找到您想要查看的logs。
您還可以將logs保存為 .txt 文件或 .json 文件。
範例
執行完get_response後,可以利用timestamp獲取log,也可以使用save_logs來保存log
| 1 | qa = akasha.Doc_QA(verbose=False, keep_logs=True, search_type="merge", max_input_tokens=3000,model="llama-gpu:model/chinese-alpaca-2-7b.Q5_K_S.gguf") | 

AiiDO
akasha也可以利用AiiDO來保存執行紀錄,您需要在 AiiDO 平台上創建一個項目。完成後,您將收到自動上傳實驗所需的所有參數。
在程序的同一目錄下創建一個 .env 文件,並貼上所有參數。
| 1 | ##.env file | 
在創建了 .env 文件之後,您可以使用 record_exp 來設置實驗名稱,它將自動記錄實驗指標和結果到 mlflow 服務器。
| 1 | import akasha | 
在你指定的實驗名稱中,可以看到不同次實驗的紀錄,每個紀錄的名稱是embedding, search type and model name的組合

你也可以直接比較不同次實驗的結果

翻譯器
helper模組中提供寫好的函數call_translator讓LLM協助翻譯回答,如以下的範例使用語言模型將中文的回答翻譯成英文。
| 1 | ak = akasha.Doc_QA(verbose=False, search_type="auto") | 
JSON 格式輸出器
helper模組中提供寫好的函數call_JSON_formatter讓LLM協助將回答轉成JSON格式。
| 1 | ak = akasha.Doc_QA(verbose=True,) | 
| 1 | {'學歷': 'xxx大學電資學士班四技', '經驗': '帶班導師xx文理補習班擔任補習班導師/管理人員', '專長': '計算機網路(協定)、資料庫系統、物件導向程式設計、C語言、Python、C++、Gitlab、Jenkins、Git、Linux(Bash shell、Ubuntu), '年資': '0-1年'} <class 'dict'> | 
call_model
若要呼叫語言模型,可以使用輔助函數call_model
| 1 | import akasha | 
call_stream_model
若要呼叫語言模型即時回答,可以使用輔助函數call_stream_model
| 1 | import akasha | 
call_batch_model
如果你有大量不需要連貫的推理需求,可以使用akasha.helper.call_batch_model 來進行批量推理來提升速度。
| 1 | def call_batch_model(model: LLM, prompt: List[str], | 
| 1 | import akasha | 
self-rag
實作self-rag,利用語言模型來找出與問題相關的文件片段。
| 1 | question = "LPWAN和5G的區別是什麼?" | 
計算token數量
Tokenizer.compute_tokens,此函數回傳該語言模型輸入的文字所需要的token數量
| 1 | 
 | 
根據文件產生關鍵句子
generate_keyword使用keybert,根據輸入的文件來產生相關的關鍵字,可用於建立embeddings
注意
akasha.generate_keyword需安裝keybert套件
| 1 | pip install keybert | 
| 1 | 
 | 






