Paige:一款无剧透的AI书籍聊天应用
Paige是一款基于AI的书籍聊天应用,用户上传EPUB文件并设定阅读进度后,AI仅会讨论已读章节内容,避免剧透。应用支持多种AI模型,注重隐私和成本控制,适合自托管使用。
Paige是一款创新的AI聊天应用,专为热爱阅读但担心剧透的用户设计。用户只需上传EPUB格式的电子书,并设置当前阅读进度(按章节),AI助手便会严格基于已读内容进行对话,绝口不提未读部分。这为深度讨论书籍情节、人物和主题提供了安全的环境。
Paige的核心工作原理是直接将用户已读章节的完整文本输入到大型语言模型(LLM)的上下文中。开发者刻意选择了这种“无RAG、无向量嵌入、无分块”的架构,认为这样能提供更丰富、更扎实的对话体验,因为模型能捕捉到所有细节和伏笔。当然,这也意味着长篇书籍会消耗更多token,从而增加成本。不过,由于每次请求的前缀(书籍文本)都是相同的,Paige充分利用了提示缓存(prompt caching)技术,从第二条消息开始,后续的token即可享受缓存折扣。应用内显示的单条消息成本即为OpenRouter的实际收费,缓存折扣会自动体现。
在技术实现上,Paige基于Next.js和TypeScript构建,前端使用Tailwind CSS和Radix UI,后端通过Vercel AI SDK集成OpenRouter(支持任何模型)或本地兼容OpenAI的服务器。用户可以通过设置环境变量选择模型,默认使用x-ai/grok-4.3。Paige还提供了详细的token用量和成本追踪功能,帮助用户了解每次对话的开销。
值得注意的是,Paige定位为单用户自托管应用,因此做了一些权衡:解析后的书籍存储在服务器内存中,重启后丢失;没有内置身份认证或速率限制;token计数使用GPT-4o分词器作为近似估计,可能与实际模型的分词器略有差异。这些设计使得Paige非常适合个人本地使用,但不宜直接暴露为公共多用户服务。
设置Paige非常简便,只需Node.js 20.9+、OpenRouter API密钥(或本地服务器),然后执行一系列npm命令即可启动开发服务器。项目采用MIT许可证,并欢迎社区贡献。