跳至主要内容

· 閱讀時間約 3 分鐘
Yung-Hsiang Hu

台大曾亮軒同學和 NTU COOL 團隊於昨晚(7/17)釋出適合辨識台灣口音中文或是中英交雜音檔的 Cool-Whisper 模型,
Kuwa 透過簡單修改 Modelfile 即可直接套用。

訊息

2024/07/18 12:00 左右該模型因為隱私安全疑慮,暫時下架,
想使用這個模型的朋友可以持續關注該模型的 HuggingFace Hub
待重新上架即可使用。

建置步驟

  1. 參考Whisper 建置教學啟動 Whisper executor
    • Cool-Whisper 模型大小約為 1.5 GB,執行時最多會佔用約 10 GB 的 VRAM

· 閱讀時間約 2 分鐘
Yung-Hsiang Hu

Kuwa 的 RAG 應用 (DocQA/WebQA/DatabaseQA/SearchQA) 從 v0.3.1 版本起支援透過 Bot 的 modelfile 自訂進階參數, 可以讓單個 Executor 虛擬化成多個 RAG 應用,詳細參數說明及範例如下。

參數說明

以下參數內容為 v0.3.1 RAG應用的預設值。

所有 RAG 的共用參數

PARAMETER retriever_embedding_model "thenlper/gte-base-zh" # embedding model名稱
PARAMETER retriever_mmr_fetch_k 12 # MMR前取幾個chunk
PARAMETER retriever_mmr_k 6 # MMR取幾個chunk
PARAMETER retriever_chunk_size 512 # 每個chunk的長度,以字元為單位 (DatabaseQA不受限制)
PARAMETER retriever_chunk_overlap 128 # chunk間的交疊長度,以字元為單位 (DatabaseQA不受限制)
PARAMETER generator_model None # 指定哪個模型回答,None表示自動選擇
PARAMETER generator_limit 3072 # 整個prompt的長度限制,以字元為單位
PARAMETER display_hide_ref False # 不顯示參考資料

DocQA, WebQA, SearchQA 專用參數

PARAMETER crawler_user_agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36" # 爬蟲的UA字串

SearchQA 專用參數

PARAMETER search_advanced_params "" # 進階搜尋參數 (SearchQA專用)
PARAMETER search_num_url 3 # 取用幾個搜尋結果[1~10] (SearchQA專用)

DatabaseQA專用參數

PARAMETER retriever_database None # Executor本機的向量資料庫路徑

使用範例

假如要建立一個 DatabaseQA 知識庫並指定模型回答,可以建立一個 Bot,
基底模型選擇 DocQA,並填入以下 Modelfile。

PARAMETER generator_model "model_access_code" # 指定哪個模型回答,None表示自動選擇
PARAMETER generator_limit 3072 # 整個prompt的長度限制,以字元為單位
PARAMETER retriever_database "/path/to/local/database/on/executor" # Executor本機的向量資料庫路徑

· 閱讀時間約 1 分鐘
Yung-Hsiang Hu

Kuwa 設計上支援串接各種非 LLM 的 Tool,最簡單的 Tool 可以參考 src/executor/debug.py
以下是內容說明。

import os
import sys
import asyncio
import logging
import json
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

from kuwa.executor import LLMExecutor, Modelfile

logger = logging.getLogger(__name__)

class DebugExecutor(LLMExecutor):
def __init__(self):
super().__init__()

def extend_arguments(self, parser):
"""
Override this method to add custom command-line arguments.
"""
parser.add_argument('--delay', type=float, default=0.02, help='Inter-token delay')

def setup(self):
self.stop = False

async def llm_compute(self, history: list[dict], modelfile:Modelfile):
"""
Responsible for handling the requests, the input is chat history (in
OpenAI format) and parsed Modelfile (you can refer to
`genai-os/src/executor/src/kuwa/executor/modelfile.py`), it will return an
Asynchronous Generators to represent the output stream.
"""
try:
self.stop = False
for i in "".join([i['content'] for i in history]).strip():
yield i
if self.stop:
self.stop = False
break
await asyncio.sleep(modelfile.parameters.get("llm_delay", self.args.delay))
except Exception as e:
logger.exception("Error occurs during generation.")
yield str(e)
finally:
logger.debug("finished")

async def abort(self):
"""
This method is invoked when the user presses the interrupt generation button.
"""
self.stop = True
logger.debug("aborted")
return "Aborted"

if __name__ == "__main__":
executor = DebugExecutor()
executor.run()

· 閱讀時間約 5 分鐘
Yung-Hsiang Hu

Kuwa GenAI OS 是一個自由、開放、安全且注重隱私的開源系統,提供友善的生成式人工智慧使用介面,以及支援快速開發大語言模型應用的新世代生成式人工智慧編導系統。 Kuwa提供多語言與多模型的開發與部署之整體解決方案,可以讓個人及各行各業在地端筆電、伺服器或雲端使用生成式AI、開發應用,或開Store商店、對外提供服務。

Kuwa GenAI OS 的簡要說明如下:

使用環境

  1. 支援Windows、Linux、MacOS等多種作業系統,提供簡易安裝及軟體更新工具,包括Windows單一安裝執行檔、Linux自動安裝Script、Docker啟動腳本、預安裝好的VM虛擬主機等
  2. 支援多種硬體環境,從樹莓派、筆電、個人電腦、地端伺服器到虛擬主機、公私雲端,有無GPU加速器均可

