# SYSTEX Multi-agent 此專案建立了 multi-agent AI chatbot,主要包含兩個 agent:一個負責處理客戶自有資料的 Text-to-SQL agent,另一個則是使用檢索增強生成(RAG)技術處理專業知識的agent。整體 multi-agent 架構是使用 `langgraph` 完成。 ## 目錄 - [系統說明](#系統說明) - [使用方式](#使用方式) - [主要檔案說明](#主要檔案說明) - [VectorDB](#vectordb) ## 系統說明 此 multi-agent 系統旨在透過判斷使用者提問而選擇使用客戶自有資料庫或外部專業知識來源,回答使用者提問。系統包含兩個主要代理: 1. 客戶自有資料 agent:使用 **Text-to-SQL** 技術,用於處理客戶自有的結構化數據。 2. 外部專業知識 agent:使用 **RAG** 技術,並以 **FAISS** 實現 RAG 的 retriever 功能,用於從外部非結構化知識中檢索並生成答案。 ## 使用方式 啟動 app: ```bash conda activate llama3 python systex_app.py ``` FastAPI Link: https://cmm.ai:8989/docs 共有四個 API,如下: 1. `/agent`: 完整的 multi-agent 架構,包含自有數據與知識問答,使用的 LLM 是 GPT-4o-mini 2. `/knowledge`: 僅有知識問答,使用的 LLM 是 GPT-4o-mini 3. `/local_agents`: 完整的 multi-agent 架構,包含自有數據與知識問答,使用的 LLM 是 local LLM,根據不同任務選擇使用不同的 local LLM 4. `/history`: 所有問答紀錄(使用前三個 API 的問答紀錄) ## 主要檔案說明 - **`systex_app.py`**:API file。 - **`ai_agent.py`**:定義 multi-agent 架構,包括 Text-to-SQL 和 RAG agent。該架構使用 `langgraph` 框架建立。 - **`ai_agent_llama.py`**:同 `ai_agent.py`,改為使用 local LLM - **`faiss_index.py`**:處理 RAG 所需的 retriever 功能,用來處理文字向量資料。 - **`tex_to_sql_private.py`**:將自然語言轉換為 SQL query,用來處理客戶自有資料。 ## VectorDB - 如果 new_information 有更新可按以下步驟更新: ```bash cd file_loader/ python new_information_loader.py # tmux [systex] window 0 shutdown first python systex_app.py ```