This is a fork of the original ResearchGPT. The current version modifies several settings from the original:
- Use
GPT-3.5-turbo
instead ofGPT-3
. - Add multi-language support.
- Improved results for journal papers (See compare results below).
- Slight modification of the frontend.
I use this repository to study OpenAI's API, Microsoft's Azure, GitHub Pages, and CI/CD. The partial original README is below.
This is a flask app provides an interface to enable a conversation with a research paper. You can enter a link to a pdf hosted online or upload your own pdf. The app will then extract the text from the pdf, create embeddings from the text and use them with the openai api to generate a response to a question you ask. It will also return a source for the part of the text it used to generate the response and the page number.
This web app supports query in multiple languange. Here is an example of a query in both English and Chinese:
This app also supports pdf files in the language other than English. Here is an example of a Chinese pdf file:
git clone https://github.com/MrPeterJin/researchgpt
cd researchgpt
pip install -r requirements.txt
Also, you need to have an OpenAI API key and set it as the environment variable 'OPENAI_API_KEY'.
python app.py
And then open http://127.0.0.1:8080/ in your browser.
or:
flask run
And then open http://127.0.0.1:5000/ in your browser.
Follow the instructions here. Once you have the azure cli set up with az login
, you can deploy with streamed logs:
az webapp up --runtime PYTHON:3.9 --sku B1 --logs
Due to the PDF to text conversion and embedding construction technique, the web app is limited to handle papers with headers (see screenshots below for examples) and can respond unexpectedly (For instance, return the header information). Comparing to the original version, this version has specifically targeted at this problem and making improvements. We are continuing working on improving the app to give better respond.
With Header | Without Header |
---|---|
The improved results can be seen as follows (Click for full-sized image):
With Header (This fork) | With Header (Original) |
---|---|