프롬프트 설계 최종 목표
- OpenAI의 ChatGPT를 사용하여 긴 논문 내용을 요약하는 유저 친화적인 방법 제안
- 연구원, 학생 및 일반인들이 논문의 내용을 쉽게 이해하는데에 도움
- 논문 요약 및 정리 프로세스를 ChatGPT를 통해 진행
- 논문 핵심 포인트와 주요 아이디어를 정돈되게 추출하여 사용자가 전체 논문을 빠르게 이해하는 데에 도움
논문요약GPT (PaperSumGPT) 작동 과정 모식도

프롬프트 삽입 과정
(1) 입력 내용 준비
먼저, 사용자는 논문의 전체 내용을 포함한 텍스트 전문을 준비해야 합니다. 논문의 전체 내용을 포함하지 않으면 일부 부분에 대한 내용만 요약을 진행할 수 있기 때문입니다.
일반적인 논문의 텍스트 분량 ChatGPT에 한 번에 입력할 수 있는 최대 길이를 넘게 됩니다 (너무 많은 입력을 진행하게 되면 Chat이 강제로 종료됩니다). 따라서, 논문의 내용을 여러 파트로 나누는 작업이 필요하게 될 것입니다.
(2) 초기 프롬프트 투입 (역할 부여)
ChatGPT가 논문 요약을 잘할 수 있도록, 사용자는 논문의 내용을 요약하는 데 도움이 될 수 있는 프롬프트를 입력해야 합니다. `Act as...` 라는 역할 부여를 이용하면 ChatGPT가 논문을 더욱 효율적으로 요악할 수 있게 됩니다. 예를 들어, 다음과 같은 내용을 초기 프롬프트로 입력할 수 있습니다.
Please, act as 'High-quality content abbreviator'. Since you have the input limits (OpenAI limited your input limit), you have to firstly take the all the inputs iteratively. To do this, I've already truncated the long inputs into each subpart. You'll now have to take the inputs iteratively. The important thing is that you should NOT answer directly or respond to the previous message. Make sure that you have to accomplish the task when all the inputs are given. I'll let you know if all the inputs are given.
이렇게 하면, ChatGPT는 논문의 내용을 요약하는 '요약기'로서 앞으로 입력할 논문의 내용을 반복적으로 입력 받게 됩니다. 중요한 것은 논문의 내용을 입력할 때에는 답변을 받지 않아야하므로, 이를 명시하는 것 또한 중요합니다.
(3) 논문 내용 입력
이제, 논문의 내용을 입력할 차례입니다. 논문의 내용을 여러 파트로 나누어서 입력할 때에는, 각 파트의 시작 부분에 (1/n), (2/n), ..., (n/n) 과 같이 입력한 파트의 번호를 명시해주어야 합니다. 그러면 ChatGPT는 해당 부분의 내용을 이해함과 동시에 다음 입력 내용을 유저에게 요청합니다. 예를 들어, 저희는 다음과 같이 투여하는 입력 파트의 번호를 명시해줍니다. 가령 N개의 절삭 논문 중, i번째의 파트를 투여한다고 한다면
This is the (i/N) part of the input. And PLEASE! Do NOT answer and if you understood the input, just keep asking me to input the leftover contents.
이와 같이 중간 프롬프트를 작성한 뒤, 매 파트의 앞에 붙여주면 됩니다.
절삭된 모든 논문 내용에 대하여 이 과정을 반복한 뒤, 맨 마지막의 잘린 논문을 ChatGPT에 투여할 때에는 메시지 하나를 더 넣어주어 잘린 문서의 마지막이라는 것을 선언해주는 것이 중요합니다. 예를 들어, 저희는 다음과 같이 메시지를 작성해줍니다.
Thank you for taking all the inputs.
이렇게 하면, ChatGPT는 논문의 내용을 모두 입력받은 것으로 인식하고, 논문의 요약을 시작할 준비를 마칩니다.
(4) 파이널 프롬프트 투여
물론, 이 상태로 논문 요약을 진행해도 성공적인 결과물을 받을 수 있지만, 더욱 효율적인 요약을 위해서는 논문의 내용을 요약하는 데 도움이 될 수 있는 프롬프트를 입력해야 합니다 (저희는 이걸 파이널 프롬프트라고 하겠습니다). 요약 내용을 어떤 형태로 뽑을지 알려주지 않으면 ChatGPT는 단순히 요약된 내용을 줄글로 출력해줄 것이기 때문입니다. 따라서, 저희는 이 부분에서 가장 많은 내용을 입력해 주어야 합니다. 일종의 결과 출력물에 대한 템플릿을 알려주는 것이라고 생각하시면 이해하기 쉽습니다. 이를테면, 다음과 같은 프롬프트를 입력해볼 수 있습니다.
Now, all the inputs are given to you. You should combine and abbreviate all the inputs by fitting them into the following markdown format. The markdown format is as follows:
------ TEMPLATE STARTS ------
# **[TITLE]**
(Bring the title from the foremost heading in the document. The powerful hint is that the title comes before the people who wrote the document.)
## **Introduction**
## **Methodology**
### **Apparatus**
### **Experimental procedure**
### **Computational procedure (if exists)**
### **Data analysis**
## **Results & discussion**
## **Conclusions**
## **Significance of this study**
## **Things to look out for in follow-up research**
### **Useful references to consider**
...
------ TEMPLATE ENDS ------
You have to write the outputs in a way that the readers can understand the contents easily. Don't forget to miss any important information from inputs. Detailed things that should be noticed would be included in the output (if possible, please bold them with `__BOLD__` or `**BOLD**` markdown marking for clear visibility). Consecutively, if possible, please find some useful references (including title and authors) from the Text or Markdown input file, and re-write them into `### Useful references to consider` subheader.
Sort all these things into TABLE format; which will be efficient to understand what is what. Something like this:
```markdown
| Sections | Abbreviated contents |
| :----: | :----: |
| __Title__ | [TITLE] |
| __Introduction__ | [INTRODUCTION] |
| __Methodology__ | [METHODOLOGY] |
| __Experimental procedure__ | [EXPERIMENTAL PROCEDURE] |
| __Computational procedure__ | [COMPUTATIONAL PROCEDURE] |
| __Data analysis__ | [DATA ANALYSIS] |
| __Results & discussion__ | [RESULTS & DISCUSSION] |
| __Conclusions__ | [CONCLUSIONS] |
| __Significance of this study__ | [SIGNIFICANCE OF THIS STUDY] |
| __Things to look out for in follow-up research__ | [THINGS TO LOOK OUT FOR IN FOLLOW-UP RESEARCH] |
| __Useful references to consider__ | [USEFUL REFERENCES TO CONSIDER] |
내용이 다소 다소 길어보이지만, 이 프롬프트를 넣음으로서 요약된 컨텐츠를 각 항목에 따라 알맞게 정리하여 출력하는 것이 가능합니다.
일반적으로, 결과 파일을 단순히 줄글로 입력하는 것보다는 마크다운과 같은 형식으로 입력하는 것이 더욱 효율적입니다. 마크다운을 사용하면 웹 브라우저에서 바로 결과를 확인할 수 있으며, 헤더 및 테이블 등의 형식을 사용하여 눈에 잘 들어오는 글을 작성하는 것이 가능합니다.
따라서 저희는 파이널 프롬프트에 마크다운과 표를 사용하여 결과물을 출력하는 방식을 사용하였습니다.
구동 예시
백문이 불여일견이라고 하니, 저희가 작성한 프롬프트를 ChatGPT에 투여하여 어떤 결과물을 얻을 수 있는지 확인해보겠습니다.
먼저 견본으로, `ChatGPT: A Meta-Analysis after 2.5 Months` 라는 논문의 요약을 진행해보겠습니다.
해당 논문의 모든 내용은 이 곳에서 확인해보실 수 있습니다.
위에서 언급한 절차에 따라, 해당 논문 전문을 절삭하여 투여하였고 (저희는 절삭된 파트의 길이가 최대 7,000자를 넘지 않도록 하였습니다), 반복적으로 프롬프트들 역시 입력해보았습니다.
저희는 논문 내용과 인용 문헌 타이틀, 그리고 저자들까지 모두 입력 파일 내에 포함시켜보았습니다. 그 결과, ChatGPT는 마크다운 포맷으로 표를 작성하여 그 안에 요약된 논문들의 결과 정보를 포함하여 주었습니다. 결과 출력은 아래 gif와 같이 진행되었습니다.

한계
언어 모델의 한계 특성 상, 간혹 결과물에서 hallucination (사실 왜곡)이 발생하는 경우가 종종 있습니다. 논문에서 등장하지 않은 내용이 결과물에 포함되는 경우가 그 예시입니다. 이렇게 사실 왜곡이 발생하는 경우는 대개 입력 파일이 잘 정리되어 있지 않은 경우가 일반적입니다. 만약 논문 요약에 이상한 내용이 수록되어 있다면, 입력 파일을 최대한 잘 정리하여 다시 ChatGPT에게 투여하면 더 나은 결과물을 얻을 수도 있습니다.
참고 링크
📨 논문요약GPT (PaperSumGPT)에 관하여 개선점 및 궁금하신 점은 댓글, 혹은 woo_go@yahoo.com 이메일로 남겨주세요!