불현듯, GPT로 댓글봇을 만들수 있겠네란 생각이 들어서, 한번 만들어 봤습니다.

실제 댓글 작성까지 자동화하려면 좀 복잡해질거 같고, 실제 만들어서 써먹을 생각도 없으므로,

블로그를 크롤링 한후에, OpenAI의 API를 통해 댓글 작성까지 해보도록 코드를 구현해봤습니다.

당연히, 이 역시도 GPT의 도움을 받아 10분만에 코드를 완성했네요.

 

실행 결과는 다음과 같습니다.

https://sweetquant.tistory.com/481 글에 대해, "AI는 도구일 뿐, 우리 자신의 성장과 발전에 초점을 맞춰 활용하자는 말씀에 백프로 공감합니다." 라고 누가봐도 GPT 스러운 댓글을 만들어 주네요.^^

 

 

코드의 내용을 정리하면 다음과 같습니다.

  • OpenAI 클라이언트 설정
    • OpenAI 라이브러리를 사용하여 GPT 모델에 접근하기 위한 클라이언트를 설정합니다.
    • 각자 사용하는 OpenAI API키가 필요합니다.(유료)
  • 댓글 생성 함수 (getReplyFromGPT)
    • 주어진 내용에 대한 댓글을 생성하기 위해 OpenAI의 GPT 모델을 호출하는 함수입니다.
    • 이 함수는 모델을 지정하고, 사용자의 메시지를 바탕으로 챗봇 응답을 생성합니다.
  • 웹 페이지 크롤링
    • requests와 BeautifulSoup 라이브러리를 사용하여 특정 URL의 HTML 내용을 가져오고 파싱합니다.
    • 이 코드에서는 단순하게 티스토리의 특정 페이지만 사용했습니다.
    • 사용하는 블로그에 따라 쉽게 크롤링이 안되거나, 파싱이 안되므로 그에 맞게 코드를 변경해야 합니다.

 

코드는 다음과 같습니다.

# GPT를 사용한 댓글 봇 만들기.
from openai import OpenAI
import requests
import traceback
from bs4 import BeautifulSoup

client = OpenAI(api_key='각자API키를사용')  # API 키 설정

def getReplyFromGPT(content):
    try:
        # 사용하려는 모델 지정
        model = "gpt-4"

        # 댓글을 생성할 메시지 설정
        prompt = f"이 내용에 공감하는 댓글을 짧은 한 문장의 한글로, 진짜 사람같은 느낌으로 만들어줘: {content}"

        # GPT 모델을 사용하여 챗봇 응답 생성
        response = client.chat.completions.create(
            model=model,  # 사용할 모델 지정
            messages=[
                {"role": "user", "content": prompt}
            ]
        )

        res = response.choices[0].message.content
        return res

    except Exception as e:
        print(traceback.format_exc())

# URL 설정
url = 'https://sweetquant.tistory.com/481'

# GET 요청으로 URL에서 데이터 가져오기
response = requests.get(url)

# 응답 상태 확인
if response.status_code == 200:
    # HTML 내용 파싱
    soup = BeautifulSoup(response.content, 'html.parser')

    # 원하는 부분의 내용 추출
    # 이 예제에서는 'div' 태그와 'tt_article_useless_p_margin' 클래스를 기준으로 내용을 추출합니다.
    # 실제 웹사이트 구조에 따라 이 부분은 변경될 수 있습니다.
    main_content = soup.find('div', class_='tt_article_useless_p_margin')
    content = main_content.get_text(strip=True)
    reply = getReplyFromGPT(content)
    print(reply)
else:
    print(f"페이지를 가져오는 데 실패했습니다. 상태 코드: {response.status_code}")

 

+ Recent posts