Development/Back

openai(chat gpt) api 활용

westcold 2024. 4. 14. 16:35

 4주차
기술과제
-API 토큰이 필요한 이유
코딩과제
-openai API 계정 생성
-파이썬에서 Openai 모듈 설치
-질문하고 답변 받아온거 print해서 테스트 해보기
-크롤링 한 데이터값을 GPT한테 주고 받은 답변을 Mysql에 저장하기


기술과제
*API 토큰이 필요한 이유
-API 토큰은 API를 사용할 때 인증 및 권한 부여를 위해 사용된다.

-이 토큰은 API를 호출할 때 서버가 클라이언트를 식별하고, 클라이언트가 특정 작업을 수행할 수 있는 권한이 있는지 확인하는 데 사용된다.

-따라서 API 토큰이 없으면 API를 사용할 수 없다.

-또한 API 토큰을 통해 API 사용량을 추적하고 제한할 수도 있다.

-이는 보안과 사용자 경험을 보장하기 위한 조치이다.

코딩과제
*openai API 계정 생성
*파이썬에서 Openai 모듈 설치

결제 안하면 작동 안된다

*질문하고 답변 받아온거 print해서 테스트 해보기

from openai import OpenAI
import re

client = OpenAI(api_key=".....")

# 사용자로부터 질문 입력 받기
user_input = input("질문을 입력하세요: ")

# 질문에 대한 대화 완성 생성
completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": user_input}
    ]
)

# 답변 내용 가져오기
answer = completion.choices[0].message.content

# 문장으로 분리
sentences = re.split(r'(?<=[.!?]) +', answer)

# 4~5문장까지 선택하여 출력
print("답변:")
for sentence in sentences[:5]:
    print(sentence)

 

 

 


*크롤링 한 데이터값을 GPT한테 주고 받은 답변을 Mysql에 저장하기

import pymysql
from bs4 import BeautifulSoup
import requests
from openai import OpenAI

# OpenAI API 키 설정
client = OpenAI(api_key="....")

# MySQL 데이터베이스 연결 설정
db_connection = pymysql.connect(host="localhost", user="root", password="....", db="rs", charset="utf8")

# MySQL 커서 생성
cursor = db_connection.cursor()

# 데이터 크롤링
data = requests.get('https://sports.news.naver.com/wfootball/index')
soup = BeautifulSoup(data.text, 'html.parser')
soccer_rank = soup.select('#_team_rank_epl > table > tbody > tr')

# 데이터를 담을 리스트 초기화
team_data = []

for tr in soccer_rank:
    team_name = tr.select_one("td > div > div.info > span")
    if team_name:
        team_name = team_name.text.strip()
        # GPT 모델에 전달하여 팀 설명 얻기
        completion = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "user", "content": team_name}
            ]
        )
        team_description = completion.choices[0].message.content.strip()
        team_data.append((team_name, team_description))

try:
    # 축구팀 이름과 설명을 MySQL에 저장
    query = "INSERT INTO my_schema.football_content2 (name, content) VALUES (%s, %s)"
    cursor.executemany(query, team_data)

    # 변경사항 저장
    db_connection.commit()

    print("데이터가 성공적으로 저장되었습니다.")

except Exception as e:
    print("데이터 저장 중 오류가 발생하였습니다:", e)

finally:
    # 연결 종료
    cursor.close()
    db_connection.close()