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()