GitHub: CNSeniorious000/free-chat¶
Free Chat¶
自托管 ChatGPT UI。支持任意 OpenAI 兼容 API。
Warning
无后端限制,客户端流式。分支支持无限聊天和模板。
功能¶
- 自定义 API 端点
- 密码保护
- 代理支持
实现¶
Astro/TSX,客户端 token 计算。分支增强历史管理。
深入洞见¶
free-chat 把前端作为智能代理的第一责任单元:客户端实现了基于 tiktoken 的本地 token 统计(src/utils/tiktoken.ts),并通过 TokenCounter 将实时 token 预算反馈给用户,这能减少不必要的 token 花费并允许在多模型/代理(promplateBaseUrl)场景下更精确地路由请求。流式渲染链路由来自 src/utils/streaming.ts(把 fetch body 转成 async iterator),允许前端在接收增量 delta 时即时渲染,从而显著改善交互延迟和用户体验。把 token 计算与 streaming 抽象为独立模块,使前端既能做精确预算也易于扩展多模型策略。
参考源码:
src/utils/tiktoken.ts(客户端 token 计算)- https://raw.githubusercontent.com/CNSeniorious000/free-chat/promplate-demo/src/utils/tiktoken.ts
src/utils/streaming.ts(流式响应处理)- https://raw.githubusercontent.com/CNSeniorious000/free-chat/promplate-demo/src/utils/streaming.ts
我的巧思¶
- 客户端 token 化:WASM 计算,避免服务器开销。
- Promplate 集成:动态提示模板。
- 亚洲镜像:部署友好。
相关项目¶
- anse-app/chatgpt-demo:原版。
- shenrui-li-ds/simply-chat:Streamlit 版。
- CNSeniorious000/oai2ollama:Ollama 桥接。
重要源码 / 文档¶
- README: Free Chat — README.md
- 打包与依赖:package.json
- 源码入口:src/ (代码目录)