어떻게 푸나요
여기에 있는 문제는 프롬프트를 제출해서 풉니다. 그 프롬프트를 받아서 문제를 푸는 것은 여러분의 브라우저 안에서 도는 작은 모델입니다. 처음에는 낯설 수 있어서, 아래에 네 단계로 적어 두었습니다.
문제를 고릅니다
입력 조건과 출력 조건을 먼저 읽어주세요. 채점은 대부분 이 두 가지로 갈립니다. 문제마다 공개 케이스 다섯 개를 같이 보여드리는데, 실제 채점에는 보이지 않는 케이스까지 함께 씁니다. 그래서 공개된 다섯 개만 맞히도록 프롬프트를 짜면 통과하지 못합니다.
프롬프트를 두 칸에 나눠 씁니다
pre_prompt 와 post_prompt 두 칸이 있습니다. 이 사이에 테스트 입력이 끼워집니다. 그러니까 모델이 실제로 받는 글은 pre_prompt + 입력 + post_prompt 이고, 그 결과물이 기대값과 한 글자도 다르지 않아야 통과입니다. 앞쪽에는 무엇을 하라는 지시를, 뒤쪽에는 답만 쓰게 만드는 마무리를 두시면 대체로 잘 됩니다.
채점하기를 누릅니다
처음 한 번은 모델 파일을 내려받아야 합니다. 수백 MB 라서 시간이 좀 걸립니다. 받는 동안에도 화면이 멈추지 않으니 문제를 계속 읽으셔도 됩니다. 한 번 받아 두면 브라우저가 보관하기 때문에, 다음부터는 기다리지 않고 바로 시작합니다.
결과를 봅니다
케이스마다 통과했는지 틀렸는지가 나옵니다. 틀린 케이스는 모델이 실제로 뭐라고 답했는지까지 보여드리니, 그걸 보고 프롬프트를 고치시면 됩니다. 통과한 케이스에는 마진이라는 숫자가 같이 붙는데, 이게 작으면 아슬아슬하게 통과한 것입니다. 자세한 설명은 Q&A에 적어 두었습니다.
잘 모르겠으면, 일단 바로 1번 문제를 풀어보면서 감을 익혀보시는 것을 추천합니다.
세 가지 모드
문제마다 어느 모드로 도는지가 정해져 있습니다. 같은 프롬프트라도 모드가 다르면 결과가 꽤 달라지기 때문에, 어떤 차이인지 알고 계시면 도움이 됩니다.
| 모드 | 무엇이 다른가요 |
|---|---|
| raw | 채팅 형식을 씌우지 않고 글을 그대로 넣습니다. 이때 모델은 대화 상대가 아니라, 주어진 글을 이어서 쓰는 기계처럼 움직입니다. |
| chat | 채팅 형식을 씌워서 넣습니다. 모델이 조수처럼 굴기 때문에 묻지 않은 설명을 덧붙이려고 합니다. 그 버릇을 막는 것이 이 모드의 숙제입니다. |
| think | 모델이 생각하는 칸을 여러분이 직접 채워 넣습니다. 모델에게 어떻게 생각할지를 알려주고 시작하는 셈입니다. |
알아두시면 좋은 것
여러 문제에서 똑같이 걸려 넘어지는 지점들입니다. 미리 알고 계시면 한참 헤매지 않으셔도 됩니다.
- 구분자는 입력에 나오지 않을 글자로 골라주세요. 입력에 섞여 있으면 경계가 무너져서 엉뚱한 곳에서 잘립니다
- 퓨샷을 쓰시면, 마지막에 보여준 답이 모델의 기본값처럼 작동합니다
- 퓨샷이 없으면 처음 나열한 선택지가 기본값처럼 작동합니다
- chat 모드에서는 pre_prompt 를 줄바꿈으로 끝내지 않는 편이 좋습니다. 채팅 형식과 엉켜서 모델이 이상하게 받습니다
순위가 어떻게 정해지나요
각 문제별 푼 사람의 순위는, 점수가 같은 사람이 있다면 작성한 프롬프트 길이가 짧은 순으로, 그 이후에는 먼저 제출한 순으로 정해집니다.
프롬프트는 기본적으로 공개됩니다. 어떤 문제를 푸시면, 그 문제를 푼 다른 분들의 프롬프트 본문이 보입니다. 같은 방식으로 여러분이 낸 프롬프트도 그 문제를 푼 분들에게 보입니다. 아직 그 문제를 못 푼 분에게는 아이디와 점수, 프롬프트 길이, 그리고 어떤 환경에서 풀었는지까지만 보입니다.
공개 범위는 세 가지 가운데서 고르실 수 있습니다.
- 전체 비공개 · 아무에게도 보이지 않습니다. 그 문제를 푼 분에게도 보이지 않습니다. 대신 아무도 검증해 드릴 수 없게 되므로, 그런 답안은 운영자가 따로 다시 돌려 봅니다. 그때 운영자에게는 프롬프트가 보이고, 연 기록은 로그에 남습니다.
- 이 문제를 푼 사람끼리만 · 기본값입니다. 아직 못 푼 분에게 가려지므로 문제가 한 번에 소모되지 않습니다.
- 누구나 볼 수 있게 · 로그인하지 않은 분까지 모두 보십니다. 풀이를 적어 두고 주소를 걸 때 쓰십시오.
마이페이지에서 고르시면 따로 안 고른 제출 전부에 걸립니다. 제출 하나만 다르게 두고 싶으시면, 제출 번호를 눌러 들어간 쪽에서 그 제출만 바꾸실 수 있습니다. 한 문제만 풀이를 적어서 자랑하고 싶을 때도, 한 문제만 가리고 싶을 때도 있습니다.
이렇게 두는 까닭이 있습니다. 채점이 여러분 컴퓨터에서 돌기 때문에, 서버가 마지막에 받는 것은 글자뿐입니다. 모델을 안 돌리고 답만 적어 낸 것인지 서버 혼자서는 가려낼 수 없습니다. 서로 보이게 두는 것이 지금 제가 아는 가장 나은 방법입니다. 그리고 같은 문제를 통과한 프롬프트 여러 개를 나란히 놓고 보는 것이 이 사이트에서 제일 공부가 되는 자리라고 생각합니다.
프롬프트를 뺀 나머지, 그러니까 누가 언제 어떤 기기에서 내서 통과했는지는 제출 내역에서 모두 보실 수 있습니다. 문제마다도 따로 볼 수 있고, 몇 명이 시도해서 몇 명이 풀었는지도 그 자리에 있습니다. 프로필을 비공개로 두신 분도 제출 기록은 보입니다. 가려지는 것은 이름이나 소속처럼 그분이 누구인가 쪽입니다.
프롬프트 옆에는 그 사람이 돌린 환경이 같이 적힙니다. 연산을 WebGPU 로 했는지 WASM 으로 했는지, 어떤 양자화를 받았는지가 다르면 같은 프롬프트가 다른 답을 냅니다. 환경이 같이 보이지 않으면 "그대로 넣었는데 왜 나는 안 되지" 로 끝나버립니다.
전체 순위는 관점이 여럿입니다. 푼 문제 수, 총 점수, 그리고 문제를 내고 남의 제출을 검증한 기여 횟수를 따로 봅니다.
순위표에서 아이디를 누르면 그분의 프로필이 열립니다. 거기 나랑 비교하기 단추가 있습니다. 내가 풀었는데 그분이 못 푼 문제, 그분은 풀었는데 내가 못 푼 문제, 둘 다 푼 문제, 둘 다 막힌 문제를 따로 보여드립니다. 둘 다 푼 문제에서는 서로의 프롬프트가 보이므로, 같은 답을 어떻게 다르게 받아냈는지 견주기 좋습니다.
가벼운 모델로 푸는 문제
휴대폰에서는 큰 모델을 받다가 탭이 꺼질 수 있습니다. 그래서 더 작은 모델로 푸는 문제를 따로 두었습니다. 같은 과제라도 모델이 다르면 통하는 프롬프트가 달라지므로 별개의 문제로 둡니다.
가벼운 모델 중에는 한국어 지원이 잘 안 되어서 풀기 어려운 문제도 있습니다. 프롬프트에는 영어를 사용해도 되니 최대한 잘 풀어주세요. 입력과 기대 출력만 문제가 정한 대로면 됩니다.
수업에 쓰실 선생님께
수업 때 본 사이트를 활용하실 교수님 혹은 선생님께 정답지와 수업 자료를 제공해드릴 예정입니다. 관련 문의사항은 [email protected] 로 연락 주세요. 감사합니다.
더 알고 싶은 것이 있으시면 Q&A를 봐주세요. 거기에도 없는 내용이면 문의로 물어봐 주시면 됩니다.
여기에 없는 것이 궁금하시면 Q&A를 먼저 보십시오. 자주 묻는 것들을 모아 두었습니다. 거기에도 없으면 문의해 주시면 제가 직접 답해 드립니다.