defsingle_turn():whileTrue:user_input=input("사용자 입력 : ")ifuser_input=="exit":breakresponse=chat_gpt(user_message=user_input)print("GPT 답변 : "+response.choices[0].message.content)
1
2
3
4
5
# 대화 내용
😊 사용자 입력 : 안녕하세요. 저는 Jongya 라고 합니다.
🤖 GPT 답변 : 안녕하세요, Jongya님! 만나서 반갑습니다. 어떻게 도와드릴까요?
😊 사용자 입력 : 제가 누구라고요?
🤖 GPT 답변 : 죄송하지만, 귀하의 신원을 알 수 있는 정보는 제공받지 않았습니다. 어떻게 도와드릴까요?
이전 대화 내역에서 나온 이름을 기억하지 못한다.
멀티턴
멀티턴 구현 방법 : 이전 대화 맥락을 다음 프롬프트에 함께 넣어, LLM이 맥락을 파악할 수 있도록 함
OpenAI 의 chatGPT API를 기준으로는 아래와 같이 구현할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
defmulti_turn():messages=[]whileTrue:# 사용자의 발화 입력
user_input=input("사용자 입력 : ")ifuser_input=="exit":breakmessages.append(OpenAIMessage(role="user",content=user_input))# LLM의 답변
response=chat_gpt(messages=messages).choices[0].message.content# LLM의 답변을 messages 에 누적하여 담는다. -> 과거 대화이력 누적
messages.append(OpenAIMessage(role="assistant",content=response))print("GPT 답변 : "+response)
1
2
3
4
5
# 대화 내용
😊 사용자 입력 : 안녕하세요. 저는 Jongya 압니다.
🤖 GPT 답변 : 안녕하세요, Jongya님! 만나서 반갑습니다. 어떻게 도와드릴까요?
😊 사용자 입력 : 제가 누구라고요?
🤖 GPT 답변 : 당신은 Jongya라고 소개하셨습니다. 맞나요?
이전 대화이력에서 “사용자의 이름” 맥락을 기억한다.
유추
단순한 기억 말고도, 대화의 맥락에서 사용자가 의도하는 바도 유추할 수 있다.
1
2
3
4
5
# 멀티턴 적용시
😊 사용자 입력 : 한국의 수도는 어디야?
🤖 GPT 답변 : 한국의 수도는 서울입니다.
😊 사용자 입력 : 미국은?
🤖 GPT 답변 : 미국의 수도는 워싱턴 D.C.입니다.
싱글턴을 적용해보면
1
2
3
4
5
6
# 싱글턴 적용시
😊 사용자 입력 : 한국의 수도가 어디야?
🤖 GPT 답변 : 한국의 수도는 서울입니다.
😊 사용자 입력 : 미국은?
🤖 GPT 답변 : 미국에 대해 알고 싶은 특정한 정보가 있나요? 역사, 문화, 경제, 정치 등 다양한 주제가 있습니다. 궁금한 점을 말씀해 주시면
자세히 설명해 드리겠습니다.
Comments