본문 바로가기
study/geultto

구글 스프레드시트에서 ChatGPT API 활용하기: GPT for Sheets and Docs / Apps Script 구현 방법

by 고기만두(개발자) 2024. 11. 24. 00:08
728x90
반응형

11월 초, 생성형 AI에 대한 사내 교육을 수강한 내용을 바탕으로 유용했던 부분을 정리해보았다.

현재는 내 OpenAI 크레딧이 소진되었지만, 유료 결제를 통해 사용하는 경우 유용할 것으로 판단된다.

 

엑셀과 같은 단순 반복 작업에서 수식을 사용하여 업무 효율을 높이려는 노력이 계속되고 있지만,

2024년이 되어도 여전히 이런 방식으로 작업을 해야 하는지 의문이 들 때가 있다.

이번 교육을 통해 ChatGPT를 활용한 업무 자동화 방법을 배운 뒤, 더 효율적인 작업 방안 몇 가지를 알게 되었다.

반응형

1. GPT for sheets and docs 플러그인 사용하기

확장프로그램 > 부가기능 > 부가기능 설치하기 -> Google Workspace Marketplace에 접속한다.

Google Workspace Marketplace에 접속해 GPT for Sheets and Docs를 검색하여 설치한다.

https://workspace.google.com/u/0/marketplace/app/gpt_for_sheets_and_docs/677318054654

 

GPT for Sheets™ and Docs™ - Google Workspace Marketplace

 

workspace.google.com

그러면 스프레드시트 오른쪽에 프로그램 창이 뜬다.

GPT for sheets and docsapi key

 

처음 설치하면 무료 체험 크레딧이 제공되며, OpenAI의 API 키를 발급받아 입력해야 한다.
API 키는 OpenAI > API 페이지에서 발급할 수 있다.

(주의: 이 키는 절대로 타인과 공유하지 말 것. 과금과 상관있는 중요한 정보라 털리면 곤란하다.)
OpenAI 외에도 Gemini와 같은 다른 AI 서비스도 사용할 수 있다.

gpt 함수

 

 

=GPT("프롬프트")로 원하는 결과를 얻을 수 있다.

이거만 쓸 거면 근데 ChatGPT 한테 물어보고 복붙하는게 낫지 않겠냐고? 싶을텐데.

ChatGPT에게 질문한 후 복사해서 붙여넣는 것보다 더 유용한 점은,

특정한 데이터 포맷을 일괄적으로 적용하거나

gpt_fill

gpt_fill 기능을 통해 샘플 데이터를 기반으로 유사한 양식을 자동으로 채울 수 있다는 것이다.

이 방법은 프로그래밍에 익숙하지 않은 사무직이라도 충분히 활용할 수 있다.

그리고 엑셀에서 수작업으로 반복 작업을 줄여주는데 효과적이다.

다만, 장기적으로 유료 결제와 AI 서비스 토큰이 필요하다.


2. 직접 App Script 작성하기

GPT for Sheets and Docs가 유료 프로그램이다보니 무료 체험이 종료되면 사용할 수 없게 된다.

Apps Script를 사용하여 OpenAI API 토큰만으로 비용을 줄일 수 있는 방법을 찾았다.

구글 스프레드시트에서 직접 함수를 만들어 ChatGPT를 호출하는 방법을 구현해 보았다.

자바스크립트 계통으로 보인다.


Apps Script 사용법:
Google Sheets에서 확장프로그램 > Apps Script로 이동한다.

구글 스프레드시트에서 chatGPT를 호출하는 함수를 만들고 싶어.
1. 함수 이름은 GPT1
2. 함수 형식은 =GPT("질문내용 프롬프트")
3. GPT 모델은 변수로 지정하고, GPT-3.5-TURBO 를 기본으로 하려고 해
4. TOKEN 기본 1000개
5. 사용자 입력을 검사해서 NULL이면 오류메시지 출력
6. ENDPOINT는 V1/CHAT/COMPLETIONS를 사용해줘
7. API KEY는 앱스크립트 속성에 "OpenAI_API_KEY"이름으로 저장할거야.

라고 물어봤더니 아래와 같은 코드를 뱉어냈다.

// ChatGPT 모델 설정
const MODEL_ID = "gpt-3.5-turbo-1106"; // 원하는 모델 ID로 변경 가능

