一个基于Next.js和AI的智能论文阅读、分析和对话平台。支持PDF上传、arXiv自动获取、智能摘要、深度分析和基于论文内容的AI对话。
- 📄 PDF上传 - 支持拖拽上传PDF论文,自动解析内容和元数据
- 🔗 arXiv集成 - 通过arXiv ID自动下载论文和元数据
- 🤖 多模型支持 - 支持Claude、GPT-4等多种AI模型
- 📝 智能摘要 - 自动生成论文核心要点、方法和结论
- 🔬 深度分析 - AI深度解读研究方法、贡献和局限性
- 💬 AI对话 - 基于论文内容的智能问答对话
- 🔍 搜索与筛选 - 关键词搜索、分类筛选
- 🏷️ 分类管理 - 自定义标签,系统化管理论文库
- 📦 批量处理 - 支持批量上传和处理(开发中)
- 🎯 向量搜索 - 语义搜索功能(开发中)
- Next.js 14 - React框架(App Router)
- TypeScript - 类型安全
- Tailwind CSS - 样式
- React Query - 数据获取和缓存
- React Dropzone - 文件上传
- React Markdown - Markdown渲染
- Next.js API Routes - API服务
- Prisma - ORM数据库工具
- SQLite / PostgreSQL - 灵活的数据库选择(可无缝切换)
- pdf-parse - PDF解析
- Anthropic SDK - Claude AI集成
- OpenAI SDK - GPT模型集成
- ArXiv API - 论文获取
- 🗃️ 双数据库支持 - SQLite(开发)和 PostgreSQL(生产)可无缝切换
- 🔄 智能适配器 - 自动处理不同数据库的差异
- 📖 详细文档 - 查看 DATABASE.md 了解切换方法
- ChromaDB/Pinecone - 向量数据库(语义搜索)
- AWS S3 - 云存储(可选)
- Node.js 18+
- 数据库:SQLite(自动)或 PostgreSQL 14+
- npm 或 yarn 或 pnpm
cd auto_papernpm install
# 或
yarn install
# 或
pnpm install复制环境变量模板:
cp .env.example .env编辑 .env 文件,填入必要配置:
# 数据库连接 - SQLite(开发,零配置)
DATABASE_URL="file:./dev.db"
# 或使用 PostgreSQL(生产)
# DATABASE_URL="postgresql://user:password@localhost:5432/autopaper"
# AI模型API密钥(至少配置一个)
ANTHROPIC_API_KEY="sk-ant-..."
OPENAI_API_KEY="sk-..."
# 应用配置
NEXT_PUBLIC_APP_URL="http://localhost:3000"
DEFAULT_AI_MODEL="claude-3-5-sonnet-20241022"💡 数据库选择:
- SQLite: 默认配置,零依赖,适合开发和个人使用
- PostgreSQL: 生产推荐,查看 DATABASE.md 了解如何切换
# 生成Prisma客户端
npm run db:generate
# 推送数据库Schema(开发环境)
npm run db:push
# 或创建migration(生产环境)
npm run db:migratemkdir -p data/papers data/vector_storenpm run devauto_paper/
├── prisma/
│ └── schema.prisma # 数据库Schema
├── src/
│ ├── app/
│ │ ├── api/ # API路由
│ │ │ └── papers/
│ │ │ ├── route.ts # 论文列表
│ │ │ ├── upload/ # 上传
│ │ │ ├── arxiv/ # arXiv导入
│ │ │ └── [id]/ # 单篇论文操作
│ │ ├── upload/ # 上传页面
│ │ ├── search/ # 搜索页面
│ │ ├── chat/ # 对话页面
│ │ ├── library/ # 论文库页面
│ │ ├── layout.tsx # 根布局
│ │ └── page.tsx # 首页
│ ├── components/
│ │ └── ui/ # UI组件
│ └── lib/
│ ├── db.ts # Prisma客户端
│ ├── ai-service.ts # AI服务
│ ├── pdf-parser.ts # PDF解析
│ ├── arxiv-service.ts # arXiv集成
│ └── utils.ts # 工具函数
├── data/
│ ├── papers/ # PDF文件存储
│ └── vector_store/ # 向量数据库
├── .env.example # 环境变量模板
├── next.config.mjs # Next.js配置
├── tailwind.config.ts # Tailwind配置
├── tsconfig.json # TypeScript配置
└── package.json # 项目依赖
POST /api/papers/upload
Content-Type: multipart/form-data
file: PDF文件
categories: ["AI", "ML"]POST /api/papers/arxiv
Content-Type: application/json
{
"arxivId": "2301.00001",
"categories": ["AI"]
}GET /api/papers?query=机器学习&category=AI&limit=50GET /api/papers/{id}POST /api/papers/{id}
Content-Type: application/json
{
"action": "summarize",
"model": "claude-3-5-sonnet-20241022"
}POST /api/papers/{id}
Content-Type: application/json
{
"action": "analyze",
"model": "claude-3-5-sonnet-20241022"
}POST /api/papers/{id}/chat
Content-Type: application/json
{
"message": "这篇论文的主要贡献是什么?",
"model": "claude-3-5-sonnet-20241022"
}id- 唯一标识title- 标题authors- 作者列表abstract- 摘要arxivId- arXiv ID(可选)pdfPath- PDF文件路径categories- 分类标签summary- AI生成摘要deepAnalysis- AI深度分析status- 状态(UPLOADED/PROCESSING/ANALYZED/ERROR)
id- 唯一标识paperId- 关联论文role- 角色(USER/ASSISTANT/SYSTEM)content- 消息内容model- 使用的AI模型
id- 唯一标识paperId- 关联论文chunkIndex- 文本块索引content- 文本内容vectorId- 向量数据库ID
- 访问"上传论文"页面
- 拖拽PDF文件或点击选择文件
- 或输入arXiv ID自动导入
- 系统自动解析PDF并生成摘要
- 访问"搜索论文"页面
- 输入关键词搜索标题、作者、摘要
- 使用分类筛选器精确查找
- 点击论文卡片查看详情
- 访问"AI对话"页面
- 从左侧列表选择论文
- 输入问题或使用快速提问模板
- AI基于论文内容回答问题
- 访问"论文库"页面
- 查看所有论文列表和统计
- 查看论文状态(已上传/处理中/已分析)
- 删除不需要的论文
支持以下模型(需配置对应API密钥):
claude-3-5-sonnet-20241022- Claude 3.5 Sonnet(推荐)claude-3-opus-20240229- Claude 3 Opusgpt-4-turbo- GPT-4 Turbogpt-4o- GPT-4ogpt-4o-mini- GPT-4o Mini
DATABASE_URL="file:./dev.db"DATABASE_URL="postgresql://user:password@localhost:5432/autopaper"文件保存在 data/papers/ 目录
STORAGE_TYPE="s3"
AWS_ACCESS_KEY_ID="..."
AWS_SECRET_ACCESS_KEY="..."
AWS_REGION="us-east-1"
AWS_S3_BUCKET="autopaper-files"# 启动开发服务器
npm run dev
# 构建生产版本
npm run build
# 启动生产服务器
npm run start
# 代码检查
npm run lint
# Prisma Studio(数据库GUI)
npm run db:studio
# 生成Prisma客户端
npm run db:generate
# 推送Schema到数据库
npm run db:push
# 创建数据库迁移
npm run db:migrate- 推送代码到GitHub
- 在Vercel导入项目
- 配置环境变量
- 选择PostgreSQL数据库(Vercel Postgres或外部)
- 部署
# 构建镜像
docker build -t auto-paper .
# 运行容器
docker run -p 3000:3000 \
-e DATABASE_URL="..." \
-e ANTHROPIC_API_KEY="..." \
-v $(pwd)/data:/app/data \
auto-paperA: 检查文件大小是否超过50MB限制,确保文件格式为PDF。
A: 验证arXiv ID格式(如2301.00001),检查网络连接。
A: 确认API密钥配置正确,检查API余额。
A: 检查DATABASE_URL配置,确保数据库服务运行中。
- PDF上传和解析
- arXiv集成
- 多模型AI支持
- 智能摘要和分析
- AI对话功能
- 搜索和筛选
- 向量语义搜索
- 批量导入功能
- 用户认证系统
- 导出Markdown/PDF报告
- 论文引用分析
- 协作和分享功能
欢迎贡献代码、报告问题或提出建议!
MIT License
有问题或建议?请提交Issue或PR。
Auto Paper - 让AI帮你高效阅读论文 📚