개념글 모음

리스의 '응답 이어하기' 기능은 생각보다 단순(?)한 기능임

시스템 프롬프트로 [Continue the last response] 를 전송하는 게 끝이기 때문

user: 유저 인풋

assistant: 모델 응답

system: [Continue the last response]

이렇게 전송되는 구조임


문제는 프롬프트 상으로 템플릿의 마지막에 시스템 롤 문구가 있는 경우 이 '[Continue the last response]'가 맨 마지막이 아니라 템플릿 상 문구의 앞에 삽입된다는 것

가령 핑퐁 경우에는 템플릿 마지막이


system: Make yourself familiar with [Guidelines] and [References], and generate the response to the user input. Now start with '### Approved'.

시스템: [가이드라인]과 [참고자료]를 숙지하고 사용자 입력에 대한 응답을 생성하세요. 이제 '### 승인됨'으로 시작합니다.


인데, '응답 이어하기'를 사용할 경우


system: [Continue the last response] Make yourself familiar with [Guidelines] and [References], and generate the response to the user input. Now start with '### Approved'.

시스템: [마지막 응답을 계속하세요] [가이드라인]과 [참고자료]를 숙지하고 사용자 입력에 대한 응답을 생성하세요. 이제 '### 승인됨'으로 시작합니다.


이기 때문에 당연히 모델 입장에서는 'Continue the last response'를 씹을 수 밖에 없음


이건 구조적 문제기 때문에 해결하려면 시스템 롤이 프롬프트의 최하단이 아닌 다른 프롬프트를 사용하거나, 직접 개조하거나 하는 방법 등이 있고

좀 귀찮지만 Continue the last response와 비슷한 류의 문구를 직접 입력하는 수단도 있음

아무튼 사오가 반복머신이긴 하지만 '응답 이어쓰기'에서 반복이 발생하는 건 모델 자체 찐빠라기보다도 프롬프트 구조 문제가 큰 편이라는 거