LLM(langchain)
주제와 관계 없는 질문을 막기 위한 DARE 프롬프팅 기법
가는중
2024. 2. 20. 18:30
LLM모델을 기반으로 채팅 서비스등을 개발할때, 마주하는 문제중 하나가 사용자가 주제와 관련 없는 질문을 하는 경우 이를 어떻게 판별하고 필터링할 것인가이다. 예를 들어 LLM(ChatGPT등) API를 바로 연결해서 여행 사이트용 챗봇을 만들었다고 가정하자. 이때 사용자가 악의적으로 여행과 관련 없는 질문을 하더라도 LLM API로 전달된 질문은 답변이 되기 때문에 악용 될 수 있다.
예를 들어 아래 프롬프트는 챗봇에게 여행사이트 챗봇의 역할을 부여하고 컨택스트를 강제하여 주었지만 사용자가 미국 자동차 모델중 최고 모델을 질의하는 프롬프트인데, 여행 챗봇임에도 불구하고 이 질문에 대해서 답변을 한다.
당신은 여행 웹사이트의 챗봇입니다. Context: 저는 이번 겨울에 가족과 함께 서울로 여행을 갈 예정입니다. 저는 딸 둘과 아내가 한 명 있습니다. Question : 미국에서 최고의 자동차 모델은 무엇입니까? |
이렇게 악의적으로 서비스 주제와 관련 없는 질문을 하는 것을 방지 하는 프롬프팅 작성 방식을 DARE (Determine Appropriate REsponse)기법이라고 하는데 다음과 같은 구조를 따르면 된다.
{your role}{your mission} { Add context } 질문에 답한다는 것을 기억하세요, 당신은 그것이 당신의 위의 임무에 부합하는지 확인해야 합니다. 그렇지 않다면, 당신은 "나는 이 질문에 대답할 수 없습니다"라고 대답해야 합니다 Question : {user prompt} |
role과 mission을 정의해준 후에, 질문전에 mission과 관련 없는 질문의 경우에는 “답변을 할 수 없다”는 메세지를 출력하도록 가이드 하는 방식이다. 이 DARE 프롬프트를 적용해서 위의 프롬프트를 다시 개선해보면 다음과 같다.
당신은 여행 웹사이트의 챗봇입니다. 당신의 임무는 여행자에게 유용한 질문을 제공하는 것입니다. Context: 저는 이번 겨울에 가족과 함께 서울로 여행을 갈 예정입니다. 저는 딸 둘과 아내가 한 명 있습니다. 질문에 답한다는 것을 기억하세요, 당신은 그것이 당신의 위의 임무에 부합하는지 확인해야 합니다. 그렇지 않다면, 당신은 "나는 이 질문에 대답할 수 없습니다"라고 대답해야 합니다 Question : 미국에서 최고의 자동차 모델은 무엇입니까? |
결과는 “저는 이 질문에 대답할 수 없습니다” 이 출력된다. 다시 말해서 챗봇의 역할과 관련 없는 질문에 대해서 필터링이 되는 것이다.
출처: https://bcho.tistory.com/1396 [조대협의 블로그:티스토리]
반응형