如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
这是一款面向大语言模型的聊天界面,基于 SvelteKit 构建,是 hf.co/chat 站点上 HuggingChat 应用的底层实现。
Chat UI 仅通过 OPENAI_BASE_URL 与 /models 端点支持兼容 OpenAI 规范的 API。面向特定提供商的集成(包括旧版 MODELS 环境变量、GGUF 自动发现、嵌入能力、网页搜索助手等)均已移除,但所有遵循 OpenAI 协议的服务(llama.cpp server、Ollama、OpenRouter 等)都可直接使用。
[!NOTE] 旧版本代码仍可在 legacy 分支获取。
Chat UI 仅能对接兼容 OpenAI 规范的 API。最快的运行方式是搭配 Hugging Face 推理提供商路由服务与个人 Hugging Face 访问令牌使用。
.env.local 文件内容示例如下:
OPENAI_BASE_URL=https://router.huggingface.co/v1
OPENAI_API_KEY=hf_************************
OPENAI_API_KEY 可填入你计划调用的任意兼容 OpenAI 端点的密钥。请根据你的实际部署组合选择对应配置,将值填入 .env.local 文件即可。
执行以下命令:
git clone https://github.com/huggingface/chat-ui
cd chat-ui
npm install
npm run dev -- --open
此时 Chat UI 已在本地运行,打开浏览器即可开始聊天。
聊天历史、用户信息、设置项、文件与统计数据均存储在 MongoDB 中,你可以将 Chat UI 指向任意 MongoDB 6 或 7 的部署实例。
对于快速本地开发场景,可跳过本节配置。当 MONGODB_URL 未设置时,Chat UI 会自动使用内嵌 MongoDB,数据持久化存储到 ./db 目录下。
0.0.0.0/0)添加到网络访问白名单.env.local 的 MONGODB_URL 参数中。可保留默认值 MONGODB_DB_NAME=chat-ui,也可根据不同环境自行修改。Atlas 无需在本地设备上运行 MongoDB,非常适合团队协作或云部署场景。
如果你偏好以容器方式运行 MongoDB,执行以下命令:
docker run -d -p 27017:27017 --name mongo-chatui mongo:latest
之后在 .env.local 中配置 MONGODB_URL=mongodb://localhost:27017 即可。
完成环境变量配置后,执行以下命令启动 Chat UI:
npm install
npm run dev
开发服务器默认监听 http://localhost:5173 地址。生产环境部署请使用 npm run build 和 npm run preview 命令。
chat-ui-db 镜像已在容器内部预装打包了 MongoDB:
docker run \
-p 3000:3000 \
-e OPENAI_BASE_URL=https://router.huggingface.co/v1 \
-e OPENAI_API_KEY=hf_*** \
-v chat-ui-data:/data \
ghcr.io/huggingface/chat-ui-db:latest
所有可在 .env.local 中设置的环境变量都可通过 -e 参数直接传入容器。
你可通过若干环境变量自定义 Chat UI 的外观风格,默认配置如下:
PUBLIC_APP_NAME=ChatUI
PUBLIC_APP_ASSETS=chatui
PUBLIC_APP_DESCRIPTION="让社区中最优质的 AI 聊天模型服务所有用户。"
PUBLIC_APP_DATA_SHARING=
PUBLIC_APP_NAME:应用各处作为标题显示的名称PUBLIC_APP_ASSETS:用于在 static/$PUBLIC_APP_ASSETS 路径下查找 Logo 与收藏图标,当前可选值为 chatui 和 huggingchatPUBLIC_APP_DATA_SHARING:设置为 1 时,会在用户设置中添加数据共享开关,允许用户自主选择是否向模型创作者共享交互数据Chat UI 会自动从 ${OPENAI_BASE_URL}/models 端点发现可用模型,你也可以通过 MODELS 环境变量(JSON5 格式)自定义覆盖模型元数据。面向特定提供商的旧版集成与 GGUF 自动发现功能已移除。认证优先使用 OPENAI_API_KEY,HF_TOKEN 作为旧别名仍可兼容使用。
Chat UI 支持通过本地启发式规则实现服务端智能路由,无需调用独立的路由服务或选择模型。界面会暴露一个名为 "Omni"(可自定义)的虚拟模型别名,选中该别名后系统会自动为每条消息选择最优路由/模型:图像输入会被路由至多模态处理路径,支持 MCP 工具调用的请求会被路由至智能代理处理路径,其余所有请求则走默认处理路径。
你可以按以下规则配置路由功能:
LLM_ROUTER_ROUTES_PATH 指定路由策略 JSON 文件路径。当前分支未随附示例文件,你需要自行创建指向 JSON 数组的配置(例如在项目中新建 config/routes.chat.json 文件)。每个路由条目必须包含 name、description、primary_model 字段,fallback_models 为可选字段。路由内置识别 default、multimodal、agentic 三个标准路由名称。LLM_ROUTER_DEFAULT_ROUTE 自定义(默认值为 default)。若选中路由下的所有模型均调用失败,请求会自动降级使用 LLM_ROUTER_FALLBACK_MODEL 指定的模型。PUBLIC_LLM_ROUTER_ALIAS_ID 设置别名 ID(默认值 omni),PUBLIC_LLM_ROUTER_DISPLAY_NAME 设置界面显示名称(默认值 Omni),还可配置可选的 PUBLIC_LLM_ROUTER_LOGO_URL 自定义图标。在界面中选中 Omni 后,Chat UI 会执行以下逻辑:
OPENAI_BASE_URL 流式传输选中模型的响应内容。调用出错时会按顺序尝试路由配置的降级模型,最后兜底使用 LLM_ROUTER_FALLBACK_MODEL。工具与多模态快捷配置
LLM_ROUTER_ENABLE_MULTIMODAL=true 且用户发送图片时,路由会跳过策略文件,直接使用 LLM_ROUTER_MULTIMODAL_MODEL 指定的模型处理请求,路由名称为 multimodal。LLM_ROUTER_ENABLE_TOOLS=true 且用户已启用至少一个 MCP 服务器时,路由会跳过策略文件,直接使用 LLM_ROUTER_TOOLS_MODEL 处理请求。若该模型未配置或配置无效,则自动降级使用启发式路由逻辑,路由名称为 agentic。Chat UI 可调用由 Model Context Protocol(MCP)服务器暴露的工具,并通过 OpenAI 函数调用将结果反馈给模型。你可以通过环境变量预配置可信服务器,允许用户自行添加服务器,还可选择启用 Omni 路由器自动选择支持工具调用的模型。
# 服务器的 JSON 数组:包含 name、url,可选 headers
MCP_SERVERS=[
{"name": "Web Search (Exa)", "url": "https://mcp.exa.ai/mcp"},
{"name": "Hugging Face MCP Login", "url": "https://hf.co/mcp?login"}
]
# 当对应服务器条目中未设置 Authorization 头时,
# 会将已登录用户的 Hugging Face 令牌转发至官方 HF MCP 登录端点
MCP_FORWARD_HF_USER_TOKEN=true
LLM_ROUTER_ENABLE_TOOLS=true,并通过 LLM_ROUTER_TOOLS_MODEL= 选定支持工具调用的目标模型。
LLM_ROUTER_ENABLE_TOOLS=true
LLM_ROUTER_TOOLS_MODEL=
该目标模型必须支持 OpenAI 工具/函数调用。Chat UI 会对声明具备该能力的模型展示「tools」标识;你也可以在设置中为每个模型手动强制启用该功能(详见下文)。ML Intern 是一项实验性功能,可在 Hugging Face Hub 上规划并执行机器学习相关工作:复现论文、微调评估模型、构建数据集、将演示部署为 Space。它会读取论文、模型和数据集资源,自动编写脚本,并在你为每个对话设定的计算预算范围内,以 Hugging Face Job 和沙箱的形式运行这些脚本。
你可以访问 huggingface.co/chat/?mode=ml-intern 在 HuggingChat 中体验该功能。
生成应用的生产版本:
npm run build
你可以通过 npm run preview 预览生产构建产物。
[!NOTE] 部署应用时,你可能需要为目标运行环境安装对应的适配组件。
一款面向大语言模型的聊天界面应用。它是基于 SvelteKit 开发的应用程序,也是 https://huggingface.co/chat 的底层实现。
目录: 0. 快速入门
[!NOTE] Chat UI 仅支持通过
OPENAI_BASE_URL配置的、兼容 OpenAI 规范的 API,且要求服务提供/models端点。面向特定提供商的旧版集成(传统MODELS环境变量、GGUF 自动发现、嵌入、网页搜索助手等)均已移除,但所有遵循 OpenAI 协议的服务(llama.cpp server、Ollama、OpenRouter 等)默认即可正常使用。
[!NOTE] 旧版本代码仍可在 https://github.com/huggingface/chat-ui/tree/legacy 获取。
Chat UI 仅对接兼容 OpenAI 规范的 API。最快的运行方式是搭配 Hugging Face 推理提供商路由器和你的个人 Hugging Face 访问令牌使用。
步骤 1 – 创建 .env.local 文件:
OPENAI_BASE_URL=https://router.huggingface.co/v1
OPENAI_API_KEY=hf_************************
OPENAI_API_KEY 可填写你计划对接的任意兼容 OpenAI 规范端点的密钥。请根据你的实际部署场景选择对应组合,将值填入 .env.local:
| 提供商 | 示例 OPENAI_BASE_URL | 示例密钥环境变量 |
|---|---|---|
| Hugging Face Inference Providers 路由器 | https://router.huggingface.co/v1 | OPENAI_API_KEY=hf_xxx(或旧别名 HF_TOKEN) |
llama.cpp server(启动参数为 llama.cpp --server --api) | http://127.0.0.1:8080/v1 | OPENAI_API_KEY=sk-local-demo(任意字符串均可,llama.cpp 会忽略该值) |
| Ollama(开启 OpenAI 兼容桥接模式) | http://127.0.0.1:11434/v1 | OPENAI_API_KEY=ollama |
| OpenRouter | https://openrouter.ai/api/v1 | OPENAI_API_KEY=sk-or-v1-... |
| Poe | https://api.poe.com/v1 | OPENAI_API_KEY=pk_... |
可查看仓库根目录下的 .env 模板,获取所有可覆盖配置的可选环境变量完整列表。
步骤 2 – 安装依赖并启动开发服务器:
git clone https://github.com/huggingface/chat-ui
cd chat-ui
npm install
npm run dev -- --open
此时你已经成功在本地运行 Chat UI,打开浏览器即可开始对话。
所有聊天历史、用户数据、设置、文件和统计数据都存储在 MongoDB 中,你可以将 Chat UI 指向任意 MongoDB 6/7 版本的部署实例。
[!TIP] 快速本地开发场景下可跳过本部分配置。当未设置
MONGODB_URL时,Chat UI 会自动使用内置的嵌入式 MongoDB,数据持久化存储在./db目录下。
0.0.0.0/0)添加到网络访问白名单。.env.local 的 MONGODB_URL 字段。可保留默认值 MONGODB_DB_NAME=chat-ui,也可根据运行环境自定义。Atlas 方案无需在本地设备运行 MongoDB,非常适合团队协作或云部署场景。
如果你偏好通过容器运行 MongoDB:
docker run -d -p 27017:27017 --name mongo-chatui mongo:latest
之后在 .env.local 中设置 MONGODB_URL=mongodb://localhost:27017 即可。
完成所有环境变量配置后,执行以下命令启动 Chat UI:
npm install
npm run dev
开发服务器默认监听 http://localhost:5173。生产环境请使用 npm run build / npm run preview 流程生成并预览构建产物。
chat-ui-db 镜像已在容器内预装并打包了 MongoDB:
docker run \
-p 3000:3000 \
-e OPENAI_BASE_URL=https://router.huggingface.co/v1 \
-e OPENAI_API_KEY=hf_*** \
-v chat-ui-data:/data \
ghcr.io/huggingface/chat-ui-db:latest
所有可在 .env.local 中配置的环境变量,均可通过 -e 参数直接传入容器。
你可以通过若干环境变量自定义 Chat UI 的外观样式,相关配置项默认值如下:
PUBLIC_APP_NAME=ChatUI
PUBLIC_APP_ASSETS=chatui
PUBLIC_APP_DESCRIPTION="Making the community's best AI chat models available to everyone."
PUBLIC_APP_DATA_SHARING=
PUBLIC_APP_NAME 应用内全程用作标题的名称。PUBLIC_APP_ASSETS 用于在 static/$PUBLIC_APP_ASSETS 路径下查找 Logo 与收藏夹图标,当前可选值为 chatui 和 huggingchat。PUBLIC_APP_DATA_SHARING 可设置为 1,此时会在用户设置中新增一个开关,允许用户自主选择是否与模型创建者共享数据。系统会从 ${OPENAI_BASE_URL}/models 地址自动发现可用模型,你也可以通过 MODELS 环境变量(JSON5 格式)覆盖模型的元数据。旧版的特定提供商专属集成与 GGUF 自动发现功能已被移除。授权优先使用 OPENAI_API_KEY,HF_TOKEN 仅作为旧版别名保留兼容。
Chat UI 可通过本地启发式规则实现服务端智能路由,无需额外部署独立路由服务或选型模型。UI 会暴露一个名为 "Omni"(可自定义配置)的虚拟模型别名,用户选中该别名后,系统会为每条消息自动选择最优路由/模型:图像输入将转发至 multimodal 路由,启用 MCP 工具的请求将转发至 agentic 路由,其余所有请求均转发至 default 路由。
LLM_ROUTER_ROUTES_PATH 指定路由策略 JSON 文件路径。当前分支未随附示例文件,你必须将该变量指向自行创建的 JSON 数组(例如可将配置文件提交到项目的 config/routes.chat.json 路径下)。每个路由条目需包含 name、description、primary_model 字段,还可按需添加可选的 fallback_models 字段。路由系统内置识别 default、multimodal、agentic 三个路由名称。LLM_ROUTER_DEFAULT_ROUTE 配置(默认值:default)。如果选中路由下的所有模型均调用失败,请求会自动回退至 LLM_ROUTER_FALLBACK_MODEL 指定的模型。PUBLIC_LLM_ROUTER_ALIAS_ID(默认值 omni)、PUBLIC_LLM_ROUTER_DISPLAY_NAME(默认值 Omni),以及可选的 PUBLIC_LLM_ROUTER_LOGO_URL。在 UI 中选中 Omni 后,Chat UI 将执行以下逻辑:
OPENAI_BASE_URL 从选中的模型拉取流式响应。发生错误时,系统将按顺序尝试当前路由配置的回退模型,最后尝试 LLM_ROUTER_FALLBACK_MODEL。工具与多模态快捷配置:
LLM_ROUTER_ENABLE_MULTIMODAL=true 且用户上传了图像,路由将跳过策略文件,直接使用 LLM_ROUTER_MULTIMODAL_MODEL 指定的模型处理请求,对应路由名称为 multimodal。LLM_ROUTER_ENABLE_TOOLS=true 且用户至少启用了一个 MCP 服务器,路由将跳过策略文件,直接使用 LLM_ROUTER_TOOLS_MODEL 指定的模型处理请求。若该模型未配置或配置错误,系统将回退到启发式路由逻辑,对应路由名称为 agentic。Chat UI 支持调用由 Model Context Protocol(MCP)服务器暴露的工具,并通过 OpenAI 函数调用机制将工具执行结果反馈给大模型。你可以通过环境变量预配置可信 MCP 服务器,也允许用户自行添加自定义服务器,还可配置 Omni 路由自动选择支持工具调用的模型。
配置服务器(所有用户共享的基础服务器列表):
# 服务器配置 JSON 数组:包含字段 name、url,可选字段 headers
MCP_SERVERS=[
{"name": "Web Search (Exa)", "url": "https://mcp.exa.ai/mcp"},
{"name": "Hugging Face MCP Login", "url": "https://hf.co/mcp?login"}
]
# 当上述服务器条目未设置 Authorization 头时,自动将当前登录用户的 Hugging Face 令牌转发至官方 HF MCP 登录端点
MCP_FORWARD_HF_USER_TOKEN=true
启用路由工具路径(对应 Omni 功能):
LLM_ROUTER_ENABLE_TOOLS=true,并通过 LLM_ROUTER_TOOLS_MODEL= 指定支持工具调用的目标模型。在 UI 中使用工具:
+ 菜单,打开“MCP Servers”面板,即可添加服务器、开关启用状态并执行健康检查。服务器卡片会列出该服务器提供的所有可用工具。单模型独立配置:
ML Intern 是一项实验性功能,可在 Hugging Face Hub 上规划并运行机器学习相关工作:复现学术论文、微调并评估模型、构建数据集、将演示项目部署为 Spaces 等。该功能支持读取论文、模型和数据集,自动编写执行脚本,并在你为每个对话分配的计算预算内,将任务以 https://huggingface.co/docs/huggingface_hub/guides/jobs 和沙箱形式运行。
你可以直接在 HuggingChat 体验该功能,访问地址:https://huggingface.co/chat/?mode=ml-intern。
生成应用的生产版本请执行:
npm run build
你可以通过以下命令预览生产构建产物:
npm run preview
[!NOTE] 如需部署该应用,你可能需要为目标环境安装对应的 https://kit.svelte.dev/docs/adapters。
来自真实用户的反馈,见证轩辕镜像的优质服务