파이썬으로 챗봇을 만들어보겠습니다
소스코드 아주 간단하기 때문에 쉽게 따라하실 수 있습니다
openAI의 <ChatGPT API>와 <python>을 이용해서
간단한 챗봇 기능을 구현해보겠습니다.
아나콘다, pip 이용해서 관련 라이브러리는 다운 받았다고 가정하고 진행합니다.
1) ChatGPT api key 발급
2) python 으로 api 받아서 구현
두 가지로 진행됩니다.
1. ChatGPT API key 발급
openAI 의 api 사용하기 위해서는 회원가입를 하고 api-key를 생성해줘야합니다
https://platform.openai.com/docs/overview
왼쪽 사이드바에서 자물쇠를 누르면(API keys) 라고 메뉴명이 보입니다.
선택하면 내 계정의 API keys 를 볼 수 있습니다.
api key를 복사해온 다음 내 파이썬 코드에 사용해야 합니다.
2. Python 으로 구현하기
위에서 복사해뒀던 openai의 api-key를 OPENAI_API_KEY 변수값에 넣습니다.
이 api_key를 통해서 openai의 client를 생성하고 여러 가지 기능을 사용할 수 있게 됩니다
import os
import openai
OPENAI_API_KEY = "본인의 api-key"
os.environ["OPENAI_API_KEY"] = OPENAI_API_KEY
client = openai.OpenAI(
api_key=os.environ.get("OPENAI_API_KEY"),
)
chatGPT에게 시킬 명령은 system과 user 메시지로 나눌 수 있습니다.
넣어야할 내용에는 큰 차이가 없습니다. 개념적으로 나누는 거라고 생각하는 게 편합니다.
요즘 블로그 자동화에 대한 얘기가 많더라구여
블로그 자동화를 위한 기능 개발이라 생각하고 해동 내용을 프롬프트로 만들어서 줍니다.
system_message = "당신은 블로그 글을 제작하는 스크립터입니다. 사용자의 질문에 대답하기 위해 블로그 제작과 관련된 내용을 사용해 500자 이내로 대답하세요"
user_template = "{question}에 대해서 3개의 문단으로 대답해주세요"
question = "토마토의 효능과 주의점"
결국 GPT에게 시키는 내용은 아래와 같습니다
<당신은 블로그 글을 제작하는 스크립터입니다. 사용자의 질문에 대답하기 위해 블로그 제작과 관련된 내용을 사용해 500자 이내로 대답하세요> + <토마토의 효능과 주의점에 대해서 3개의 문단으로 대답해주세요>
이렇게 만든 프롬프트를 클라이언트에 전달해줍니다.
Temperature는 대답의 다양성에 대한 것입니다.
1에 가까울 수록 창의적이고 다양한 대답을 하고
0에 가까울 수록 일관적인 대답을 할 것입니다.
만약 gpt를 업무나 서비스에 사용하실 생각이면
아래와 같이 0에 가깝게 설정하는 것이 좋을 것입니다.
user_message = user_template.format(question=question)
completion = client.chat.completions.create(
model="gpt-3.5-turbo-16k",
messages=[
{"role": "system", "content": system_message},
{"role": "user", "content": user_message},
],
temperature=0.2
)
gpt_result = completion.choices[0].message.content
이제 gpt_result를 print 하면 아래와 같이 나옵니다.
한줄로 나오는 결과를 보기 좋게 줄바꿈 했습니다.
앞서 프롬프트에서 명령한 바와 같이 세 단락으로 나눠주는 게 보입니다.
생각보다 잘 만들죠?
llm 성능이 굉장히 좋기 때문에 업무나 서비스 생성에 아주 유용할 것으로 보입니다.
이제는 구현보다도 사람들의 창의력이 더 중요해지는 것 같아요
'토마토는 많은 사람들에게 사랑받는 과일입니다.
그 이유는 토마토에는 다양한 영양소와 효능이 함유되어 있기 때문입니다.
첫째로, 토마토는 비타민 C와 카로틴이 풍부하게 함유되어 있어 면역력 강화와 노화 방지에 도움을 줍니다.
또한, 토마토에는 식이 섬유가 풍부하게 함유되어 있어 소화를 도와주고 변비 예방에도 효과적입니다.
두 번째로, 토마토에는 리코페인이라는 항산화물질이 풍부하게 함유되어 있어 암 예방에 도움을 줍니다.
리코페인은 특히 토마토를 가열하거나 토마토 소스와 함께 섭취할 때 흡수율이 높아지므로,
요리에 활용하는 것이 좋습니다. 마지막으로, 토마토는 저칼로리 식품으로 유명합니다.
따라서 다이어트 중인 사람들에게도 좋은 선택이 될 수 있습니다.
\n\n하지만,
토마토를 섭취할 때 주의해야 할 점도 있습니다.
첫째로, 토마토 알러지를 가진 사람들은 토마토를 섭취하면 알러지 반응이 나타날 수 있으므로 주의해야 합니다.
또한, 토마토에는 산이 많이 함유되어 있어 위산과 관련된 문제를 가진 사람들은 과다한 섭취를 피해야 합니다.
마지막으로, 토마토는 신선한 상태에서 섭취하는 것이 가장 좋습니다.
토마토는 익을수록 영양소가 감소하므로, 신선한 토마토를 선택하여 섭취하는 것이 좋습니다.
\n\n토마토는 맛과 영양을 모두 갖춘 과일로, 다양한 요리에 활용되고 있습니다.
하지만 개인의 신체 상태와 알러지 여부에 따라 적절한 섭취량과 방법을 고려해야 합니다.'
전체 source code
import os
import openai
OPENAI_API_KEY = "본인의 api_key"
os.environ["OPENAI_API_KEY"] = OPENAI_API_KEY
client = openai.OpenAI(
api_key=os.environ.get("OPENAI_API_KEY"),
)
system_message = "당신은 블로그 글을 제작하는 스크립터입니다. 사용자의 질문에 대답하기 위해 블로그 제작과 관련된 내용을 사용해 500자 이내로 대답하세요"
user_template = "{question}에 대해서 3개의 문단으로 대답해주세요"
question = "토마토의 효능과 주의점"
user_message = user_template.format(question=question)
completion = client.chat.completions.create(
model="gpt-3.5-turbo-16k",
messages=[
{"role": "system", "content": system_message},
{"role": "user", "content": user_message},
],
temperature=0.2
)
gpt_result = completion.choices[0].message.content
print(gpt_result)
오늘은 간단히 openAI ChatGPT를 파이썬으로 활용하는
가장 기초적인 부분을 봤습니다.
앞으로 벡터 디비를 이용한 RAG, 프롬프트 엔지니어링 등등에 대해 다룰 예정입니다.