2023. 5. 26. 14:57ㆍit
open ai 로 챗봇을 만들어야 하는 상황이 드디어 오고 말았다. 기존 챗봇의 소스코드가 개똥같고, 여기저기 스파게티처럼 꼬여 있어서, 새로 만들어야 하는 상황이다. 그래서 오늘은 가볍게 chatgpt를 활용해서 가벼운 채팅 프로그램을 만들어 볼까한다.
해당 소스코드를 만들기 전에, 먼저 api key를 발급 받아야 한다. 나는 api 키가 발급 받아졌다는 가정한 뒤 글을 쓰겠다.
import openai
openai.api_key = '=========key========'
class chatbot():
memory_size = 5
gpt_standard_messages = [ {"role": "system", "content": "You are a helpful assistant. Your name is BTS. The structure of the conversation should be highly visible in the main points of the conversation / summary and examples (3 types) - to each explanation / concluding conclusion.]"} ]
def set_memory_size(self, memory_size ) :
self.memory_size = memory_size
def gpt_send_msg(self, question:str ) :
# 메시지 설정하기
print( "사용자 : ", question )
self.gpt_standard_messages.append( {"role": "user", "content": question} )
# ChatGPT API 호출하기
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=self.gpt_standard_messages,
temperature=0.8 # 원하는 temperature 값으로 설정 (기본값은 0.8)
)
print
answer = response['choices'][0]['message']['content']
self.gpt_standard_messages.append( {"role": "assistant", "content": answer} )
if self.memory_size*2 < len( self.gpt_standard_messages ):
self.gpt_standard_messages.pop(1)
self.gpt_standard_messages.pop(1)
print( "GPT : ", answer)
# return answer
소스코드는 심플하다. 역시나 파이썬은 할게 없다.
1. gpt_standard_messages = [ {"role": "system", "content": "You are a helpful assistant. Your name is BTS"} ] 설정이 없으면, 아래와 같이 이어 말하기를 한다. 그러니, 너가 챗봇이라는 걸, 명시하면 대답을 잘한다.
2. memory_size = 5 는 최신 대화 목록 5개를 기억해, 답변을 이어가게 만들는 작업이다. 해당 세팅이 없으면, 답변이 뚝뚝 끊겨, 질문과 답변의 연속성이 사라진다.
3. set_memory_size(self, memory_size ) 해당 함수는 답변을 저장하는 사이즈이다, 디폴트는 5지만, 사용자가 변경할 수 있다.
4. gpt_send_msg(self, question:str ) 는 GPT에서 받은 답변을 기억하고 사용자에게 보여주는 함수이다.
5. 사용 법
5-1. 먼저 클래스를 선언한다.
chatbot = chatbot()
5-2. get_send_msg () 함수에 자신이 chatgpt에게 물어보고 싶은걸 질문한다.
chatbot.get_send_msg("안녕?")
심플한 코드이지만, 잘 작동한다.
아래 소스코드는 예시이다.
'it' 카테고리의 다른 글
chroma ( 크로마 ) 활용한 자연어 유사도 분석 (No Embedding ) (0) | 2023.05.30 |
---|---|
티스토리 구글 어널리티스트 등록 방법 자세히 알아보자 ( 사진 첨부 ) (0) | 2023.05.29 |
Google(GCP) Translation API(번역 API) API 신청 및 PYTHON 테스트 (0) | 2023.05.25 |
pynecone를 활용한 table 만들기 ( 내가 만든 커스텀 ) (0) | 2023.05.14 |
Creating a table using Pynecone (Custom table) (0) | 2023.05.12 |