상세 컨텐츠

본문 제목

구글 독스에서 챗GPT 사용하기 (apps script 편)

6. 일잘러 비법

by 마켓플레이어, 마케터 봉 2024. 10. 16. 18:49

본문

확장프로그램 편에 이어 apps script를 활용해 사용하는 방법을 알아보자.

▶︎ 확장프로그램편 : https://marketerbong.tistory.com/67

 

 

앱스스크립트는 구글 드라이브, 캘린더, 문서, 스프레드시트, 독스, 메일, 채팅 등 구글 workspace 앱의 모든 것을 스크립트로 관리하고 자동화할 수 있는 기능이다.

 

이건 gpt 한테 물어봤다.

구글 독스에서 apps scripts로 ChatGPT를 호출하는 함수를 만들어줘

1. 호출함수 : myGPT(prompt,[temperature])
2. 함수 parameter 정의
#### prompt
Prompt to submit to GPT
####[temperature]
OPTIONAL - Creativity (value between 0 and 1)
3. 사용 GPT 모델 : GPT4o
4. 최대 tokoen : 2000개
5. prompt 가 없으면 오류 메세지 출력
6. openai api url : "https://api.openai.com/v1/chat/completions"
7. API key : 앱스크립트 속성에 "OpenAI_API_Key"이름으로 저장

여기서 1. 호출함수는 내가 정의내린 수식이다. 엑셀의 수식과 같은 역할을 한다.

2번에서 파라미터값을 정의한 것인데, pormpt는 흔히 알듯이 질문이고, temperature는 창의성이다. 창의적일수록 1에 가깝고, 0에 가까울수록 문맥 그대로 따른다. 개발자 문서를 보면 아래와 같이 정의되어 있으니 참고하자.

3~5번은 보면 알거다. (원하는데로 수정해도 된다)

6번은 저 url로 꼭 써야한다. 개발자문서에 저 url로 호출해야 답을 준다고 나와있다. 내가 빼먹어봤는데, 안되더라.

7번의 api키는 확장프로그램 연동할 때 받았던 key 값을 쓰면 된다.

▶︎ 확장프로그램편 : https://marketerbong.tistory.com/67

 

그렇게 나온 코드는 다음과 같다.

function onOpen() {
  var ui = DocumentApp.getUi();
  ui.createMenu('ChatGPT')
    .addItem('프롬프트 보내기', 'showPromptDialog')
    .addToUi();
}

function showPromptDialog() {
  var ui = DocumentApp.getUi();
  var response = ui.prompt('ChatGPT', '프롬프트를 입력하세요:', ui.ButtonSet.OK_CANCEL);

  if (response.getSelectedButton() == ui.Button.OK) {
    var prompt = response.getResponseText();
    var output = myGPT(prompt);
    DocumentApp.getActiveDocument().getBody().appendParagraph(output);
  }
}

function myGPT(prompt, temperature) {
  var apiUrl = "https://api.openai.com/v1/chat/completions";
  var apiKey = PropertiesService.getScriptProperties().getProperty("OpenAI_API_Key");

  if (!prompt) {
    return "Error: 프롬프트를 입력하세요.";
  }

  if (temperature === undefined || temperature === null) {
    temperature = 0.7;
  }

  var data = {
    model: "gpt-4",
    messages: [
      {
        role: "user",
        content: prompt
      }
    ],
    max_tokens: 2000,
    temperature: temperature
  };

  var options = {
    method: "post",
    contentType: "application/json",
    headers: {
      "Authorization": "Bearer " + apiKey
    },
    payload: JSON.stringify(data)
  };

  try {
    var response = UrlFetchApp.fetch(apiUrl, options);
    var json = JSON.parse(response.getContentText());
    return json.choices[0].message.content.trim();
  } catch (e) {
    return "Error: " + e.message;
  }
}

 

위 스크립트 중에서 아래 문장이 있는 영역에 api 키값을 넣어주면 된다.

var apiKey = PropertiesService.getScriptProperties().getProperty("OpenAI_API_Key");

 

사용모델은 바꿔도 된다.

 

 

그렇다면 위 스크립트를 이제 apps script에 넣어보자.

[확장프로그램]>[Apps Script]를 누르면 아래와 같이 뜰 텐데, 여기다 코드를 넣고, 저장, 배포하자. 

 

그런 다음 아래와 같이 사용하면 된다. [gpt for sheets and docs 앱 클릭]-[launch]클릭-[custom prompt]에 질문-[답변확인] 순이다.

 

 

※ 참고로 구글 스프레드 시트에도 적용 가능하다. 단, apps script는 구글 시트에서 또 등록해야한다.

관련글 더보기