跳至主要内容

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

Kuwa GenAI OS 是一個自由、開放、安全且注重隱私的開源人工智慧編導平台,我們提供友善的生成式人工智慧使用介面,讓使用者可以輕易的使用各種人工智慧模型、代理人與應用,也可以透過Kuwa的編導系統,以No-code或Low-code的方式輕易結合不同模型的長處,協助使用者快速完成更複雜的任務。 Kuwa提供多語言與多模型的開發與部署之整體解決方案,可以讓個人及各行各業在地端筆電、伺服器或雲端使用生成式AI、開發應用,或開Store商店、對外提供服務。

在台灣的西拉雅語中,Kuwa是人們聚會、討論與決策的公共集會場所。

Kuwa GenAI OS 的功能特色簡要說明如下:

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

Kuwa v0.3.4 提供了自訂第三方 API 金鑰功能,可以串接 Gemini 與 ChatGPT 以外的 API。
大多數使用者較難在地端運作參數量較大的模型,如 Llama3.1 70B 等大模型,
而 Groq 提供了免費雲端 API 讓使用者可以使用這些大模型。
本篇文章將說明如何在 Kuwa v0.3.4 上串接 Groq API。

申請 Groq API Key​

  1. 登入 Groq Cloud

  1. 新增 API 金鑰

填入方便記憶的 API 金鑰名稱,並複製產生的 API 金鑰。
注意保存 API 金鑰,這個對話框消失後不會再顯示金鑰。



設定 Kuwa​

  1. 填入 API Key

請在 "使用者設定 > API管理 > 自訂第三方 API 金鑰" 中填入前一步申請的金鑰

  1. 使用模型

v0.3.4 預設有一名為 "Llama3.1 70B (Groq API)" 的 Bot
填入 Groq API 金鑰後即可使用該模型

· 閱讀時間約 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. 多語者同時講話時容易誤判內容