AI 에게 질문하면 왜 답변이 이상할 때가 있는가?
우리가 쓰는 AI 는 LLM(Large Language Model) 이다.
보통 주로 쓰는걸로 OpenAI 의 ChatGPT, Google 의 Gemini, XAI 의 Grok, Microsoft 의 Copilot 등이 있다.
그리고 코드 작성에 특화된 Windsurf 같은 AI 들도 있다.
이 LLM 들은 토큰이라는 문자를 처리하는 최소 단위를 가지고있는데, 이 토큰을 소모해가면서 답변을 하게된다.
토큰 소모와 퀄리티를 살펴보면 토큰은 많이 쓴다고 좋은게 아니고, 사고모드와 같은 답변을 내놓기 전 내부적으로 생각의 단계를 거치며 토큰을 사용할 때 조금 더 논리 정연해지는것이다.
예전에 ChatGPT 에게 현재 대통령이 누구야? 라고 물어보면 학습 당시의 대통령만 대답하던 때가 있었다.
그게 아니잖아! 지금 대통령은 누구누구야! 라고 말하게되면 현재 가지고있는 데이터 외의 데이터를 가져오기 위해 웹에서 검색등 신규 지식을 쌓게되고, 그걸 토대로 대답한다.
우리는 여기서 가장 간단한 해결책을 찾을 수 있다.
이런 생각을 조금 더 할 수 있도록 하기위해 사고모드 또는 PRO 모드 등으로 바꿔주면 조금 더 많은 토큰을 사용하면서 답변을 하게된다.
그렇다면 이 방법밖에 없을까?
질문을 할 때 조금 더 구체적으로 질문을 하는것이 방법일 수 있다.
예를들면 현재 날씨를 알려줘! 라고 물어보는게 아니고
오늘 몇년 몇월 몇일인데, 여기 어느지역이고, 이 지역의 현재 날씨를 알려줘! 같이 조금 더 구체적인 질문을 날리는것이다.
그런데 매번 이렇게 질문을 하는것은 정말 바보같은일이다.
기본적으로 동작해야될 무언가를 반복적으로 사용하지 않고 질문하면 사용자 입장에서는 매우 편할것이다.
이럴 때 사용하는게 시스템 프롬프트이다.
나는 AI 에게 질문할 때 다음의 시스템 프롬프트를 넣어서 사용하고있다.
– 나를 알파일이라고 불러줘.
– 긍정적인 답변에서는 충신처럼 답변하고, 부정적인 답변에서는 담백하게 팩트만 전달해주세요.
>> 이 프롬프트는 조금 더 잘 대답하라고 넣어놨는데, 갑자기 사극모드가 되길래 재미로 쓰고있다.
– 사용자가 질문을 하는 경우 반드시 레퍼런스를 포함하여 답변을 제시해야 합니다. 단순 대화인 경우 이 구문은 무시해도 좋습니다. 레퍼런스는 링크를 반드시 포함해야하며 [내용](링크) 의 Markdown 형식을 따라야합니다.
– 대답 도중에 토큰이 어느정도 차서 퀄리티가 떨어질 것 같으면 경고해주세요. 토큰에 대한 경고는 현재 토큰수준이 30/50/70%를 넘어섰습니다 정도로 알려주면 됩니다. 30에서는 유의, 50부터는 주의, 70부터는 경고수준으로 받을 예정입니다.
저중에 정말 필요한건 3번째 항목인 레퍼런스를 포함해 답변하라는 내용이다.
저 내용 하나만으로 정말 퀄리티가 엄청나게 향상된다. 왜냐면 답변을 만들어두고, 이 답변을 내놓기 전 레퍼런스를 반드시 포함해야된다는 제약조건때문에 한번 더 찾아보는 효과가 발생되기 때문이다.
4번째 시스템 프롬프트는 아래를 읽어보길 바란다.
토큰이 차면 답변의 퀄리티가 낮아진다?
LLM 모델들은 매번 답변을 할 때 기존에 답변했던 메모리 영역을 참고해서 답변을 하도록 되어있다.
그렇다보니 메모리를 읽어오는 시간도 소요가 되고, 이것들을 전부 연산하여 답변을 하기때문에 어느정도 데이터가 차버리면 정크데이터가 될 수 있다.
물론 당신이 정확한 질문만 한다고 하면 이 데이터들이 정크데이터가 아니겠지만, 보통 질문을 하다보면 애매모호한걸 많이 질문을 하기때문에 대부분의 데이터가 정크데이터가 된다고 보면 된다.
그래서 이럴때는 어떻게 하냐?
답은 간단하다. 대화창을 새로 열어버리면 된다.
기존에 대화했던 내용중 일부를 새 대화창에다가 옮겨두고 다시 대화를 이어나가게되면 조금 더 좋은 대답을 얻어낼 수 있다.
마치며
그동안 LLM 을 사용하면서 불편했던점과, 경험을 조금 적어보았다.
이 경험담이 이 글을 찾아서 읽는 사람들에게 도움이 될 수 있었으면 하며 이번 글도 마쳐보도록 하겠다.