---
title: "#챗봇: 이맥스 PDF 요약 질의 어시스턴트 활용 - 문서 활용"
url: "https://notes.junghanacs.com/notes/20240704T163135"
author: "Junghan Kim"
date: "2024-07-04T16:31:00+09:00"
lastmod: "2025-02-13T00:00:00+09:00"
tags: ["assistant","chatgpt","emacs"]
description: "이맥스에서 PDF를 열고 챗봇으로 요약·질의하는 흐름을 임시 방편으로 정리한 노트. 관련 내용을 정리한 기록."
---

> [!abstract] 이 노트에 대하여
> 
> PDF 파일을 Emacs에서 읽으면서 ChatGPT 계열 도구로 요약하고 질의하는 방법을 질문답변 형식으로 정리한다. 아직 임시적이지만 문서 활용을 대화형으로 바꾸려는 욕구가 잘 드러난다.

## 활용 방법 챗봇 대화 - 임시 방편

2024-08-10

아직 부족하다. 제대로 된 패키지 인터페이스가 있으면 좋겠다

<div class="ai">

[SYS]: You are a helpful assistant. Please write in Korean language.

@user 이맥스에서 PDF 파일을 열어서 읽어보는데, 여기에 chatgpt를 연동해서 요약하고 질의하는 방법을 알고 싶어. 찾아봐줄래?

@assistant 이맥스에서 PDF 파일을 열고 ChatGPT를 연동하여 요약과 질의응답을 하는 방법에 대해 설명해드릴게요. 몇 가지 단계로 나뉘어져 있습니다.

1.  **이맥스 설정**:
    
    -   먼저, \`pdf-tools\` 패키지를 설치해야 합니다. 이는 PDF 파일을 이맥스에서 열고 조작할 수 있게 해줍니다.
    
    \`\`\`elisp (use-package pdf-tools :ensure t) \`\`\`

2.  **ChatGPT와 연결**:
    
    -   ChatGPT API를 사용하여 이맥스에서 직접 ChatGPT를 호출할 수 있습니다. 이때, \`request\` 패키지를 활용하면 편리합니다. \`request\` 패키지가 없으면 설치해야 합니다.
    
    \`\`\`elisp (use-package request :ensure t) \`\`\`

3.  **함수 작성**:
    
    -   text 요소를 추출하고 ChatGPT와 상호작용하기 위해 이맥스에서 함수를 작성해야 합니다. 아래는 간단한 예제입니다.
    
    \`\`\`elisp (defun my/pdf-to-text () "Extract text from the currently opened PDF buffer." (interactive) (let ((pdf-buffer (current-buffer))) (with-temp-buffer (pdf-view-mode) (pdf-view-decruft-buffer pdf-buffer) (buffer-string))))
    
    (defun my/chatgpt-api-call (prompt) "Send PROMPT to ChatGPT and return the response." (interactive "sPrompt: ") (request "<https://api.openai.com/v1/engines/davinci-codex/completions>" :headers \`(("Content-Type" . "application/json") ("Authorization" . ,(concat "Bearer " "YOUR_API_KEY"))) :data (json-encode \`(("prompt" . ,prompt) ("max_tokens" . 100))) :parser 'json-read :success (cl-function (lambda (&amp;key data &amp;allow-other-keys) (message "ChatGPT response: %s" (assoc-default 'text (elt (assoc-default 'choices data) 0)))))))
    
    (defun my/summarize-pdf () "Summarize the currently opened PDF using ChatGPT." (interactive) (let ((pdf-text (my/pdf-to-text))) (my/chatgpt-api-call (concat "Summarize this: " pdf-text)))) \`\`\`

4.  **요약과 질의하기**:
    -   PDF를 연 후 \`M-x my/summarize-pdf\`로 요약을 요청하거나, \`M-x my/chatgpt-api-call\`로 임의의 질문을 ChatGPT에 보낼 수 있습니다.

위의 엘리프스(Lisp) 코드를 사용하여 이맥스에서 PDF 텍스트를 추출하고 ChatGPT API를 통해 요약 및 질의응답을 할 수 있습니다. \`YOUR_API_KEY\` 부분에는 사용자의 OpenAI API 키를 넣어주세요.

추가적인 설정이나 조정이 필요할 수 있으니, 필요에 따라 사용자의 환경에 맞게 수정하십시오.

@user 고마워. 혹시 관련 문제에 대한 자료가 있는지 찾아봐줄래?

@assistant 네, 이맥스와 OpenAI API를 활용한 PDF 요약과 관련된 자료를 제공해드릴 수는 없습니다. 하지만 이러한 작업에 대해 유용한 정보를 얻을 수 있는 몇 가지 리소스를 추천해드릴 수 있습니다.

1.  **이맥스 관련 자료**:
    -   [Emacs Wiki](<https://www.emacswiki.org/>): 이맥스와 관련된 다양한 자료와 튜토리얼을 찾을 수 있는 훌륭한 장소입니다.
    -   [Mastering Emacs](<https://www.masteringemacs.org/>): 고급 이맥스 사용자들을 위한 블로그로, 다양한 플러그인과 이맥스 설정에 대한 정보가 많습니다.

2.  **PDF-Tools 패키지**:
    -   [PDF-Tools GitHub 리포지토리](<https://github.com/politza/pdf-tools>): PDF-Tools의 설치 및 사용법에 대한 정보를 제공하며, 이맥스에서 PDF 파일을 조작할 수 있게 해줍니다.
    -   [PDF-Tools 설치 및 사용 가이드](<https://www.emacswiki.org/emacs/PdfTools>): Emacs Wiki에서 관리하는 PDF-Tools 가이드.

3.  **OpenAI API 관련 자료**:
    -   [OpenAI 공식 문서](<https://beta.openai.com/docs/>): OpenAI API를 어떻게 사용할지에 대한 공식 문서입니다. API 키 생성부터 사용법까지 상세히 설명되어 있습니다.
    -   [OpenAI API 예제](<https://beta.openai.com/examples>): 다양한 예제를 통해 ChatGPT 및 다른 OpenAI 모델과 상호작용하는 방법을 배울 수 있습니다.

4.  **이맥스에서 HTTP 요청 처리 관련 자료**:
    -   [request.el GitHub 리포지토리](<https://github.com/tkf/emacs-request>): 이맥스에서 HTTP 요청을 쉽게 보낼 수 있게 해주는 request 패키지에 대한 자세한 정보와 설치 방법이 나와 있습니다.
    -   [request.el 사용법](<https://github.com/tkf/emacs-request>): 예제 코드와 함께 request.el을 어떻게 사용할지 설명하는 문서입니다.

각 리소스를 참조하여 자신의 필요에 맞게 이맥스 설정과 OpenAI API 통합을 진행하는 데 도움이 될 것입니다. 추가 질문이나 문제가 있으면 언제든지 말씀해 주세요!

@user

</div>

## 이맥스: 문서 파일 협업 시나리오 활용법 - 투두

[2024-07-04 Thu 16:31]

엣지 브라우저로 문서를 열어본다. 그러면 협업 할 수 있다. 이런 방식을 이맥스에서 활용할 수 있을 것이다. 그 장점도 있을 것이다. PDF 파일을 로딩하고 할 수 있으면 좋겠다. 로컬에서 할 수 없으므로 파일을 올리고 거기에 대해서 이야기 할 수 있어야 하겠다. 아니라면 정 안된다면 엣지로 해야 된다.

## 관련노트

## BIBLIOGRAPHY
