당신의 AI는 환각을 일으키는 것이 아닙니다. 추측하고 있는 것입니다.
AI 모델은 자신이 틀렸을 때를 알지 못합니다. 불확실성을 표시할 신호가 없습니다. 입력된 내용을 바탕으로 가장 가능성 높은 다음 단어를 생성할 뿐입니다. 모델은 정답을 말할 때나 오답을 말할 때나 똑같은 확신을 보입니다.
이것은 시스템의 결함이 아닙니다. 아키텍처가 작동하는 방식 그 자체입니다.
LLM은 다음 토큰 예측기입니다. 사실 관계가 담긴 데이터베이스를 확인하는 것이 아니라, 대규모로 패턴 완성을 수행합니다. 모델이 틀린 답을 내놓는다면, 그것은 당신의 프롬프트가 확률을 그 결과 쪽으로 유도했기 때문입니다.
이 차이는 문제를 해결하는 방식을 바꿉니다. 모델이 환각을 일으키는 것이라면 해결할 수 없습니다. 하지만 프롬프트가 모호해서 모델이 추측하고 있는 것이라면, 지금 당장 해결할 수 있습니다.
Datawise에서는 AI 모델을 벤치마킹합니다. 우리는 일관된 패턴을 발견했습니다. 입력값에 세부 사항이 부족할 때 모델은 틀린 답을 내놓습니다. 모델은 당신이 의도한 질문이 아니라, 실제로 던진 질문에 답합니다.
다음 두 프롬프트를 비교해 보세요:
- "Python에서 Postgres에 어떻게 연결하나요?"
- "Ubuntu 24.04 환경에서 Cloudflare Tunnel 뒤에 있고, 30초 타임아웃과 10개의 커넥션 풀을 사용하는 psycopg3를 이용해 Python에서 Postgres에 어떻게 연결하나요?"
첫 번째 프롬프트는 모델이 여섯 번의 추측을 하게 만듭니다. 두 번째 프롬프트는 제약 조건을 제공합니다.
구체적인 프롬프트를 작성하기 어려운 이유는 자신의 요구 사항을 정확히 모르기 때문입니다. 구체적인 프롬프트를 쓸 수 없다면, 아직 무엇이 필요한지 모르는 것입니다. 프롬프트를 입력하는 것을 멈추고 생각을 시작하십시오.
AI는 정답과 똑같은 유창함으로 오답을 생성합니다. 문장은 권위 있게 들리고, 코드는 깔끔해 보입니다. 모델이 빈틈을 메우고 있다는 신호는 전혀 없습니다.
시니어 엔지니어는 출력을 그대로 믿지 않습니다. 그들은 질문합니다. "내가 어디에 해석의 여지를 남겨두었는가?" 모든 모호한 단어는 모델이 당신을 대신해 내린 결정입니다.
단어만 살짝 바꿔서 프롬프트를 다시 제출하지 마십시오. 그것은 로그를 확인하지 않고 서비스를 재시작하는 것과 같습니다. 근본 원인을 해결하는 것이 아닙니다.
출력이 틀렸다면, 먼저 자신의 프롬프트를 읽어보십시오. 해석의 여지를 남겨둔 곳이 어디인지 찾아내십시오. 다음 사항들에 대해 제약 조건을 추가하십시오:
- 입력 및 출력
- 에러 처리
- 의존성
- 엣지 케이스
엔터를 누르기 전에, 아무런 맥락도 모르는 신입 엔지니어의 관점에서 프롬프트를 읽어보십시오. 당신이 추측해야 하는 모든 지점은 모델 또한 추측하게 될 지점입니다.
모델은 지시 사항의 빈틈을 보여줍니다. 그 빈틈을 메우세요. 더 정교한 프롬프트를 작성하세요.
학습 커뮤니티(선택 사항): https://t.me/GyaanSetuAi