# Paper Summarizer **A Slack Bot for summarizing arXiv papers, powered by OpenAI LLMs.**

## Features This repository offers 2 main features: - **Summarize an arXiv paper which you mention in a Slack channel.** - **Once a day, post summaries of papers which [AK](https://twitter.com/_akhaliq) mentions.** Currently, the bot supports only papers posted on [arXiv](https://arxiv.org/). ## How to use ### 0. Get API keys for OpenAI and Slack - OpenAI: [https://platform.openai.com/account/api-keys](https://platform.openai.com/account/api-keys) - Slack: [https://api.slack.com/apps](https://api.slack.com/apps) ### 1. Add the bot to your Slack workspace and make it be able to react with user's mention - This article may be helpful: [Enabling interactions with bots](https://api.slack.com/bot-users) ### 2. Clone this repository ```bash git clone https://github.com/discus0434/paper-summarizer.git ``` ### 3. Build a Docker image If you do not use CUDA (i.e., you use only CPU), you can modify `Dockerfile` as follows: ```diff - FROM paddlepaddle/paddle:2.4.1-gpu-cuda11.2-cudnn8.2-trt8.0 + FROM paddlepaddle/paddle:2.4.1 ``` Then, build a Docker image: ```bash cd paper-summarizer/docker && make build ``` ### 4. Set environment variables `OPENAI_ORGANIZATION` might be optional. ```bash echo "OPENAI_ORGANIZATION=org-XXX" >> .env echo "OPENAI_API_KEY=sk-XXX" >> .env echo "SLACK_INCOMING_WEBHOOK_URL=https://hooks.slack.com/services/XXX/XXX/XXX" >> .env echo "SLACK_SIGNING_SECRET=XXX" >> .env echo "SLACK_BOT_TOKEN=xoxb-XXX" >> .env ``` ### 5. Run the API and forward the port You can run the API with the following command: ```bash make run ``` If your PC is Windows, run below in git bash: ```bash make run-win docker exec -it bash python3 app.py ``` Then, forward the port by using [ngrok](https://ngrok.com/) or something like that. ## Requirements - Computer with x86-64 architecture - Docker ## License This repository is licensed under AGPLv3. See [LICENSE](./LICENSE.txt) for more information. ## References - For PDF to text conversion, using [PaddlePaddle](https://github.com/PaddlePaddle/PaddleOCR) model. - The docker image is based on [paddlepaddle/paddle](https://hub.docker.com/r/paddlepaddle/paddle/tags/).