epam/ai-dial-chat

A default UI for AI DIAL

什麼是 AI DIAL Chat

AI DIAL Chat 是一個以 Nx 單體儲存庫(monorepo)建構的 全棧聊天應用程式。它整合了現代化的 React 前端與 NestJS 後端,並連接到 EPAM 的 AI DIAL Core(公司的大語言模型服務)。此儲存庫是一個真實且可投入生產的程式碼基礎,而非僅僅是一連串連結或教學範例。


核心組件

組件 技術 功能
前端(apps/chat) React 19, TypeScript 6, Vite, Tailwind CSS, i18next 用戶介面 – 聊天視窗、訊息編輯器、側邊欄、主題支援、國際化。
後端(apps/chat‑api) NestJS 11, TypeScript 6, Express 5, Swagger/OpenAPI REST API,負責使用者驗證、將請求轉發至 DIAL Core、提供靜態資源,並支援 Swagger 文件。
覆蓋層沙盒(apps/chat‑overlay‑sandbox) Vite + 簡易主頁 測試工具,可讓您將聊天嵌入 iframe(@epam/ai-dial-chat-overlay)並測試 postMessage 協定。
共用函式庫(libs/…) 私有工作區套件(Nx) UI 原語、領域模型、OpenAPI 用戶端、目錄 UI、訊息清單、附件處理、側邊欄、主題設定等。所有元件皆拆分為可重用的函式庫,而非單一巨石式結構。
OpenAPI / Postman 工具 npm run openapi, npm run postman 從 NestJS 控制器產生類型化 API 用戶端(libs/chat-api-client)與 Postman 清單。

各組件如何協同運作

  1. 使用者開啟 React 應用程式http://localhost:4207)。該應用程式僅與 聊天 APIhttp://localhost:5000/api)通訊。
  2. 聊天 API 驗證請求(支援 OIDC 提供者,如 Keycloak、Auth0、Google 等),並將與聊天相關的請求轉發至 EPAM AI DIAL Core – 即實際產生回應的大語言模型服務。
  3. 回應透過 API 流回 React UI,並使用函式庫元件(訊息氣泡、引用、附件預覽等)進行渲染。
  4. 在嵌入情境中,主頁可載入 覆蓋層 套件作為 iframe。覆蓋層透過明確定義的 postMessage 握手協定(INIT_READY → READY → READY_TO_INTERACT)與主頁通訊。

快速入門(快速概要)

# 1. 克隆並安裝相依套件
git clone <repo‑url>
cd ai-dial-chat
npm install

# 2. 複製環境變數範本並填入至少一個 OIDC 提供者
cp apps/chat-api/.env.template .env.local
# 編輯 .env.local → 設定 AUTH_KEYCLOAK_CLIENT_ID, AUTH_KEYCLOAK_SECRET 等

# 3. 同時啟動前後端
npm run start:all   # 或在不同終端機中分別執行 npm run start 與 npm run start:api

哪些人會使用它?

  • 產品團隊:需要一個已準備好的聊天介面,並與 EPAM 的 DIAL 大語言模型服務整合。
  • 開發者:尋找全棧 AI 聊天應用的參考實作 – 單體儲存庫架構、Nx 工具與產生的 OpenAPI 用戶端皆為可重用的模式。
  • 企業:希望透過覆蓋層套件將聊天嵌入自有入口網站。

值得注意的功能

  • 模組化函式庫架構 – UI 元件(編輯器、訊息清單、目錄、側邊欄等)皆為獨立套件,方便重新設計或替換。
  • 國際化 – 支援 i18next、RTL 排版,以及提供 CSS 自訂屬性的主題主機。
  • 多種身分驗證提供者 – 內建支援 Auth0、Azure AD、Keycloak、Google、Okta、Cognito 等。
  • Swagger/OpenAPI – 自動產生文件與類型化用戶端(libs/chat-api-client)。
  • 覆蓋層整合 – 專用函式庫(@epam/ai-dial-chat-overlay)與沙盒環境,支援快速測試。
  • Nx 單體儲存庫工具 – 提供服務、建構、測試、檢查與專案相依關係可視化的指令。

更多資訊來源

  • 架構圖 – 在 README 的 Architecture 章節中。
  • 遷移指南 – 從舊版 development-legacy 分支遷移的說明。
  • 函式庫 README – 每個 libs/* 資料夾皆有獨立文件。
  • Docs 資料夾 – 詳細指南,包含主題自訂、覆蓋層遷移與 API 規格說明。

TL;DR

AI DIAL Chat 是一個真實、可投入生產的聊天平台,使用 React 與 NestJS 建構,緊密整合 EPAM 的 AI DIAL Core。它以模組化 Nx 單體儲存庫組織,包含完整的驗證支援、OpenAPI 工具與可嵌入的 iframe 覆蓋層元件,是任何人開發 AI 驅動對話介面的穩固起點。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案