ChatChat 搭建指南:一个界面统一接入 11 家大模型与联网搜索的自托管 AI 平台

发布时间:2026/10/11 13:21:04

ChatChat 搭建指南:一个界面统一接入 11 家大模型与联网搜索的自托管 AI 平台 ChatChat 搭建指南一个界面统一接入 11 家大模型与联网搜索的自托管 AI 平台【免费下载链接】ChatChatChat Chat, your own unified chat and search to AI platform, with a simple and easy to use interface.项目地址: https://gitcode.com/gh_mirrors/ch/ChatChatChatChat 是一个基于 Next.js 的自托管 AI 平台把多模型对话和联网搜索整合进同一个简洁界面适合想给自己或团队搭一套私有 AI 助手、又不想被单一服务绑定的开发者和爱好者。项目定位你日常用 AI 时往往要面对一个现实OpenAI、Anthropic、Google 各家服务分散各有账号、各自界面想换个模型就得换一个网站。ChatChat 解决的就是这件事——它在你自己的服务器上起一个网页背后统一对接多家模型供应商和搜索服务你只需要在一个输入框里对话和提问。它和普通现成工具的区别在于模型、搜索源、语言、主题都由你配置数据不出你的环境界面也能按需改。它不是要替代某个大模型而是给你的多个 AI 服务加一个统一的入口。技术栈方面它用 Next.js、Tailwind CSS 和 shadcn UI 搭建前端体验接近主流产品后端通过 API 路由把请求转发到具体供应商。快速上手先准备好 Node.js 和 pnpm再按下面几步走几分钟就能跑起来。git clone https://gitcode.com/gh_mirrors/ch/ChatChat cd ChatChat pnpm install cp .env.example .env pnpm dev启动后访问本地 3000 端口即可看到界面。.env文件里有一长串供应商和搜索服务的占位项你不必全填。先挑一家你最常用的比如只填OPENAI_API_KEY把对应的NEXT_PUBLIC_ACCESS_OPENAI留空或按需设置保存后重启开发服务就能用这个模型对话了。想接其他家照着注释把 key 填进去就行。核心用法与场景场景一给自己建一个私有聊天入口做法在.env里填入某家模型的 API key用pnpm dev或构建后pnpm start启动打开网页开始对话。结果你得到一个干净的聊天界面支持 Markdown、公式渲染和图片预览消息记录可在侧边栏管理不用再在多个网页之间切换。场景二让 AI 带着搜索结果回答做法除了模型 key再配置一家搜索服务比如 Google 或 Tavily对应GOOGLE_SEARCH_API_KEY或TAVILY_SEARCH_API_KEY。结果提问时平台先联网抓取相关资料再交给模型总结回答里会列出来源和要点。适合查时效性内容减少模型凭空作答的情况。场景三多模型对比与团队共享做法一次性配置好几家供应商的 key部署到团队可访问的地址通过 Docker 或常规构建发布。结果同一个问题可以在不同模型之间切换着问直观对比效果团队成员也共用一个入口无需各自维护服务。项目自带Dockerfile和docker-compose.ymldocker-compose一键起容器、暴露 3000 端口即可。扩展生态与二次开发如果你不满足于现有配置改起来也有清晰的落点新增或调整模型供应商定义集中在config/provider/目录每家一个文件接口层在app/api/chat/messages/下按供应商分文件夹新增一家就是照着现有结构补一套。换或加搜索引擎搜索源在config/search/里声明具体抓取逻辑放在utils/search/engines/加一个文件就能接入新的检索渠道。自定义界面与多语言文案分散在locales/下的各语言 JSON界面组件在components/里可以按团队风格改布局、改配色或增删语言版本。接入自有模型除了列出的商业供应商还支持自定义Custom接入方式方便你把内部或开源模型挂进来。这些扩展都是围绕现有多文件结构做的改动面小适合在理解主流程之后按需动手。下一步先跑通pnpm dev在.env里填好一家模型的 key验证能正常对话再去官方文档确认你需要的搜索源和部署细节最后挑一块想改的地方加一个供应商、换一种搜索、改一套文案从最小改动开始练手。注意模型可能生成不当内容自托管时留意访问权限只对可信的人开放。【免费下载链接】ChatChatChat Chat, your own unified chat and search to AI platform, with a simple and easy to use interface.项目地址: https://gitcode.com/gh_mirrors/ch/ChatChat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/11 13:20:09

qmc-decoder教程:快速完整转换QMC音乐为MP3

qmc-decoder教程:快速完整转换QMC音乐为MP3 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你电脑或手机里的 QMC 文件只能在 QQ 音乐客户端里播放,…

2026/10/11 13:18:09

Qt文件管理器实战:QFileSystemModel与QTreeView工程解析

简介:这是一份面向QT初学者与C GUI开发入门者的轻量级文件管理器项目源码,基于QT框架实现,帮助读者理解桌面端文件管理工具的基本架构与交互逻辑。压缩包共33个文件,约80KB,包含8个cpp源文件、7个h头文件、4个ui界面文…

2026/10/11 13:18:09

运动想象脑电分类实战:CNN局部特征+Transformer全局注意力

简介:运动想象脑电信号分类项目,基于Transformer框架并结合CNN提取局部时间空间特征,是一份完整的Python毕设源码,面向计算机、人工智能及相关专业的学生与从业者,可用于期末课程设计、大作业或毕业设计等场景。项目由…

2026/10/11 13:18:09

WSL2系统时间漂移怎么解决?从根因到自动校准完整指南

最近在做一次AI使用验证时,我把环境搭在了Windows上,通过WSL2装了一个Ubuntu系统。任务本身不算复杂,但运行到第二天,我注意到一个特别诡异的细节:Ubuntu里的系统时间比宿主机Windows慢了好几分钟,而且这个…

2026/10/11 13:18:09

用 PySpark 分析泰坦尼克数据集,几行代码看出生存率

学大数据处理,第一课往往不是背概念,而是先跑通一个真实数据集。泰坦尼克号乘客数据(titanic.csv)几乎是 Spark 入门最经典的练手材料:字段不多、关系直观,又能立刻看出"数据会说话"。这篇文章用…

2026/10/11 13:13:09

Jmeter接口测试实战:从HTTP基础到参数化、断言与压测

1. 项目概述:接口测试为什么要选Jmeter先开门见山说结论:用Jmeter做HTTP接口测试,是目前中小团队和个人测试最“性价比”的选择之一。你不需要写一段复杂的Java代码,不需要维护一套平台,只要把Jmeter装好,按…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