생성형 AI, 신기하긴 한데 실무에 어떻게 직접 적용할지 막막하신가요? 실제로 제가 실무에서 활용했던 것 중 하나로, ChatGPT API를 활용하여 텍스트를 추출하는 방법에 대해 포스팅 해보려고 합니다🙂 궁금한 점은 댓글로 남겨주세요!
API 키 발급
먼저 OpenAI의 공식 웹사이트에서 ChatGPT API에 로그인하여 API 키를 발급받아야 합니다. 발급된 키는 다른 사람이 악용할 경우, 과금될 수 있으니 절대 절대 공개하면 안됩니다! openAI 링크를 클릭하여 발급 받는 페이지로 이동할 수 있어요.
Create new secrety key를 누르면 이름을 입력할 수 있어요.
이름을 입력한 후 [Create secret key]를 누르면 API key 발급이 완료됩니다! 꼭 Key 값을 잘 복사해주세요. Done을 누른 이후로는 Key값을 다시 볼 수 없어요. 따라서 Key값을 잃어버리면 새로 발급 받아야 합니다.
필수 라이브러리 설치
API를 사용하기 위해 openai
라이브러리를 설치합니다.
!pip install openai
예제 데이터 – 식품안전나라
이제 간단한 예제를 통해 ChatGPT API를 활용하여 텍스트를 추출하는 방법을 살펴볼게요. 예시 데이터는 식품안전나라의 건강기능식품 원료별 정보입니다. 링크에 들어가 보시면 358개의 개별인정원료가 있는데요, 클릭해보시면 각 개별인정원료에 대한 원재료, 인정번호, 업체명, 기능성내용, 일일섭취량, 섭취 시 주의사항 등이 작성되어 있습니다.
그런데 섭취시 주의사항의 경우 아예 없는 경우도, 한 줄로 작성된 경우, 여러 항목이 작성된 경우 등 케이스가 다양해요. 358여개에 대한 모든 케이스를 일일이 파악해서 복잡한 if else문을 짜는 대신, 똑똑하게 chatGPT를 활용하여 쉽게 해결해보아요!
텍스트 추출하기
from openai import OpenAI
api_key = "YOUR_API_KEY" #아까 복사한 API KEY 값을 복사해서 붙여주세요!!
client = OpenAI(api_key = api_key)
프롬프트 작성하기
프롬프트는 openai의 Playground 페이지에서 먼저 작성하는 것을 추천해드려요. 원하는 프롬프트가 작성되고 나면 View Code를 통해 API를 사용할 수 있는 코드를 자동으로 작성해줘요 🙂 저는 Chat 모드로 작성했어요. 동일한 결과를 위해 Temperature을 0으로 설정했어요. Temperature이 커질수록 매번 다양한 대답을 생성해줍니다.
추출 결과
API 활용하기
마음에 드는 답변을 얻으셨다면, 코드화 합니다. Playground 페이지의 오른쪽 상단 [View Code]를 클릭하면 api 사용을 위한 코드를 자동으로 생성하여 제공해줍니다.
function 작성
추출 전 텍스트를 text
파라미터로 둔 함수를 작성해보았어요.
def warning(text):
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{
"role": "system",
"content": "you are a helper who extract data from text in python list form. Just extract python list without description"
},
{
"role": "user",
"content": f"건강기능식품 원료에 대한 내용에서 섭취 주의사항에 관한 내용을 python list 형태로 추출해줘.\n\n{text}"
}
],
temperature=0,
max_tokens=2203,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
return response.choices[0].message.content
추출 결과
각 항목별로 주의사항이 잘 추출 된 것을 확인할 수 있어요. 🥰
API 사용 비용
총 358개의 항목에 대해 추출한 결과, 비용은 약 $0.36로 들었어요. 500원? 아주… 가성비 넘치네요! 😊
마무리
ChatGPT API를 활용한 간단한 예제를 살펴 보았는데요. 다른 chatGPT 활용 사례에 대해서도 하나씩 포스팅 해 보겠습니다. 감사합니다.