대부분 AI api에는 이전 대화를 참고해서 답변을 하는 기능이 다 구축되어있음.
이런식으로 Conversation History 라는 저장공간에 저장이 됨.
근데 문제는 대화량이 쌓이면 이 대화를 읽는 과정에서 시간도 많이 들고 비용(토큰)도 많이 들어버림.
그래서 대화가 일정 수 이상 쌓이면 오래된 대화를 지우는 식으로 많이 사용하는데
이러면 치매걸린 것 마냥 옛날에 했던 대화를 기억하지 못함.
일반적인 챗봇이나 프로그램은 문제가 되지 않을 수 있지만 미연시에서 이래버리면 몰입감이 확 깨져버림.
이 Ai치매를 해결하기 위해 대화를 AI한테 압축, 요약하라고 한 뒤 그 압축본을 사용한다던가.
중요한 대화만 저장해서 사용한다던가 할텐데.
나는 후자를 선택할 생각임.
우선 저장할 Data들이 어떤게 있을지 정리를 해봤는데.
이런식으로 구분할 수 있을 듯.
이걸 기반으로 스크립트 작성 후 Character에다가 넣어줌.
지금은 테스트를 해야 되니까 호감도, 약속, 추억만 넣었음.
이제 이 Data를 저장할 공간은 만들어졌으니까
캐릭터와 대화를 하면서 그 대화들을 이 저장 공간에 저장해야 함.
그 전에 호감도에 따른 대화 구분을 나눠보려 함.
캐릭터 인격에 호감도 관련된 설정을 넣어주고.
대화를 주고받을 때 호감도 값도 같이 주고받을 수 있도록 해줬음.
호감도 0:
호감도 23: 조금 친해진 듯?
호감도 69: 이제는 반겨줌.
호감도 100: 음
이렇게 호감도를 넘겨주는 건 됐고.
이제 약속을 생성하고 저장할 수 있도록 해야함.
AI랑 대화를 주고받을 때 AI가 넘겨주는 데이터 형식임.
여기에 DialogueType을 추가해서 일상대화인지, 약속인지, 다른 무언가인지 (고백같은) 입력해서
Type에 따라 다르게 처리해주면 될 것 같음.
호감도 74:
제대로 약속인지 아닌지 판단하는 모습.
다른 대화도 제대로 구분함.
뭔가 하다가 약간의 문제랄까 고민이 생겼었음.
그냥 일상 대화면 상관이 없는데 약속 형식의 대화면
일반적인 대화를 출력하는 DialogueData와 약속의 정보를 가지고 있는 AppointmentData를 JsonData 형식으로 받아야 함.
근데 Ai가 이 JsonData를 뱉게 하는 방식이
이렇게 AI에게 규칙을 설정하는 방식임
근데 저 규칙에다 약속의 JsonData도 넣으려니 걱정이 됐음.
전에도 말했지만 AI가 읽을 Data가 늘어나면 그만큼 시간과 비용이 늘어남.
게다가 지금은 약속 형식의 JsonData만 생각을 해뒀는데 개발해가면서 이런식으로 Data를 받아야하는 경우가 더 생길 수 있음.
관계, 선물, 추억에 관한 Data들 이들도 저 규칙에다 모두 Json형식이랑 이것저것 때려 박으면 안되겠다고 판단했음.
그래서 생각한게 1차로 내가 한 말을 AI에게 넘겨서 이 말이 어떤 유형의 대화인지 판단시킴.
그 후, 이 판단된 형식에 맞는 지침만 기존의 규칙에 조립해서 보내주자고 생각했음.
그래서 이 결과는
AppointmentData의 Character Name에는 말하는 애가 아닌 Player Name이 들어가야하고 나는 그냥 공원 이라고 말한걸
지 멋대로 낙산공원이라고 때려 맞추긴 하지만 제대로 저장 공간에 들어가는 모습이 확인됨.
이제 이 기록을 참고하는 구조를 작성해주면 얼추 됨.
그래서 AI의 1차 판단을 좀 더 확장시키기로 함.
아까는 영어 한 단어로만 답변을 시켰는데 이번에는 또 Json구조로 답변을 하고 어떤 기록이 필요한지도 AI한테 판단시켜서 요청함.
그리고 이 aiRequestMemory를 기반으로 해당되는 기록을 넘겨줬음
그 결과. (배경 없으니까 심심해서 배경도 넣어줌, Chatgpt로 제작)
굳.
지금 대충 쓰고있는 캐릭터 인격 프롬프트인데 너무 재미가 없는 것 같아서 추천 프롬프트 있으면 그걸로 넣어서 해봄 추천 받습니다.
