ChatGPT API 사용법(파이썬과 GPT API를 활용한 문서 요약기)
본문 바로가기
R&D

ChatGPT API 사용법(파이썬과 GPT API를 활용한 문서 요약기)

by 누메노스 2023. 2. 16.
반응형

개요

ChatGPT라는 언어모델의 한계로 인해 장문의 대답이 필요한 질문에도 불구하고 1000자 내외에서 응답이 멈추는 문제가 있습니다.

 

특히, 저 같은 경우 장문의 문서 요약을 한눈에 알기 쉽게 만들도록 ChatGPT에게 요청하는 경우가 많은데요.

 

약 5000자가 넘는 장문의 문서를 ChatGPT가 1000자 내외로 요약하다 보니 명확하지 않거나 부연설명 없이 과하게 요약된 내용이 담기는 경우가 많습니다.

 

이번 글에서는 파이썬으로 ChatGPT API를 활용하는 방법과 1000자가 넘는 문서를 ChatGPT API를 통해 요약하는 방법을 알아보도록 하겠습니다.


파이썬을 통한 ChatGPT API 사용방법

1. OpenAI 로그인

2. API 키 생성

3. 파이썬으로 API 활용

 

OpenAI API

 

OpenAI API

OpenAI is an AI research and deployment company. Our mission is to ensure that artificial general intelligence benefits all of humanity.

openai.com

  • 구글로그인 또는 회원가입을 진행하고 API 페이지로 넘어갑니다

  • 우측 상단의 프로필을 누르면 하위 항목들이 나옵니다.
  • 하위 항목에서 View API keys 버튼을 눌러 이동합니다.

  • Create new secret key 를 선택하면 API 키 발급이 완료됩니다.
반응형

파이썬 코드 작성

환경설치

pip install openai
  • 아나콘다 프롬프트에서 pip install openai를 하면 ChatGPT API를 사용하기 위한 준비가 완료되었습니다.
  • 가상환경에 설치하셔도 무방합니다.

API 호출

import pandas as pd
import openai
openai.organization = "Organization 키를 입력하세요."
openai.api_key = "발급받은 API 키를 입력하세요."
  • organization 키는 API키를 발급받은 페이지의 좌측 ORGANIZATION - Settings로 들어가면 확인할 수 있습니다.

def get_openai_response(prompt, print_output=False):

    completions = openai.Completion.create(
        engine='text-davinci-003',  # Determines the quality, speed, and cost.
        temperature=0.5,            # Level of creativity in the response
        prompt=prompt,           # What the user typed in
        max_tokens=3072,             # Maximum tokens in the prompt AND response
        n=1,                        # The number of completions to generate
        stop=None,                  # An optional setting to control response generation
    )
    # Displaying the output can be helpful if things go wrong
    if print_output:
        print(completions)

    # Return the first choice's text
    return completions.choices[0].text
  • get_openai_response 함수는 ChatGPT API의 응답을 반환하는 함수입니다.
  • prompt를 request로 요청하며 completions에 JSON 형태의 response가 API를 통해 반환됩니다.
  • completions에서 저희가 원하는 GPT 언어모델의 응답을 추출해서 반환합니다. return completions.choices[0].text
def split_script_1000(script):
    split_script = script.split('. ')
#    split_script = script.splitlines()
    result = []
    counter = 0
    tmp = ''
    for i in split_script:
        tmp += i
        counter += len(i)
        
        if counter > 1000:
            result.append(tmp)
            tmp = ''
            counter = 0
    return result
  • 저는 논문요약을 주로 시키므로 1000자씩 끊어서 ChatGPT 언어모델에 입력시킬 필요가 있습니다.
  • split_script_1000 함수는 입력된 str 형태의 스크립트를 ". " 기준으로 분할하며, 그냥 "."이 아닌 ". "로 분할하는 이유는 실수(1.1, 2.2, 3.3... etc)는 포함시키지 않기 위해 ". "로 분할합니다.
  • result에는 ". "로 분할된 스크립트의 리스트가 반환됩니다. 

Main

# Let's get data
df = pd.read_csv('script.csv')

# Let's make prompt
prompt = 'Rewrite this script professionally and add subheadings No Titles No Introduction No Conclusion.'

# Algo to rewrite script
result_list = []

for ind, row in df.iterrows():
    eng_result = ''
    title = row['TITLE']
    script = row['SCRIPT'].strip('\n')
    split_script = split_script_1000(script)

    for ss in split_script:
        request = prompt + ss
        response = get_openai_response(request)
        eng_result += response

    result_list.append({'title': title, 'eng': eng_result})

df_result = pd.DataFrame(result_list)