function GPT1(prompt) {
  const apiKey = PropertiesService.getScriptProperties().getProperty("OpenAI_API_KEY");

  if (!prompt) {
    return "Error: Please provide a valid prompt."; // 사용자 입력이 null인 경우 오류 메시지 출력
  }

  const apiUrl = "https://api.openai.com/v1/chat/completions"; // 엔드포인트 수정
  
  const data = {
    model: MODEL_ID,
    messages: [
      {
        role: "system",
        content: "Thanks"
      },
      {
        role: "user",
        content: prompt
      }
    ],
    max_tokens: 1000
  };
  
  const headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer " + apiKey
  };
  
  const options = {
    "method" : "POST",
    "headers" : headers,
    "payload" : JSON.stringify(data)
  };
  
  const response = UrlFetchApp.fetch(apiUrl, options);
  const result = JSON.parse(response.getContentText());
  
  return result.choices[0].message.content;
}

// API 키를 설정하는 유틸리티 함수 (한 번만 실행하면 됨)
function setApiKey(apiKey) {
  PropertiesService.getScriptProperties().setProperty("OpenAI_API_KEY", apiKey);
}

 

apps script 속성

API 키 설정 과정이 별도로 필요하다.
코드를 작성한 후, 톱니바퀴 아이콘을 눌러 스크립트 속성에 API 키를 입력했디.
이렇게 설정하면 스크립트에 직접 키를 넣는 것보다 보안성이 높아지며,

다른 사람이 이 코드를 사용할 때 자신의 API 키로 변경할 수 있다.

728x90

3. API 엔드포인트의 역할
교육 중, 엔드포인트가 무엇인지에 대해 명확한 설명이 없었기에 추가적으로 궁금해졌다. 

OpenAI API 서버와 통신하기 위해서는 특정 URL을 지정해야 하며, 이 URL이 바로 엔드포인트이다. 

엔드포인트는 우리가 원하는 작업을 명확히 서버에 전달하는 역할을 한다.

대표적인 OpenAI API 엔드포인트는 다음과 같다:

- v1/chat/completions: 대화형 메시지 요청을 처리하는 엔드포인트. GPT-3.5, GPT-4와 같은 챗봇 모델과 상호작용할 때 사용된다.
- v1/completions: 전통적인 텍스트 생성 작업에 사용된다. 주로 문장 완성이나 특정 텍스트 패턴 생성 시 사용된다.
- v1/embeddings: 텍스트 임베딩 작업을 위한 엔드포인트로, 벡터화를 통해 머신러닝 모델에 활용된다.

 


v1/chat/completions 엔드포인트는 대화형 요청을 처리하는 데 필수적이며, 이를 통해 ChatGPT와의 대화가 가능하다.

 

엔드포인트는 API 요청의 핵심 요소이다.

요청할 작업에 따라 URL 경로가 달라지며, 서버는 이를 통해 어떤 종류의 작업을 처리해야 하는지 파악한다

그래서 올바르게 정의해줘야 한다는 점에 유의!

 


4. Outro

그렇게 만든 GPT1 함수를 사용해보자.

gpt1 함수를 활용한 답변

gpt 4.0 모델을 사용한 gpt for sheets and docs 의 답변과 다른 답변이 출력되었다.

그런데 모델이 달라 그런지도 모르겠지만 3.5 turbo를 사용해서 그런가....;;;

책은 다르게 추천해줄 수 있는데, 없는 작가나 없는 책 이름을 써놓고 헛소리를 해놨다.

GPT-4는 더 정교하고 정확한 답변을 제공할 가능성이 높지만,

GPT-3.5 turbo도 빠르고 효율적인 작업을 지원한다.

속도는 빠르지만 틀린 답을 말하는 무료 모델 / 조금 느려지더라도 정확한 답을 말하는 유료 모델 의 차이..

역체감이 확실히 느껴지지만 그렇다고 매월 20달러를 태울 만한 가치가 있는지에 대한 고민은 조금 있다.

원-달러 환율조차 너무 올라버려서 거의 28,000원... 피자 한 판 가격이다.

chatGPT 무료 계정한테 네 친구가 그런 헛소리를 했다면서 채찍질해보니 죄송하다고는데 이렇게 킹받을 수가 없다.

728x90
반응형

댓글