chat-ui 從 ui.inference.sh 提供一套可直接使用的 React/Next.js 聊天介面元件,包含聊天容器、訊息列、輸入框、輸入中指示器及頭像。它協助開發者快速實作現代聊天與 AI 助理介面,並支援訊息串流與輸入處理。

Stars0
收藏0
評論0
加入時間2026年3月27日
分類前端开发
安裝指令
npx skills add https://github.com/inferen-sh/skills --skill chat-ui
總覽

概觀

什麼是 chat-ui?

chat-ui 是一組專為 React 與 Next.js 準備的聊天介面積木,來源為 ui.inference.sh。它將聊天容器、訊息項目、輸入框、輸入中指示器與頭像等元件打包成可供正式上線使用的組件,讓你不用從零開始,就能組裝出完整的聊天或 AI 助理前端。

這些元件以 shadcn 風格的 blocks 形式提供,你只要將它們加入專案,就能在熟悉且可客製的開發體驗下,讓版面與互動中重複繁瑣的聊天 UI 部分自動被處理好。

主要功能一覽

  • 聊天容器版面 – 預先設計好的 <ChatContainer> 元件,用來組構完整聊天區域。
  • 訊息渲染 – 使用 <ChatMessage> 顯示使用者與助理訊息,支援角色與內容設定。
  • 聊天輸入處理<ChatInput> 用來接收使用者輸入文字、處理送出動作,以及管理 disabled/loading 狀態。
  • 輸入中指示器<TypingIndicator> 在助理回應期間提供視覺回饋。
  • 適合串流 – 訊息列表與容器模式設計上適用於串流與逐步回應的場景。
  • 專注 React/Next.js – 為現代 React 與 Next.js 應用打造,符合常見前端開發模式。

chat-ui 適合哪些人?

chat-ui 主要適用於:

  • 前端開發者:在既有 API 之上實作聊天或 AI 助理介面的開發人員。
  • 產品團隊:希望擁有精緻聊天版面,但不想花好幾天綁 UI 的團隊。
  • Next.js 與 React 開發者:習慣使用 shadcn-style UI blocks,並希望聊天元件也能維持一致風格的開發者。

如果你正在整合語言模型、客服機器人或內部工具,並仰賴對話式介面,chat-ui 技能可以協助你在保留邏輯、樣式與資料完全掌控權的前提下,快速打造專業的前端介面。

chat-ui 解決的問題

實作聊天前端通常會一再重複建構相同的元件:

  • 建出具回應式設計的聊天版面
  • 區分並呈現使用者與助理訊息的不同樣式
  • 處理訊息送出、禁用狀態與載入狀態
  • 顯示輸入中指示器並維持捲動行為

chat-ui 透過以下方式處理 UI 這一段:

  • 提供 容器、訊息、輸入與輸入中指示器 等預先定義的元件
  • 提供一致的 API 介面,便於串接你的後端或 AI 服務
  • 提供符合現代設計預期的起始點,同時保留高度客製空間

你仍完全掌握商業邏輯與資料流程,只是可以跳過大量樣板式的 UI 工程。

何時適合使用 chat-ui

在以下情況很適合使用 chat-ui:

  • 你正在開發 React 或 Next.js 應用程式。
  • 你希望有 可直接使用的聊天元件,能與既有的 state 與 API 呼叫整合。
  • 你已經有,或計畫建立一個 聊天或 AI 助理後端,需要一層前端介面。
  • 你偏好 以組件為中心的掌控度,而不是嵌入一個完整的 chat SaaS 小工具。

特別適用於:

  • 嵌入在儀表板中的 AI copilot 或助理
  • 客戶支援或內部服務台工具
  • 具對話介面的開發者工具
  • 快速原型開發新的聊天產品

何時 chat-ui 可能不適合

以下情況 chat-ui 可能不是最佳選擇:

  • 沒有使用 React 或 Next.js。這些元件是為 React 生態系打造的。
  • 你需要的是 託管式、一插即用的聊天小工具,包含後端、驗證與儲存功能。chat-ui 專注在前端 UI。
  • 你希望使用 不偏向任何設計系統、且不採用 shadcn 風格的實作。

這類需求可考慮選擇一般 UI 函式庫或一站式聊天服務供應商。

使用方式

安裝前準備