df_result.to_csv('rewrited_script.csv', mode='a', index=False, encoding='utf-8-sig')
  • 여러 개의 논문을 요약시킬 때도 많으므로 판다스를 통해 데이터를 읽어옵니다.
  • prompt는 "각각의 문단에 소제목을 달고 제목, 개요 및 결론을 내지 말고 이 글을 다시 써주세요."라는 요청에 1000자 단위로 분할된 스크립트를 추가해서 API를 호출합니다.
  • script.csv의 형태는 다음과 같습니다.

  • 엑셀로 열어보면 TITLE 칼럼과 SCRIPT칼럼을 가진 일반적인 데이터 프레임입니다.
  • TITLE에는 문서의 이름 SCRIPT에는 문서 내용을 써넣으면 됩니다.
  • 결과는 rewrited_script.csv에 저장됩니다.

결과

rewrited_script.csv 파일

  • 1000자 단위로 끊어서 ChatGPT에게 물어본 결과 엄청나게 긴 문서(6천 자)를 요약(3천 자)해낸 모습입니다.
  • prompt를 수정하여 API 결과에 따른 다양한 서비스를 만들 수 있습니다.

주의 : 너무 많이 쓰면 결제해야 합니다.

 

  • organization - usage를 들어가시면 얼마나 API를 썼는지 확인할 수 있습니다.
  • 1000 토큰당 0.02$이므로 개인적인 용도로 쓰신다면 Free trial로도 충분합니다.
  • 하지만 Free trial은 만료기간이 있으므로 기간이 종료된다면 결제를 하거나 다른 계정을 사용하셔야 합니다.
  •  

커스텀 모델을 만들고 싶어요

2023.02.23 - [R&D] - ChatGPT 모델 학습 방법 : 파인튜닝(Fine tuning)을 사용한 MBTI와 에니어그램 별 캐릭터 설정 제조기

 

ChatGPT 모델 학습 방법 : 파인튜닝(Fine tuning)을 사용한 MBTI와 에니어그램 별 캐릭터 설정 제조기

개요 ChatGPT로 열심히 문서요약을 하는 와중 GPT로 장난을 치고싶어졌습니다. 기본적으로 인공지능 모델은 파인튜닝이라는 방법을 통해 방대한 백본 네트워크는 그대로 두고 출력단을 학습시킴

eppiroi.tistory.com

ChatGPT를 간지나게 쓰는 방법은?

2023.03.07 - [R&D] - Chat GPT를 간지나게 사용하는 방법 + Notion AI를 활용한 문서 요약기

 

Chat GPT를 간지나게 사용하는 방법 + Notion AI를 활용한 문서 요약기

개요 이전 글에서 ChatGPT API를 활용한 문서요약기를 만들었었는데요. 2023.02.16 - [R&D] - ChatGPT API 사용법(파이썬과 GPT API를 활용한 문서 요약기) ChatGPT API 사용법(파이썬과 GPT API를 활용한 문서 요약

eppiroi.tistory.com


 

2023.02.12 - [Technology] - 검색엔진의 종말?? : ChatGPT가 불러온 새로운 물결

 

검색엔진의 종말?? : ChatGPT가 불러온 새로운 물결

검색 엔진 : 그 장엄한 25년의 역사 지난 25년 이상 동안 검색 엔진은 인터넷을 켜면 가장 처음 보이는 웹페이지였습니다. 웹 전문 검색을 서비스한 최초의 사이트 AltaVista는 구글의 등장 이후 빠

eppiroi.tistory.com

2023.02.06 - [Technology] - AI 패권 경쟁의 승자는??(ChatGPT가 쏘아 올린 작은 공)

 

AI 패권 경쟁의 승자는??(ChatGPT가 쏘아올린 작은공)

ChatGPT의 출현 최근 오픈 AI가 만든 ChatGPT가 공개된 후 인공지능 업계의 분위기가 뜨겁습니다. ChatGPT는 공개된 지 5일 만에 100만 명의 사용자를 끌어모으며 역사상 가장 빠르게 소비자를 끌어모은

eppiroi.tistory.com

2022.12.24 - [Technology] - 어떤 문제든 다 풀어주는 챗봇 인공지능이 있다?? - ChatGPT의 등장

 

어떤 문제든 다 풀어주는 챗봇 인공지능이 있다?? - ChatGPT의 등장

1950년 앨런 튜링은 문자로 대화 시, 이것이 기계인지 사람인지 구분할 수 없다면 기계가 지능적(intelligent)이라 했습니다. 앨런 튜링의 이 말은 ‘스마트 챗봇’이란 단어의 시작으로 여겨집니다.

eppiroi.tistory.com

 

댓글