메뉴 닫기

[네이버 블로그 자동 포스팅 with chatGPT] 3. chatGPT API로 블로그 글 생성하기

블로그 자동 포스팅 첫번째로 만들 모듈은 chatGPT API를 이용하여 블로그 글을 받으려고 합니다.

import openai

#Authorization
openai.api_key = '본인 API KEY'    

def generate_blog(prompt): #chatGPT 호출 하는 코드
 
   
    # 모델 엔진 선택
    model_engine = "text-davinci-003"

    # 맥스 토큰
    max_tokens = 2048

    # 블로그 생성
    completion = openai.Completion.create(
        engine=model_engine,
        prompt=prompt,
        max_tokens=max_tokens,
        temperature=0.7,     
        top_p=0.7,
        frequency_penalty=0.5,
        presence_penalty=0.7
    )
    return completion

##########################################################################################
#chatGPT 입력 변수 generation
# chatGPT 입력 변수 설정
def gen_title(topic,number):
    prompt_subject = f'''
    suggest '{number}' blog titles about '{topic}' having interesting information in plan text.
    '''
    blog_name = generate_blog(prompt_subject) # BLOG 제목 설정.
    return blog_name.choices[0].text

def gen_main(blog_name):
    prompt = f'''
    Write blog posts in plan text format.\n
    Write the blog about "{blog_name}" without introduction.\n
    Please make the entire blog less than 15 minutes long.\n
    The audience of this article is 20-40 years old.\n
    '''

    blog_main = generate_blog(prompt) # BLOG 내용 generation

    prompt_hash = f'''
    Write blog 5 hashtags about '{blog_name}'.
    '''
    blog_hash = generate_blog(prompt_hash) # BLOG 내용 generation
    return blog_main.choices[0].text, blog_hash.choices[0].text
#####################################################################################

  • generate_blog(prompt) : prompt 를 전달 받아서 실제 chatGPT 를 호출하여 생성된 정보를 반환해 주는 함수 입니다.
  • gen_title(topic,number) : 블로그 제목을 만들어 주는 함수 입니다. 토픽과 제목의 갯수를 정해주면 숫자만큼 만들어 줍니다.
  • gen_main(blog_name) : gen_title함수에서 만들어진 블로그 제목을 입력 받아서 블로그 본문과 해시태그를 만들어서 반환해 줍니다.

a = cg.generate_blog(' 4 blog titles about korea having interesting information in plan text')
print(a)

예시로 위와 같은 프롬프트로 chatGPT 에서 답변 받은 변수를 출력 하면 아래처럼 나옵니다. 딕셔너리 형태로 보이는데 openAIobject class 라서 a.choices[0].text 이런 형태로 텍스트 부분의 값만 빼 올수 있습니다.

요 클래스를 보면 dictionary 클래스도 상속하고 있어서 a[‘choices’][0][‘text’] 요렇게 해도 답변 부분만 빼 올수 있습니다.

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null,
      "text": "\n\n1. Exploring the Rich History and Culture of South Korea \n2. The Impact of K-Pop on Korean Society \n3. Discovering the Unique Cuisine of Korea \n4. How South Korea is Becoming a Leader in Technology and Innovation" 
    }
  ],
  "created": 1682684651,
  "id": "",
  "model": "text-davinci-003",
  "object": "text_completion",
  "usage": {
    "completion_tokens": 55,
    "prompt_tokens": 12,
    "total_tokens": 67
  }
}

이렇게 간단하게 chatGPT에서 블로그 제목 내용 해시태그 등을 받아 올 수 있고 받아 온 내용을 파이썬 변수에 저장 할 수 있습니다.

다른 내용을 받고 싶으면 함수안의 promp의 내용만 바꿔 주면 됩니다.

블로그 자동화를 위해서 저는 저 프롬프트는 고정시키고 토픽 단어만 바꿔서 자동화 글을 올리고 있습니다.

Posted in 네이버 자동포스팅

Related Posts

2 Comments

  1. 이춘곤

    chatGPT_API.py
    google_translation.py
    naver_process.py
    test.py
    translation.py
    unsplash.py
    각각의 파일에 해당하는 코스 소스을 알 수 있을까요 ?

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다