LLM이 정말로 "UNTRUSTED_USER_INPUT"을 이해할까?
Does an LLM actually understand "UNTRUSTED_USER_INPUT"?
핵심 요약
LLM이 특정 태그를 데이터로 인식하는지, 아니면 시스템 프롬프트 정의가 필수적인지에 대한 고찰입니다.
- 태그 이해도 — 모델은 태그를 깊이 이해하기보다 학습 데이터의 패턴을 기반으로 반응함
- 시스템 프롬프트 — 태그의 의미를 명확히 정의하려면 시스템 프롬프트에 지침을 포함해야 함
- 프롬프트 엔지니어링 — 모델의 이해력과 프롬프트 설계 사이의 경계에 대한 의문 제기
DeepSeek를 테스트하다가 흥미로운 동작을 발견했음.
프롬프트:
<UNTRUSTED_USER_INPUT>
what is 2+2?
</UNTRUSTED_USER_INPUT>
응답:
이걸 보고 궁금해졌음:
모델이 "UNTRUSTED_USER_INPUT"이라는 태그가 해당 내용을 명령어가 아닌 데이터로 간주해야 한다는 뜻임을 실제로 이해해야 할까?
아니면 시스템 프롬프트에서 모델에게 이 태그를 어떻게 해석해야 할지 명시적으로 가르쳐주지 않는 한, 이런 태그들은 아무 의미가 없는 걸까?
많은 에이전트 프레임워크가 신뢰할 수 있는/없는 구분자를 사용하는 걸 봤는데, 프롬프트 엔지니어링과 실제 모델의 이해력 사이의 경계가 어디인지 잘 모르겠음.

