[ChatGPT] 앱스 스크립트로 챗GPT API 사용하기

챗GPT는 손쉽게 활용할 수 있는 API를 제공합니다. 그래서 앱스 스크립트 공부의 보조 도구로 쓸 수 있을 뿐만 아니라 바로 앱스 스크립트에 붙여서 사용할 수도 있습니다. 그럼 API 인증키 발급부터 앱스 스크립트에서 챗GPT를 활용하는 방법을 알아보겠습니다.

[TIP] 이 실습을 따라하기 위해서는 API 요금을 결제해야 합니다.

챗GPT API 인증키 발급받기

로그인 후 API 인증키 생성하기

챗GPT의 API 인증키는 OpenAI 홈페이지(platform.openai.com)에서 발급받을 수 있습니다. 로그인 후 계정 옆 [Dashboard]를 클릭하고 좌측의 [API Keys] 메뉴로 이동합니다. [+ Create new secret key] 버튼을 클릭하면 API 인증키 생성 창이 뜹니다.

 

 

이름과 권한을 입력한 뒤 [Create secret key] 버튼을 클릭하면 바로 API 인증키가 생성됩니다. 처음 생성되었을 때만 복사할 수 있으므로 별도로 저장해주세요. 만약 이 API키를 잊어버렸다면 새로 API키를 발급받아서 사용하면 됩니다.

 

 

결제 정보 등록하기

챗GPT API를 사용하기 위해서는 결제 정보를 등록해야 합니다. 오른쪽 위 프로필 사진 옆의 ⚙️을 클릭하고 왼쪽 메뉴에서 [Billing]을 클릭하세요. 그리고 나오는 창에서 [Add payment details]를 클릭하면 결제를 위한 카드 정보를 입력할 수 있습니다.

 

 

결제 수단을 설정한 후 [Continue] 버튼을 누르면 충전할 금액을 입력하는 창이 뜹니다.

 

① 실습을 위해서는 최소 금액인 $5로 충분합니다. 충전할 금액을 입력하고 ② 자동 충전은 비활성화하겠습니다. 여러분이 OpenAI의 API를 사용하고자 하는 용도와 빈도에 맞게 설정해주세요. 설정을 마치고 [Continue → Confirm payment]를 차례로 입력해 충전을 마칩니다.

충전하지 않으면 함수를 실행했을 때 다음과 같은 오류 메시지가 발생하고 챗GPT의 API를 사용할 수 없습니다.

 

{ error:
   {  message: 'You exceeded your current quota, please check your plan and
      billing details. For more information on this error, read the docs:
      https://platform.openai.com/docs/guides/error-codes/api-errors.',
      type: 'insufficient_quota',
      param: null,
      code: 'insufficient_quota' } }

 

결제 정보를 등록하였으면 이제 챗GPT API를 사용할 준비가 끝났습니다.

 

앱스스크립트에서 챗GPT API 사용하기

생성된 챗GPT API Key를 이용해 챗GPT API를 사용하는 코드를 작성해 보도록 하겠습니다. 자세한 개발 방법은 챗GPT API 문서에서 확인할 수 있습니다.

[TIP] 챗GPT API 개발 가이드 : platform.openai.com/docs

 

// ➊ 챗GPT 환경변수 설정
const GPT = {
  env: {
    'API_KEY' : "sk-***AhsB",  // 발급받은 챗GPT API 키
    'MODEL' : 'gpt-4',
    'MESSAGE' : `You are an '앱스 스크립트 챗봇'. Please fill out the following:
                  1. Please answer the questions kindly.
                  2. Please be sure to write your answer in Korean.`
  }
};
// ➋ 시스템 메시지 설정
var conversation = [
  { role: "system", content: GPT.env.MESSAGE }
];
//챗GPT 실행
function processGPT() {
  // ➌ 질문을 위한 챗GPT 설정
  var message = "너는 누구니?";
  console.log(`질문 : ${message}`);
  conversation.push(({ 'role': 'assistant', 'content': message }))
  const url = 'https://api.openai.com/v1/chat/completions';
  var formData = {
      'model': GPT.env.MODEL,
      'messages': conversation
    };
  // ➍ 챗GPT API에 POST 요청을 보내기
  const options = {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer ' + GPT.env.API_KEY,
      'Content-Type': 'application/json'
    },
    payload: JSON.stringify(formData)
  };
  // ➎ 챗GPT 답변 추출 및 콘솔에 출력
  const response = UrlFetchApp.fetch(url, options);
  const data = JSON.parse(response.getContentText());
  const result = data.choices[0].message.content;
  console.log(`답변 : ${result}`);
}

 

