akasha-core

@akasha-terminal-2024

akasha

Public team

Joined on Jan 25, 2024

  • (toy rag1) image (toy rag2) image streaming image (toy setting1) image
     Like  Bookmark
  •  Like  Bookmark
  • 儲存紀錄 每次執行akasha 的任何函數時,如果使用參數keep_logs=True,它都會保存此次運行的參數和結果到logs。每個運行都有一個timestamp,您可以使用 {obj_name}.timestamp_list 來查看它們,並使用它來找到您想要查看的logs。 您還可以將logs保存為 .txt 文件或 .json 文件。 範例 執行完get_response後,可以利用timestamp獲取log,也可以使用save_logs來保存log qa = akasha.Doc_QA(verbose=False, keep_logs=True, search_type="merge", max_doc_len=1500,model="llama-gpu:model/chinese-alpaca-2-7b.Q5_K_S.gguf") query1 = "五軸是什麼" qa.get_response(doc_path="./doc/mic/", prompt = query1)
     Like  Bookmark
  • 08/08(0.8.53) Dock_QA 新增stream參數,若stream=True,則回傳值為generator (見 get_response) get_response 和 ask_self 新增history_messages參數來傳遞聊天紀錄訊息 (見get_response) get_response 可傳入dbs物件,避免重複load chromadb (見 get_response) prompt_format_type參數新增"chat_gpt"和"chat_mistral",用來傳遞非str type輸入給語言模型 如([{"role":current_role, "content":prompt}]), (見 提示格式) 輔助函數新增 call_model, call_batch_model, call_stream_model (見 輔助函數) 輔助函數新增 self-rag (見 輔助函數) 語言模型物件(LLM)和嵌入模型物件(Embeddings)可直接傳入Doc_QA, Eval,和 Summary,避免重複宣告(見 語言模型 嵌入模型) 內建 FAST API,可使用 "akasha api (--port port --host host --workers num_of_workers) 啟動 (見 FAST API)
     Like  Bookmark
  • 更新 2024 updates 安裝&設定 安裝&使用 設定 API Key </br> </br> 文檔問答
     Like 2 Bookmark
  • FAST API akasha 提供get_response, ask_self, ask_whole_file, get_summary的api server 啟動 akasha api (–port {port} –host {host} –workers {num_of_workers}) Example import requests import os
     Like  Bookmark
  • 選擇不同嵌入模型 使用參數embeddings便可以選擇不同的嵌入模型,預設是openai:text-embedding-ada-002. 範例 1. openai import akasha akasha.Doc_QA() ak.get_response(dir_path, prompt, embeddings="openai:text-embedding-ada-002",)
     Like  Bookmark
  • 選擇不同語言模型 使用參數model便可以選擇不同的語言模型,預設是openai:gpt-3.5-turbo. 範例 1. openai import akasha akasha.Doc_QA() ak.get_response(dir_path, prompt,
     Like  Bookmark
  • get_response 使用者輸入一個或多個文件(.pdf, .docx, .txt)資料夾,此函數可以讓語言模型根據搜尋到的文件回答問題。藉由使用者的問題和文件庫搜尋到知識片段,可以不用將整份文件輸入給模型,就讓語言模型正確回答問題。 example import akasha qa = akasha.Doc_QA( verbose=False, search_type="svm", model="openai:gpt-3.5-turbo")
     Like  Bookmark
  • 提示格式 根據使用的語言模型不同,使用不同的格式來下指令可以得到更好的結果,akasha目前提供 gpt, llama, chat_gpt, chat_mistral等格式 gpt prompt_format = System: {system_prompt} \n\n {history_messages} \n\n Human: {prompt} llama prompt_format = [INST] <<SYS>> {system_prompt} \n\n <<SYS>> {history_messages} \n\n {prompt} [\INST]
     Like  Bookmark
  • call_stream_model 在輔助函數中,若LLM模型為若為openai, huggingface, remote類模型,可以使用akasha.call_stream_model()來得到流輸出 import akasha prompt = "say something." model_obj = akasha.handle_model("openai:gpt-3.5-turbo", False, 0.0) streaming = akasha.call_stream_model(model_obj, prompt) for s in streaming: print(s)
     Like  Bookmark
  • 批量推理 如果你有大量不需要連貫的推理需求,可以使用akasha.helper.call_batch_model 來進行批量推理來提升速度。 call_batch_model def call_batch_model(model: LLM, prompt: List[str], system_prompt: Union[List[str], str] = "") -> List[str]: import akasha model_obj = akasha.helper.handle_model("openai:gpt-3.5-turbo", False, 0.0) # this prompt ask LLM to response 'yes' or 'no' if the document segment is relevant to the user question or not.
     Like  Bookmark
  • 代理 使用代理(agent)可以賦予語言模型其他能力,以便完成你下的指令,例如提供文件编辑、google搜尋的工具,便可以使語言模型提供更準確地回答,也可以請他幫忙儲存或刪除文件。 範例 在範例1中,創建了一個可以讓使用者輸入文字的工具,也提供給代理一個將文字儲存成json檔案的工具。創建代理後,我們指示它詢問用戶問題,並將結果儲存到default.json中。 def input_func(question: str): response = input(question) return str({"question": question, "answer": response})
     Like  Bookmark
  • Chat Chat與Regular Consult相似,會根據提供的文檔進行問答,但同時Chat也會記住使用者之前的問答互動,方便使用者進行追問。 image 若要進行與之前不相關、新的提問,可以點選右邊按紐Clear History清除紀錄。 Regular Consult 創建完Knowledge後,便可以利用它來做文檔問答,來到Consult頁面,選擇Knowledge後,便可以輸入問題,按下crtl+Enter後便可以提交問題給語言模型等待回應。
     Like  Bookmark
  • pip 安裝 下載或git clone akasha ui-dev專案分支到你的資料夾​​​​$ git clone --branch ui-dev https://github.com/iii-org/akasha.git ​​​​$ cd akasha 安裝所需python套件​​​​$ python -m pip install -r requirements.txt 啟動fast api server 和 streamlit 介面​​​​$ nohup /bin/bash -c "uvicorn api:app &" && streamlit run main.py image
     Like  Bookmark
  • 自動產生問題 如果您不想自己創建問題集來評估當前參數的性能,您可以使用 eval.auto_create_questionset 功能自動生成一個包含參考答案的問題集。隨後,您可以使用 eval.auto_evaluation 獲取評估指標,如 Bert_score、Rouge 和 LLM_score(對於問答問題集),以及單選問題集的正確率。這些分數範圍從 0 到 1,較高的值表示生成的回答與參考答案更接近。 如範例,以下創建了一個名為 'mic_essay.txt' 的問題集文本文件,其中包含十個問題和參考答案。每個問題都是從 'doc/mic/' 目錄中給定文檔的內容段落中隨機生成的。然後,您可以使用該問題集文本文件來評估要測試的參數的性能。 import akasha.eval as eval eva = eval.Model_Eval(question_style="essay", search_type='merge',\ model="openai:gpt-3.5-turbo", embeddings="openai:text-embedding-ada-002",record_exp="exp_mic_auto_questionset")
     Like  Bookmark
  • Find Optimum Combination 若要測試所有可用的組合並找到最佳參數,您可以使用 optimum_combination 函數。您可以提供不同的嵌入模型、文件段落大小、語言模型、文件搜索方法以及最相關文檔的數量(topK),該函數將測試所有組合以找到根據給定的問題集和文檔的最佳組合。請注意,最佳得分組合是最高正確率組合,而最佳性價比組合是需要最少token以獲得正確答案的組合。 範例 import akasha.eval as eval import os from dotenv import load_dotenv load_dotenv() os.environ["OPENAI_API_KEY"] = "your openAI key"
     Like  Bookmark
  • ask_agent 如果你想詢問較複雜的問題,使用ask_agent,語言模型會將你的問題拆解來提供較好的回答。 example ak = akasha.Doc_QA( verbose=True, chunk_size=500, model="openai:gpt-3.5-turbo", ) res = ak.ask_agent(
     Like  Bookmark
  • 安裝WSL 如果你是linux 使用者可以跳過這個步驟,windows使用者建議安裝Windows子系統(WSL),直接在Windows 執行Linux,請先確認windows版本是 Windows 10 版本 2004(組建 19041 和更新版本)或 Windows 11以上的版本才能安裝WSL。 先搜尋PowerShell,以系統管理員開啟 PowerShell執行WSL並安裝linux ubuntu,安裝完畢後要重新開機。 install wsl 安裝WSL並且安裝linux ubuntu。 $ wsl --install 安裝完畢,重新開機
     Like  Bookmark
  • ask_whole_file 如果你想詢問單個檔案的內容,且該文件檔不長,在語言模型的窗口大小內,你可以使用ask_whole_file將整個文件的內容給語言模型做為參考。 example import akasha ak = akasha.Doc_QA( search_type="merge", verbose=True, max_doc_len=15000,
     Like  Bookmark