随着 ChatGPT 和大语言模型(LLM)技术的发展,越来越多的开发者希望构建属于自己的聊天界面,结合自己的 API 或私有大模型,构建企业级、可定制的聊天应用。为了满足这种需求,开源社区中涌现出多个聊天界面框架,其中 Chatbot UI 是最受欢迎、最易用、功能最完善的项目之一。
本教程将系统介绍 Chatbot UI 的背景、理论基础、安装部署、功能特点、使用方式以及进阶自定义改造技巧,帮助你从零构建自己的 AI 对话界面。
Chatbot UI 是一个开源的 Web 聊天界面项目,最初由 Mckay Wrigley 发布,旨在提供类似 ChatGPT 的前端交互体验,帮助开发者快速搭建自己的对话界面。
项目地址:https://github.com/mckaywrigley/chatbot-ui
Chatbot UI 是一个典型的现代 Web 应用,使用了以下技术栈:
它本质上是一个纯前端项目,通过调用用户指定的后端 API 来完成问答交互,因此高度灵活,适合各种自定义部署需求。
git clone https://github.com/mckaywrigley/chatbot-ui.git
cd chatbot-ui
确保你已经安装了 Node.js(建议版本 >= 18)和 pnpm:
npm install -g pnpm
pnpm install
pnpm dev
默认会在 http://localhost:3000 打开聊天界面。
首次使用会提示你输入 OpenAI API Key,系统会将 key 存储在本地浏览器缓存中。
如果你使用的是自己的后端 API,可以进入 utils
目录,修改 chat.ts
文件,替换默认的调用逻辑:
const response = await fetch('/api/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ messages, key, prompt })
})
将其改为你自定义的后端 API 地址即可。
Chatbot UI 使用 IndexedDB 保存所有对话记录,即便刷新页面也不会丢失数据。支持:
你可以在输出内容中使用 markdown,包括:
示例:
以下是一个 Python 示例:
```python
def hello():
print("Hello, world!")
### 6.3 Prompt 管理
内置提示词(Prompt)系统,可预定义常用角色设定、写作风格、任务目标等,提升聊天效果。
### 6.4 主题切换
点击左下角设置按钮可以切换亮/暗主题,满足不同视觉需求。
---
## 七、与本地大模型结合
很多用户希望使用本地大模型(如 ChatGLM、LLaMA、Qwen)提供后端服务,可结合如下方式使用:
### 7.1 启动本地服务(示例:FastAPI)
```python
# server.py
from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware
from transformers import AutoModelForCausalLM, AutoTokenizer
app = FastAPI()
app.add_middleware(CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"])
@app.post("/chat")
async def chat(request: Request):
data = await request.json()
messages = data['messages']
reply = "你是本地模型,接收到消息:" + messages[-1]['content']
return {"message": reply}
启动本地 API:
uvicorn server:app --host 0.0.0.0 --port 8000
修改 utils/chat.ts
,将 API 地址改为本地地址:
fetch("http://localhost:8000/chat", ...)
在 app/layout.tsx
和 public/favicon.ico
中更换图标、修改标题信息。
可在会话开始时加入系统提示(system prompt)来设定角色:
{"role": "system", "content": "你是一个诗人"}
可以在前端配置提示词模板,点击即可注入该设定。
可以结合 React 组件和自定义 API 添加上传按钮,将文件内容发送给后端处理。
Chatbot UI 仅是前端,如果结合 LangChain + FAISS 或 LlamaIndex + Chroma 实现检索增强(RAG)即可实现知识库问答:
pnpm build
pnpm export
生成的静态文件位于 .next/out
目录。
FROM node:18
WORKDIR /app
COPY . .
RUN npm install -g pnpm && pnpm install && pnpm build && pnpm export
RUN cp -r .next/out /dist
FROM nginx:alpine
COPY --from=0 /dist /usr/share/nginx/html
功能 | Chatbot UI | Gradio | Streamlit |
---|---|---|---|
交互方式 | 聊天对话 | 表单式、聊天 | 数据仪表盘为主 |
技术栈 | React/Next.js | Python + JS | Python |
自定义性 | 极高 | 中等 | 中等 |
易用性 | 中 | 高 | 高 |
多轮会话 | ✅ | ✅(聊天组件) | ❌(需自行实现) |
前后端分离 | ✅ | ❌ | ❌ |
Chatbot UI 更适合需要高度定制和生产环境使用的场景,而 Gradio/Streamlit 更适合快速原型和教学展示。
Chatbot UI 是一个极具潜力的开源项目,特别适合以下用户:
建议搭配 FastAPI、LangChain、向量数据库等后端工具使用,实现更强大的 AI 应用。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有