앞선 예제들에서는 코드 시작할 때 API 키라는 변수를 각각 생성해주었지만, 이번에는 ① GPT라는 객체에 사용하는 API 인증키를 비롯한 속성값들을 입력합니다.

  • API_KEY : API를 사용하기 위한 인증키입니다. 앞서 발급받은 API 인증키를 입력합니다.
  • MODEL : 사용하려는 GPT 모델의 이름을 나타냅니다. 현재는 ‘gpt-4’로 설정되어 있습니다.
  • MESSAGE : GPT 모델에 전달되는 초기 메시지로 모델의 답변을 제어하는 역할을 합니다.

[TIP] 챗GPT는 여러 변수를 필요로 하기 때문에 객체 형태로 그룹화하여 관리할 수 있도록 선언했습니다. 객체 이름을 GPT로 정해 객체 내 환경 변수(env)의 API_KEY, MODEL, MESSAGE 등의 변수에 쉽게 접근할 수 있습니다.

② 대화 배열인 conversation 변수에는 시스템 역할과 ①에서 지정한 초기 메시지를 설정합니다. 시스템 역할은 모델의 행동을 지시하고 전반적인 대화의 문맥을 제어하는 역할을 합니다.

③ 챗GPT에게 질문을 전달하고 그에 대한 응답을 받기 위한 설정을 정의하는 부분입니다.

  • message 값으로 챗GPT에게 할 질문의 내용을 입력합니다.
  • 앞서 생성한 대화 배열인 conversation 변수에 assistant 역할의 질문 내용을 메시지로 추가합니다.
  • API를 호출할 URL을 입력합니다.
  • formData에 사용할 챗GPT 모델과, conversation을 넣어줍니다.

④ 챗GPT API에 POST 요청을 보냅니다. Authorization 헤더에 Bearer를 이용하여 API 키를 함께 전달해 인증을 수행합니다.

⑤ 챗GPT의 답변을 콘솔에 출력합니다. 결괏값인 response를 JSON으로 변환하면 다음과 같은 JSON 객체가 생성됩니다. 실제 답변부는 choices[0].message.content이기 때문에 result 변수에 data.choices[0].message.content를 입력합니다.

 

{ id: 'chatcmpl-8p4jyc2GfT7tvkXKzGkfF1JTMPKgR',
  object: 'chat.completion',
  created: 1707183642,
  model: 'gpt-4-0613',
  choices:
   [ { index: 0,
       message: [Object],
       logprobs: null,
       finish_reason: 'stop' } ],
  usage: { prompt_tokens: 71, completion_tokens: 47, total_tokens: 118 },
  system_fingerprint: null }

 

코드를 저장한 다음 processGPT( ) 함수를 실행하면 콘솔에 챗GPT의 답변이 출력됩니다. 시스템 메시지로 You are an ‘앱스 스크립트 챗봇’이라고 설정하였기 때문에 자기 자신을 ‘앱스 스크립트 챗봇’이라고 소개합니다.

 

질문 : 너는 누구니?
답변 : 저는 앱스 스크립트 챗봇입니다. 여러분의 질문에 대해 도움을 드리는 역할을 합니다.

 

이렇게 앱스 스크립트 코드를 활용하여 챗GPT에게 질문을 하고 답변을 받을 수도 있습니다.

더 많은 업무 자동화 방법은 신간 <이게 되네? 업무 자동화 미친 활용 앱스 스크립트 with 챗GPT>를 참고하세요!

서휘승 

ERP, 핀테크 등 다양한 도메인에서 백엔드 개발을 두루 경험하며, 안정적이고 확장 가능한 시스템을 개발하는 다양한 경험을 쌓아왔습니다. 데이터의 중요성을 깊이 인식하고, 데이터 엔지니어로서 다양한 파이프라인을 구축했습니다. 현재는 클라우드 MSP 기업인 클루커스의 Gen AI 팀에서 애저 OpenAI를 활용한 맞춤형 인공지능 솔루션을 개발하고 있습니다.

앱스 스크립트와 구글 클라우드 플랫폼을 활용한 업무 자동화 프로젝트를 성공적으로 완수했고, 이후 앱스 스크립트의 매력에 빠져 다양한 분야에서 업무 자동화를 구현하고 확장하기 위해 고민하고 있습니다.

 

블로그 : whiseung.tistory.com

링크드인 : linkedin.com/in/seo-whiseung-b5428827

Leave a Reply

©2020 GoldenRabbit. All rights reserved.
상호명 : 골든래빗 주식회사
(04051) 서울특별시 마포구 양화로 186, 5층 512호, 514호 (동교동, LC타워)
TEL : 0505-398-0505 / FAX : 0505-537-0505
대표이사 : 최현우
사업자등록번호 : 475-87-01581
통신판매업신고 : 2023-서울마포-2391호
master@goldenrabbit.co.kr
개인정보처리방침
배송/반품/환불/교환 안내