파이썬 프로젝트 및 응용/AI를 이용하여 음성으로 블로그 글 무한 생성하기

[업그레이드][프로젝트] AI를 이용하여 음성으로 블로그 글 무한 생성하기 - 2.chatGPT로 자동으로 블로그 글쓰기

파기차차 2023. 5. 19. 06:01
728x90
반응형
SMALL

ㅁ 개요

 

O 프로그램 소개

 

- 이번 글은 이전글([분류 전체보기] - [업그레이드][프로젝트] AI를 이용하여 음성으로 블로그 글 무한 생성하기 - 1.소개편)에 이은 2번째 글로 파이썬으로 chatGPT의 API를 이용하여 블로그 글을 자동으로 생성하는 방법을 살펴보겠습니다.

 

 

 

 

 

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

 

 

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

 

1.프로그램을 실행하면 'AI와 공존하는 방법'에 대하여 chatGPT3.0가 5가지 정도의 방법을 설명해 주고 있습니다.

 

 

 

2. 이번에는 chatGPT3.5로 글쓴 결과 입니다. 조금 더 자세하게 설명을 해주고 있고, 마지막에 결론까지 제시하고 있습니다.(요청을 어떻게 하느냐에 따라 결과는 많이 달라질 수 있습니다.)

 

 

 

 

 

3. 이번에는 노션AI, chatGPT3.0, chatGPT3.5 3가지 AI를 이용하여 랜덤하게 돌려본 결과 입니다.

여기서는 노션AI가 선택되어 글쓰기 결과를 보여주었습니다.

 

 

 

4. chatGPT 3.0(model="text-davinci-003")는 무료인줄 알았는데, 역시나 사용한 토큰 수만큼 과금이 되고 있는 것을 알 수 있습니다. 큰 비용은 아니지만, 사용시 조절하여 사용해야 겠습니다.

 

 

 

 

 


 

 

 

ㅁ 세부 내용

 

O 완성된 소스

 

 

소스 : 1.py

 

 

import openai # pip install openai
from config import *
import time

openai.api_key = OPENAI_API_KEY

TOPIC = 'AI와 공존하는 방법'

# # chatGPT 3.5(유료)
# messages = [
#     {'role': 'system', 'content': 'You are a helpful assistant.'},
#     {'role': 'user', 'content': TOPIC+' 로 블로그 글 500자 내외로 멋있게 써줘'},
# ]
# response = openai.ChatCompletion.create(
#     model='gpt-3.5-turbo',
#     messages=messages
# )
# time.sleep(5)
# # print(response)
# content = str(response['choices'][0]['message']['content']).strip()
# print(content)

# chatGPT 3.0(유료)
response = openai.Completion.create(
    model="text-davinci-003",
    prompt=TOPIC,
    temperature=1,
    max_tokens=4000
)
time.sleep(5)
content = str(response['choices'][0]['text']).strip()
print(content)

 

 

소스 : 2.py

from notionai import NotionAI # pip install --upgrade notionai-py
import openai # pip install openai
from config import *
import time
from tistory import Tistory # pip install tistory
from translate import Translator # pip install translate
import random

openai.api_key = OPENAI_API_KEY
notion_ai = NotionAI(NOTION_TOKEN, NOTION_SPACE_ID)
ts = Tistory(BLOG_URL, CLIENT_ID, CLIENT_SECRET)
ts.access_token = ACCESS_TOKEN
openai.api_key = OPENAI_API_KEY
translator = Translator(from_lang='ko', to_lang='en')


######################################################


def writePostbyNotion():

    print('[1] notionAI가 글 쓰는 중...')

    content = notion_ai.blog_post(f'write a blog about {TOPIC}').strip()

    title = content.split('\n')[0].replace('#', '').strip()

    print(f'[*] 제목: {title}')

    translation = translator.translate(title)
    print(f'[*] 영문 제목: {translation}')

    return content

#-----------------------------------

def writePostbyChatGPT35():

    print('[1] 챗GPT3.5가 AI가 글 만드는 중...')
    # textToVoice("챗GPT AI가 글 만드는 중입니다")

    # chatGPT 3.5(유료)
    messages = [
        {'role': 'system', 'content': 'You are a helpful assistant.'},
        {'role': 'user', 'content': TOPIC+' 로 블로그 글 500자 내외로 멋있게 써줘'},
    ]
    response = openai.ChatCompletion.create(
        model='gpt-3.5-turbo',
        messages=messages
    )
    time.sleep(5)
    # print(response)
    content = str(response['choices'][0]['message']['content']).strip()

    # print(content)

    title = TOPIC

    print(f'[*] 제목: {title}')

    translation = translator.translate(title)
    print(f'[*] 영문 제목: {translation}')

    return content


#-----------------------------------

def writePostbyChatGPT30():

    print('[1] 챗GPT3.0이 AI가 글 만드는 중...')
    # textToVoice("챗GPT AI가 글 만드는 중입니다")

    # chatGPT 3.0(유료)
    response = openai.Completion.create(
        model="text-davinci-003",
        prompt=TOPIC,
        temperature=1,
        max_tokens=4000
    )
    time.sleep(5)
    content = str(response['choices'][0]['text']).strip()
    # print(content)

    title = TOPIC

    print(f'[*] 제목: {title}')

    translation = translator.translate(title)
    print(f'[*] 영문 제목: {translation}')

    return content

######################################################


TOPIC = 'AI와 공존하는 방법'

writePost_L = ['Notion', 'chatGTP35', 'chatGPT30']
writePost = random.randrange(0,2)
print("랜덤 글쓰기: ", writePost, " 번 ", writePost_L[writePost])

if writePost == 0:
    content = writePostbyNotion()
    print(content)
elif writePost == 1:
    content = writePostbyChatGPT35()
    print(content)
elif writePost == 2:
    content = writePostbyChatGPT30()
    print(content)
else:
    print("무언가 이상합니다. 확인이 필요합니다. 글쓰기를 중단합니다.")

 

 

 

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

 

 > python 1.py

 > python 2.py

 


 

O 주요 내용

 

- 이전 포스팅에서 대부분 설명했던 내용이므로 간략하게만 짚고 넘어가겠습니다.

 

 

 

1. 아래는 chatGPT3.0을 사용하는 방법입니다.

 

 

 

2. 위 코드를 실행한 모습니다.

 

 

 

3. 아래는 chatGPT3.5를 사용하는 방법입니다.

 

 

4. 위 코드(chatGPT3.5)를 실행한 모습니다.

 

5. 글쓰기 AI 중에서 프로그램 실행시 마다 랜덤하게 바뀔 수 있도록 먼저 함수형태로 만들어 줍니다.

 

노션 글쓰기 함수

 

 

 

chatGPT3.5 글쓰기 함수

 

 

 

 

chatGPT3.0 글쓰기 함수

 

 

6.아래와 같이 랜덤하게 선택될 수 있도록 random 모듈을 이용하고, 결과로 받은 숫자를 if문을 사용하여 위에서 만든 함수중 선택해서  실행할 수 있도록 해 줍니다.

 

 

 

7. 아래에서는 노션AI가 선택되어 글을 쓰고 있습니다.

 

 

 

 

 

 

 

 

 

 

 


 

ㅁ 정리

 

O 우리가 배운 내용

 
 - 오늘은  chatGPT의 API를 이용하여 블로그 글을 자동으로 생성하는 방법을 살펴보겠습니다.
 

 

 

오늘은 여기까지이며, 댓글하트는 제가 이글을 지속할 수 있게 해주는 힘이 됩니다.

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

 

 

 

 

감사합니다.

 

 

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

 

 

 

 

728x90
반응형
LIST