[6팀 전이진] Chapter 1-2. AI와 테스트를 활용한 안정적인 기능 개발#82
Open
im-binary wants to merge 46 commits intohanghae-plus:mainfrom
Open
[6팀 전이진] Chapter 1-2. AI와 테스트를 활용한 안정적인 기능 개발#82im-binary wants to merge 46 commits intohanghae-plus:mainfrom
im-binary wants to merge 46 commits intohanghae-plus:mainfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
과제 체크포인트
필수 스펙
기본 과제
공통 제출
기본 과제(Easy)
기본 과제(Hard)
심화 과제
과제 셀프회고
쪼끔 제가 한 과제에 대한 설명이 필요할 것 같아 덧붙입니다!
처음에는 Gemini 무료 플랜으로 에이전트를 구현하고, 오케스트레이션 구조로 진행하려 했습니다.
아래는 초기에 구상했던 구조입니다.
그러려면 꼭 필요한 작업이 두 가지 정도 있었습니다.
요구사항과 관련된 코드를 gemini에게 알려주는 것은
scanCodebase()라는 함수를 만들어 요구사항에서 키워드를 추출해 그 키워드를 기반으로 프로젝트의 파일을 찾고 파일 내용(토큰 때문에 최대 10개)과 프로젝트의 구조를 프롬프트에 담았습니다.gemini가 만들어준 코드를 올바른 곳에 두는 것은 gemini에게 오는 답변이 일관적이지 않았습니다. full code로 올 때는 파일을 삭제하고 다시 생성하는 방법을 사용하고, 변경이 필요한 부분부분만 오는 경우는 diff를 비교해주어야 했습니다. AST 파싱을 해야 하나 또 AI가 라인 번호도 잘 모르니까 더 어떻게 해야 할 수 있을 지 감이 잡히지 않았습니다. 그러다가 더는 리소스를 쓰는 게 의미있게 느껴지지 않아 코드를 수정하는 건 다른 AI에게 위임을 해야겠다고 생각했습니다.
(사실 여기서 한계를 느껴서 claude로 넘어가는 선택지도 있었으나 너무 멀리와버려서 지금 가기로 한 길을 끝까지 가봐야겠다… 싶었습니다.)
제가 Github 학생 계정이 있어 Copilot Chat을 무료로 쓸 수 있다는 사실을 알게 되고 Copilot의 에이전트에게 코드 수정의 역할을 위임해야겠다고 계획을 세웠습니다.
그래서 아래의 구조로 수정해보기로 했습니다.
원래는 다섯 개의 에이전트를 만드려고 했는데 어쩌다보니 3개는 앞선 에이전트들이 만들어 준 프롬프트를 이용하여 누군가 만들어놓은 에이전트를 사용하는 방식처럼 되어버렸습니다.
사실 과제할 때 어떻게든 만들어야 한다보다 어떻게 해야 실제로 동작할까 에 집중했다보니까 아쉬움이 좀 많이 남는데요. 만약 gemini로 에이전트를 구성한다고 가정했을 때 제가 고민했던 지점인 gemini가 알려준 코드를 기존의 내 코드에 어떻게 얹을까를 더 딥하게 고민해서 완성했어야 했나 싶기도 합니다.
혹시 과제의 의도가 그것까지 고려한 과제였을까요? 만약 제가 그걸 구현한다면 어떤 정보나 문서를 찾아보는 게 도움이 될까요?
AI 도구 활용 개선 기록
💸 토큰 절약 실험
🤡 API 오류 대응
🥊 각 에이전트와의 시행착오
기술적 성장
LLM 응답의 일관성을 위해 출력 형식 제어하는 방법을 알게 되었습니다.
그냥 느낌으로 알고 있던 CLI 도구 만드는 방법을 이번 기회에 활용해보게 되어 앞으로 자동화하고 싶은 작업이 있을 때마다 종종 잘 써먹을 수 있을 것 같습니다.
코드 품질
위에서 구조 설명하며 정리하여 생략합니다!
학습 효과 분석
ChatGPT에 개인 맞춤 설정해서 사용했을 때는 그닥 그 설정의 효용을 느끼지 못했습니다.
그런데 이번 과제에서 AI에게 잘 전달하기 위해 프롬프트에 문구를 추가하고 가다듬고 몇 번씩이나 검증하는 과정을 거치면서 맞춤형 설정을 했지만 왜 내 AI는 내 맞춤형이 아닌가를 깨달을 수 있었던 것 같습니다.
LLM은 줄 번호를 .. 인식하지 못한다는 것도 알게 되었습니다.
과제 피드백
AI에게 설명을 잘하면 잘할 수록 대답의 질이 좋아진다는 것은 알고는 있었지만 어느 수준으로까지 설명해야 하나 싶었는데 이번 과제를 통해 그 기준을 조금은 잡을 수 있었던 것 같습니다. 또 효과적으로 AI 가 내 말을 듣게 하는 방법도 여러 번 프롬프트 검증하는 과정을 통해 배울 수 있었습니다.
리뷰 받고 싶은 내용