들어가며
- AI 코딩 결과가 마음에 들지 않을 때, 무작정 토큰을 소모하기보다 의도에 꼭 필요한 정보만 추려 컨텍스트로 제공하는 것이 훨씬 효과적.
- 모델의 컨텍스트 윈도우가 커져도, 너무 많은 정보는 오히려 AI가 원하는 부분을 찾고 이해하는 것을 방해하기 때문.
- 레거시 코드베이스에서 코딩 에이전트에게 더 만족스러운 결과를 얻기 위해 내가 쓰는 4가지 기법을 소개. 모델 성능에 크게 의존하지 않으며, 지금 당장 시간과 비용을 모두 아낄 수 있는 실용적인 방법임.
1. 구현 전에 탐색과 이해부터 하기
- 문제를 풀거나 코드를 수정하기 전, 도메인과 코드베이스에 대한 이해도를 높이는 데 시간을 투자하는 게 유리함.
- 이를 통해 더 정확한 기술 용어를 사용하고, 올바른 파일을 참조시켜 AI에게 정밀 타격하게 하는 것이 가능.
- 이 단계에서는 코드 수정을 지양하고, AI에게 질문을 던지며 지식을 쌓는 것에 집중하는 것이 좋음.
2. 따라할 코드를 보여주기
- LLM은 평균에 수렴하려는 경향이 있으므로, 좋은 코드 예시를 제공해 결과물의 수준을 높여야 함.
- 코드 컨벤션을 글로 길게 설명하는 것보다 '이 함수처럼 짜라'고 잘 만든 예시 코드를 보여주는 것이 훨씬 효과적임.
- 특히 특정 패턴을 마이그레이션할 때, 먼저 몇 개만 올바르게 변환한 뒤 AI에게 예시로 보여주면 나머지를 매우 잘 처리함.
3. 스크립트를 도구로 쥐어주기
- 정적 분석 도구를 AI에게 도구로 쥐어주면 LLM의 하방이 낮은 문제를 보완해 결과물의 품질을 높일 수 있음.
- 그리고 i18n 키를 찾는 스크립트처럼, 반복적인 실수가 발생하기 쉬운 작업을 스크립트로 만들어 AI가 활용하게 하면 확실하게 문제를 예방 가능함.
- 유사하게, 패턴이 명확한 추출/변환 작업은 AI에게 직접 시키기보다 해당 작업을 수행하는 스크립트를 짜게 해서 실행하는 것이 훨씬 정확함.
4. 강의 상류를 고치기
- 잘못된 결과물을 보고 고쳐달라고 하기보다, 애초에 그런 결과가 나온 원인인 '프롬프트'를 개선하는 것이 더 유리함.
- 더 나아가 프롬프트를 만드는 프로세스를 개선하면 좋고 (예시 코드나 테스트 코드부터 먼저 작성하기 등)
- 더 나아가 프로세스를 만든 뇌도 개선하면 더 좋음. AI와 불필요한 핑퐁을 했던 경험을 회고하고, 언제 직접 개입하고 언제 AI를 쓸지 판단하는 능력을 키워야 함.
맺으며
- 에이전트의 주요 벤치마크 중 하나는 '얼마나 오랫동안 일할 수 있는가'인데, 현실적으로 (나를 포함한) 대다수의 사용자들에게는 에이전트의 한계만큼 일을 시킬 수 있는 역량이 아직 없음
- '에이전트에게 맡길 만한 일을 찾고, 적절한 도구를 쥐어주고, 적절한 프롬프트팅으로 오랫동안 일을 시킬 수 있는' 사람이 AI 시대의 최고급 인재가 될 거라고 생각.
- 이 글에서 소개한 기법들이 그런 인재가 되기 위한 훈련에 도움이 되길 바람