시스템 프롬프트보다 기술(Skills): Anki 튜터 만들기

AI는 저를 게으르게 만듭니다.

로봇이 모든 것을 해주길 바란다는 뜻이 아닙니다. 지루한 작업에 에이전트를 한 번 사용하고 나면, 수동 워크플로우가 잘못된 것처럼 느껴진다는 뜻입니다.

Anki는 제가 간격 반복(spaced repetition)을 위해 사용하는 도구입니다. 효과는 좋지만, 문제가 하나 있습니다. 저도 모르게 속임수를 쓰게 된다는 점입니다. 어려운 카드가 나오면 그냥 넘어가기 위해 "이건 알고 있었어"라고 스스로에게 말하곤 합니다. 그것은 공부가 아니라 추측일 뿐입니다.

저는 학습 파트너를 원했습니다. 저에게 퀴즈를 내고, 제 답변을 정답과 비교하며, 올바른 난이도 점수를 결정하도록 도와줄 누군가가 필요했습니다.

거대한 시스템 프롬프트로 이를 구현하려 시도했습니다. 에이전트에게 어떻게 튜터링을 할지, 카드를 어떻게 작성할지, 그리고 Telegram에서 어떻게 행동할지를 지시했습니다.

실패했습니다. 거대한 프롬프트는 잡동사니 서랍이 되어버립니다. 내용이 부패하고, 엉망이 됩니다.

접근 방식을 바꿨습니다. Google Antigravity SDK를 사용했습니다.

하나의 커다란 프롬프트 대신, 계층 구조를 가진 에이전트 시스템을 구축했습니다.

  • Tools는 에이전트에게 손을 제공합니다.
  • Skills는 에이전트에게 습관을 제공합니다.
  • Policies는 경계를 정의합니다.
  • Hooks는 보장을 제공합니다.
  • Triggers는 이벤트에 반응합니다.

Python 도구를 사용하여 Anki에 연결했습니다. 이제 에이전트는 덱 목록을 나열하고, 복습할 카드를 가져오며, 난이도를 평가할 수 있습니다.

하지만 도구(tools)가 곧 행동(behavior)은 아닙니다. 행동을 구현하기 위해 저는 기술(skills)을 사용했습니다.

기술(skill)은 특정 지침을 포함하는 작은 파일입니다. 저는 세 가지를 만들었습니다:

  • review-buddy: 학습 세션을 진행하는 방법.
  • plain-cards: 고품질 플래시카드를 작성하는 방법.
  • codebase-cards: 코드를 학습 자료로 변환하는 방법.

이렇게 하면 메인 시스템 프롬프트를 작게 유지할 수 있습니다. 정체성은 프롬프트에 남고, 작업 세부 사항은 기술(skills)에 담깁니다.

안전 장치도 추가했습니다. 프롬프트는 실패할 수 있지만, 정책(policy)은 실패하지 않습니다. 저는 연습 모드 중에 특정 행동을 차단하기 위해 정책을 사용했습니다. 만약 에이전트가 벼락치기 세션 중에 제 일정을 변경하려 하면, SDK가 런타임 수준에서 이를 차단합니다.

그 결과 멀티 서피스(multi-surface) 에이전트가 탄생했습니다. 저는 터미널, Telegram 음성 메시지, 그리고 코드 변경 사항을 감시하는 덱 빌더에서 동일한 로직을 사용합니다.

더 나은 프롬프트를 만들려고 애쓰는 것을 멈추세요. 더 작은 프롬프트와 더 날카로운 기술(skills)을 만드는 것부터 시작하세요.

Source: https://dev.to/gde/skills-over-system-prompts-building-an-anki-tutor-with-the-antigravity-sdk-2o8f

Optional learning community: https://t.me/GyaanSetuAi