在安裝 chat-ui 之前,你應該先具備:

  • 已建立好的 React 或 Next.js 專案
  • 已安裝 Node.js 與 npm(或相容工具)
  • 對於匯入與使用 React components 有基本熟悉度

chat-ui 元件透過 ui.inference.sh 上的 shadcn-style registry 發佈,你可以用一行 CLI 指令將它們加入你的專案。

安裝 chat-ui 元件

在前端專案的根目錄執行以下指令以加入聊天元件:

# Install chat components
npx shadcn@latest add https://ui.inference.sh/r/chat.json
``

此指令會從 ui.inference.sh registry 把與聊天相關的 blocks 拉到你的專案中。通常會在類似 `@/registry/blocks/chat/` 的路徑下建立對應項目(如範例中的 import 路徑所示)。

安裝完成後,確認專案中已包含以下檔案,例如:
- `chat-container.tsx`
- `chat-message.tsx`
- `chat-input.tsx`
- `typing-indicator.tsx`

實際檔名會依你的 shadcn 設定有所差異,但匯入寫法會依照下方範例的模式進行。

### 核心元件與基本用法

#### 1. ChatContainer – 整體版面配置
`ChatContainer` 負責包住整個對話區域,決定訊息與輸入框如何排列。

```tsx
import { ChatContainer } from "@/registry/blocks/chat/chat-container"

function Chat() {
  return (
    <ChatContainer>
      {/* messages and input go here */}
    </ChatContainer>
  )
}

你可以在 ChatContainer 裡面放入訊息列表、輸入框與其他 UI 元素,把它視為整個聊天體驗的基礎版面元件。

2. ChatMessage – 呈現使用者與助理訊息

ChatMessage 用來顯示單則訊息,並區分 userassistant 等角色。

import { ChatMessage } from "@/registry/blocks/chat/chat-message"

function Messages({ messages }) {
  return (
    <div>
      {messages.map((message) => (
        <ChatMessage
          key={message.id}
          role={message.role}
          content={message.content}
        />
      ))}
    </div>
  )
}

你負責管理 messages 陣列,並將每筆訊息的 rolecontent 傳給 ChatMessage。這樣 UI 就能與你的後端或 AI 模型狀態保持同步。

3. ChatInput – 接收並送出使用者訊息

ChatInput 提供文字輸入區與送出處理。

import { ChatInput } from "@/registry/blocks/chat/chat-input"

function ChatBox({ onSend, isLoading }) {
  return (
    <ChatInput
      onSubmit={(message) => onSend(message)}
      placeholder="Type a message..."
      disabled={isLoading}
    />
  )
}

使用 onSubmit callback 與你的送訊邏輯串接。disabled prop 很適合在等待回應期間使用,尤其是當你從 AI 模型串流 tokens 時。

4. TypingIndicator – 顯示助理正在回覆

TypingIndicator 讓使用者知道助理或對方正在輸入回覆。

import { TypingIndicator } from "@/registry/blocks/chat/typing-indicator"

function Footer({ isTyping }) {
  return <>{isTyping && <TypingIndicator />}</>
}

依據你的應用狀態設定 isTyping,例如等待伺服器回應或串流完成的期間。

全體串接示例:簡單聊天流程

以下示範如何在 React 或 Next.js 頁面中整合這些元件:

import { useState } from "react"
import { ChatContainer } from "@/registry/blocks/chat/chat-container"
import { ChatMessage } from "@/registry/blocks/chat/chat-message"
import { ChatInput } from "@/registry/blocks/chat/chat-input"
import { TypingIndicator } from "@/registry/blocks/chat/typing-indicator"

export function ChatPage() {
  const [messages, setMessages] = useState([])
  const [isTyping, setIsTyping] = useState(false)

  async function handleSend(userMessage) {
    const nextMessages = [
      ...messages,
      { id: Date.now(), role: "user", content: userMessage },
    ]
    setMessages(nextMessages)
    setIsTyping(true)

    // Call your backend or AI service here
    const reply = await fetch("/api/chat", {
      method: "POST",
      body: JSON.stringify({ messages: nextMessages }),
    }).then((res) => res.json())

    setMessages((prev) => [
      ...prev,
      { id: Date.now() + 1, role: "assistant", content: reply.content },
    ])
    setIsTyping(false)
  }

  return (
    <ChatContainer>
      <div>
        {messages.map((message) => (
          <ChatMessage
            key={message.id}
            role={message.role}
            content={message.content}
          />
        ))}
      </div>

      <ChatInput
        onSubmit={handleSend}
        placeholder="Ask me anything..."
        disabled={isTyping}
      />

      {isTyping && <TypingIndicator />}
    </ChatContainer>
  )
}

這個範例展示了 chat-ui 專注在 UI 基礎元件,而你則負責狀態管理與 API 串接。

客製化與樣式調整

由於 chat-ui 元件以 shadcn-style blocks 的形式從 ui.inference.sh 匯入,你通常可以:

  • 在本地 檢視並編輯元件原始碼,微調版面、色彩或字型。
  • 與既有的 設計 tokensTailwind CSS 設定整合。
  • 透過額外的 props 或 wrapper 擴充元件,加入頭像、時間戳記或訊息動作等功能。

安裝指令執行完後,檢查專案中產生的檔案,了解元件實際實作方式,並評估如何最佳地與你的設計系統整合。

常見問題(FAQ)

要如何在既有的 React 或 Next.js 專案中安裝 chat-ui?

在專案根目錄執行 shadcn CLI 指令:

npx shadcn@latest add https://ui.inference.sh/r/chat.json

這會將來自 ui.inference.sh 的 chat-ui 元件加入你的程式庫中,通常位於 registry/blocks/chat 路徑下。之後你就可以依照說明使用對應的 import 路徑匯入 ChatContainerChatMessageChatInputTypingIndicator

chat-ui 可以在沒有 Next.js、只有純 React 的專案中使用嗎?

可以,chat-ui 元件本質上是標準 React components。只要你的環境支援 React,就可以在純 React SPA 中整合。重點是能順利執行 npx shadcn@latest add ... 指令,並讓你的打包工具正確解析產生出來的 import 路徑。

chat-ui 是否內建後端或 AI 邏輯?

沒有。chat-ui 僅提供 前端 UI 元件。你需要自行負責:

  • 管理 messages 狀態
  • 呼叫你的後端、API 或 AI 模型
  • 處理串流、錯誤與身份驗證

這樣的分工讓 chat-ui 具有高度彈性:你可以搭配任何聊天後端,從自建 API 到第三方 AI 平台都可以。

可以自訂 chat-ui 元件外觀嗎?

可以。透過 ui.inference.sh registry 匯入的元件是存放在你專案內的 React components。你可以開啟對應檔案(例如 chat-containerchat-messagechat-inputtyping-indicator),並進行:

  • 調整版面與間距
  • 修改顏色、字型與邊框
  • 加入額外 UI 元素,如頭像、時間戳記或訊息狀態

由於你擁有原始碼,因此在樣式上完全沒有綁定限制。

chat-ui 是否適合用來打造 AI 助理與 copilot?

很適合。chat-ui 天然就是為 AI 助理、copilot 和類似的對話式工具設計。它提供:

  • 彈性的聊天容器與訊息呈現方式
  • 適合串流回應的輸入與輸入中指示器元件

你只需要把這些元件串接到 AI 後端,在 state 中處理串流或逐步更新,剩下的使用者介面就交由 chat-ui 負責。

什麼情況下應該選擇其他方案,而不是 chat-ui?

可以考慮其他方案的情境包括:

  • 你需要的是 全託管的聊天小工具(同時提供 UI、後端、資料庫與驗證),且希望工程投入最小化。
  • 你的技術棧 不是基於 React(例如 Vue、Svelte,或不使用 React 的純伺服器渲染)。
  • 你想要與特定後端產品高度耦合、深度整合的元件。

在這些情況下,專門的聊天平台或針對你框架的 UI 函式庫可能更合適。

要到哪裡了解更多 chat-ui 元件資訊?

在此技能中,主要參考文件是 SKILL.md,其中整理了可用元件與使用範例程式碼。安裝之後,你本機專案中的元件檔案會是最實用的參考來源,因為它們直接呈現 chat-ui blocks 在你的專案中是如何實作、以及你可以如何擴充或修改它們。

評分與評論

尚無評分
分享你的評論
登入後即可為這項技能評分並留言。
G
0/10000
最新評論
儲存中...