파이썬 AI 실습/[업그레이드]chatGPT API 사용하기

[업그레이드]chatGPT API 사용 하기 - 5.전체내용을 파이썬 코드로 작성하기(자동실행 프로그램 만들기)

파기차차 2023. 4. 4. 07:11
728x90
반응형
SMALL

ㅁ 개요

 

O 프로그램 소개

 

 - 이번 글은 이전글([업그레이드]chatGPT API 사용 하기 - 4.구글colab에서 스테이블디퓨젼+chatGPT로 이미지 생성하기)에 이은 5번째 마지막 글로 앞에서 했던 모든내용을 파이썬 코드로 작성 후 자동으로 실행하는 방법에 대하여 설명합니다.

 

 

**본 포스팅 글은 아래 유튜브 사이트(국내 파이썬 최고 실력자 중 한 분)의 내용을 참고하여 작성하였으며, 초보자들이 좀 더 쉽고, 잘 따라할 수 있도록 해당 내용을 세부적으로 설명한 글입니다. 자세한 내용은 아래 사이트를 참고하여 주시기 바랍니다.

[출처] 자신의 상상을 그림으로 그리는 인공지능 - ChatGPT API 사용법|빵형의 개발도상국

https://www.youtube.com/watch?v=sLgYJIpqUJg

 

 

 

 

O 완성된 프로그램 실행 화면

 

 

 - 본 포스팅의 최종 완성된 프로그램의 결과화면은 아래와 같습니다.

 

1.프로그램을 실행하면 아래와 같이 동작 합니다.

 

최초 chatGPT에게 물어볼 수 있도록 '명령을 내려 주세요: ' 란에 질문을 요청하면 수초내에 응답을 해주며, 다시

'명령을 내려 주세요.: ' 가 깜빡이며 명령을 기다립니다.

 

명령을 내려 주세요: chatGPT에 대해 설명해줘

명령을 내려 주세요: 위 문장을 50자로 요약해줘

 

 

2. 아래와 같이 계속해서 위의 질문 내용과 연계하여 요약을 요청하였으며, 점 점 더 짧게 요약을 잘 해주고 있는 것을 볼 수 있습니다.

명령을 내려 주세요: 위 문장을 40자로 요약해줘

명령을 내려 주세요: 위 문장을 30자로 요약해줘

명령을 내려 주세요: 위 문장을 20자로 요약해줘

 

 

3. 프로그램 종료 시 'bye'를 입력하여 정상적으로 종료합니다.

bye

 

 

 

 

 

 


 

 

O 사전 준비

 

 - 프로그램 실행전 아래 사항이 준비되어 있어야 합니다.

 

1.프로그램 실행 시 아래 에러 메시지가 뜨는 경우 openai의 버전을 확인해야 합니다.

 

AttributeError: module 'openai' has no attribute 'ChatCompletion'

 

 

 

2. 아래 명령으로 openai의 버전 확인 결과 '0.26.5'가 확인 되었습니다. chatGPT3.5 API를 사용하기 위해서는 버전이 0.27.0 이상 되어야 합니다.

>pip show openai

 

3. 따라서 아래와 같은 명령으로 openai를 업그레이드 해줍니다.

 

>pip install --upgrade openai

 

 

 

4. 다시 버전 확인 결과 '0.27.2' 버전으로 확인되며, '0.27.0' 버전 이상이므로 이제 우리는 chatGPT3.5의 API를 사용할 수 있습니다.

 

 

 

 

 


 

 

ㅁ 세부 내용

 

O 완성된 소스

 

 

소스 : 1.py

 

import openai
from config import *
import time
openai.api_key = OPENAI_API_KEY

print("chatGPT를 종료하려면 'bye'를 입력하세요.\n")
content = ''

while True:

    prompt = input("명령을 내려 주세요: ")
    try:
        messages = [
                {'role': 'system', 'content': 'You are a helpful assistant.'},
                {'role': 'user', 'content': content},
            ]
        messages.append({'role': 'assistant', 'content': msg })

        messages.append({'role': 'user', 'content': prompt })
    except:
        messages = [
                {'role': 'system', 'content': 'You are a helpful assistant.'},
                {'role': 'user', 'content': prompt},
            ]

    if prompt == 'bye':
        print("chatGPT를 종료합니다.")
        break

    response = openai.ChatCompletion.create(
        model='gpt-3.5-turbo',
        messages=messages
    )

    print(response)
    print("--------------------------------")
    print(str(response['choices'][0]['message']['content']).strip())
    msg = str(response['choices'][0]['message']['content']).strip()
    print("--------------------------------")

    time.sleep(1)

    content = content + msg

 

 

 - 소스파일을 cmd, 파워쉘 또는 vscode 등에서 아래와 같이 실행하시기 바랍니다.
 

 

 > python 1.py

 

 


 

O 주요 내용

 

1.소스코드에 대해 간략히 설명 드리겠습니다.

 

 

코드의 내용 중 핵심은 chatGPT가 이전 질의/응답 내용을 이해하고 이어서 질문을 하더라도 이에 맞는 답변을 할 수 있게 하는 것입니다.

 

아래 코드에서는

최초 prompt에 질문하는 경우(line 11)

messages[]리스트가 없으므로(거짓이므로), try~except 구문의 except 구문이 실행됩니다. (line 20)

 

예)'chatGPT에 대해 설명해줘'

 

 

이후 다음번 질문 부터는 messages[]가 생성되었으므로(참이므로), try~except 구문의 try 구문이 실행됩니다.(line 12)

 

여기서 chatGPT 3.5 API의 요청 형식에 맞게

1) system(chatGPT)와 user(나, 요청자)의 역할을 정의해 주고 (line13~16)

1-2) 누적된 이전 질의/응답을 포함할 수 있도록 content를 넣어 줍니다. (line 15)


        messages = [
                {'role': 'system', 'content': 'You are a helpful assistant.'},
                {'role': 'user', 'content': content},
            ]

 

content 변수는 누적된 이전 질의/응답을 포함하도록 while 루프 하단에 아래와 같이 코딩해 줍니다.

content = content + msg(직전 질의/응답) (line 43)

 

2) 그 후 messages.append() 함수로 messages리스트에 role을 추가해 줍니다.

        messages.append({'role': 'assistant', 'content': 'You are a helpful assistant.'})
        messages.append({'role': 'user', 'content': prompt })

 

예)'위 내용을 50자로 요약해줘'

 

 

그 외 설명은 위의 주석을 참고하시기 바랍니다.

 

 

 


 

ㅁ 정리

 

O 우리가 배운 내용

 
 - 오늘은 앞에서 했던 모든내용을 파이썬 코드로 작성 후 자동으로 실행하는 방법에 대하여 설명하였습니다.

 

 

이것으로  [업그레이드]chatGPT API사용하기 편을 마치며,  댓글하트는 제가 이글을 지속할 수 있게 해주는 힘이 됩니다.

위의 내용이 유익하셨다면, 댓글과 하트 부탁드립니다.

 

 

 

 

감사합니다.

 

 

※ 추가적인 정보는 아래 유튜브 영상에서 해당 내용을 더욱 자세히 보실 수 있습니다.


 

728x90
반응형
LIST