使用介面

  1. 整合介面可以選取任何模型、知識庫或GenAI應用,隨意組合建立單一或群聊的聊天室
  2. 聊天室內可以自主編導,引用對話,指定群聊或直接單聊,切換連貫問答或單筆問答模式
  3. 隨時可以指揮介接,匯入提示腳本或上傳檔案,也可以匯出完整的聊天室對話劇本,直接輸出PDF、Doc/ODT、純文字等格式的檔案或分享網頁
  4. 支援文字、圖片生成,以及語音與視覺識別等多模態語言模型,並可突顯程式、Markdown等語法,或快速使用系統小工具

開發介面

  1. 使用者可以免寫程式,透過串接即有模型、知識庫或Bot應用,調整系統提示與參數、預置情境或建立提示模板,即可打造個人化或更強大的GenAI應用
  2. 使用者可以透過簡易拖拉的方式建立自有的知識庫,或匯入即有的向量資料庫,能同時利用多個知識庫進行GenAI應用
  3. 使用者可以自建及維護共用的Store應用商店,使用者間也可以共享Bot應用
  4. 可透過Ollama modelfile來調校啟用Kuwa擴充的模型及RAG進階功能

部署介面

  1. 支援多國語言,可以自行客製化畫面與訊息後,直接對外部署提供服務
  2. 可以串接即有帳號或提供邀請碼註冊,支援忘記密碼時可以用Email重設密碼
  3. 系統設定可修改系統公告、服務條款、警語等,或進行群組權限管理、使用者管理、模型管理等
  4. 儀錶板支援回饋管理、系統日誌管理、安全隱私管理、訊息查詢等

開發環境

  1. 整合多種生成式AI開源工具,包括Faiss, HuggingFace, Langchain, llama.cpp, Ollama, vLLM等,以及多種Embedding及Transformer相關套件,開發者可以下載、串接、開發多種多模態的大語言模型及應用
  2. RAG Toolchain內建DBQA、DocumentQA、WebQA及SearchQA等多種檢索擴增生成應用工具,可以串接搜尋引擎與自動爬蟲,或整合企業內即有資料庫或系統,方便開發進階的客製化應用
  3. 開放原始碼讓開發者可以根據自己的需求來打造自己想要的客製系統

· 閱讀時間約 5 分鐘
Yung-Hsiang Hu

Kuwa v0.3.1 新增了基於 Stable Diffusion 圖片生成模型的 Kuwa Painter,
可以輸入一段文字產生圖片,或是上傳一張圖片並搭上一段文字產生圖片。

· 閱讀時間約 2 分鐘
Yung-Hsiang Hu

Kuwa v0.3.1 初步支援了常見的視覺語言模型 (VLM), 這類模型不但可以輸入文字,還可以輸入圖片,並根據圖片內容回應使用者的指令。 本篇教學將帶您初步建立與使用 VLM。

· 閱讀時間約 6 分鐘
Yung-Hsiang Hu

Kuwa v0.3.1 加入了基於 Whisper 語音辨識模型的 Kuwa Speech Recognizer, 可以透過上傳錄音檔來產生逐字稿,支援時間戳記以及語者標示。

已知問題與限制

硬體需求

預設使用 Whisper medium 模型並關閉語者標示功能,若跑在GPU上所消耗 VRAM 如下表所示。

模型名稱參數量VRAM需求相對辨識速度
tiny39 M~1 GB~32x
base74 M~1 GB~16x
small244 M~2 GB~6x
medium769 M~5 GB~2x
large1550 M~10 GB1x
pyannote/speaker-diarization-3.1
(語者辨識)
-~3GB-

已知限制

  1. 目前無法自動偵測輸入語言,須手動指定
  2. 目前語者辨識模組因為多行程的關係,導致每次都會重新載入模型,拉長響應時間
  3. 多語者同時講話時容易誤判內容

· 閱讀時間約 3 分鐘
Yung-Hsiang Hu

即使地端沒有下載模型,也可以利用 Kuwa 串接雲端模型進行聊天及 RAG 應用。 本文將協助您了解如何申請 Google 免費的 Gemini Pro API Key ,以及如何在 Kuwa 進行設定。

申請 Gemini Pro API Key

  1. 前往 Google AI Studio - Get API key,點擊 "Get API key"

· 閱讀時間約 3 分鐘
Yung-Hsiang Hu

v0.3.0 新增了 RAG toolchain,讓使用者可以將本機文件資料夾透過簡易拖拉的方式,建立成自有的向量資料庫並進行問答,
本文將協助您了解如何透過 Kuwa 的 RAG toolchain 建立自有向量資料庫與相關 Bot。

Windows 版教學

警告
  1. 目前僅支援英文路徑的文件,請確保文件的路徑沒有中文
  2. 若先前已經安裝過 Kuwa,請將 C:\kuwa\GenAI OS\windows\packages\xpdf-tools-win-4.05 目錄刪除,並重新執行 C:\kuwa\GenAI OS\windows\build.bat
  1. 將單一文件或是文件目錄拖曳至桌面的 Create VectorDB 捷徑上,以這個腳本開啟。如果沒有這個捷徑的話可以將文件拖曳至 C:\kuwa\GenAI OS\windows\construct_rag.bat

· 閱讀時間約 3 分鐘
Yung-Hsiang Hu

v0.3.0 新增了 SearchQA,可透過串接 Google search 進行組織網站問答。
本文將協助您了解如何建置 SearchQA。

申請Google API key

警告

Google search API 目前每日免費額度為每日100次,請注意用量

  1. 前往 Google 程式化搜尋引擎建立頁面,填入以下資訊以建立自訂搜尋引擎