How AI Assistants Work
과거의 도구는 정해진 규칙(linting 등)으로 코드를 검사했으나, 반면 현대의 AI 어시스턴트는 대형 언어 모델(LLM)을 기반으로 한다.
- 기능 구현: 자연어 명령을 실제 코드로 변환
- 디버깅: 버그 리포트를 분석하고, 문제의 원인을 찾아 수정 방안 제시
- 테스트 작성: 기존 코드를 분석하여 테스트 케이스 자동 생성
- 워크플로우 수행: 깃 메시지 작성, 코드 리뷰, 문서화 등 개발 수명 주기 전반
AI 어시스턴트는 단순 자동 완성 도구가 아닌, 개발자의 생산성을 획기적으로 향상시키는 강력한 도구이다.
컨텍스트(Context)
섹션 제목: “컨텍스트(Context)”컨텍스트(Context)란 AI가 현재 작업을 수행하기 위해 알아야 하는 모든 ‘정보’를 의미한다.
- 대화 내역: 이전 대화에서 주고받은 메시지
- 참조된 코드/파일: 사용자가 명시적으로 지정한 소스 코드
- 프로젝트 구조: AI가 파악한 프로젝트의 전체 폴더 및 파일 목록
- 시스템 프롬프트: AI의 역할이나 규칙을 미리 지정해 둔 기본 설정값
컨텍스트 구성 방식
섹션 제목: “컨텍스트 구성 방식”사용자가 입력하는 메시지만이 컨텍스트의 전부가 아닌, AI가 실제로 작업을 처리할 때 여러 요소가 조합되어 채워진다.
- 시스템 프롬프트
- 컨텍스트 윈도우의 맨 처음에 위치
- AI의 정체성, 역할, 기본 규칙을 정의
- 사용자가 직접 수정하기 전까지 모든 대화에 기본적으로 적용
- 참조된 코드/파일
- 사용자가 파일을 참조하거나, AI가 프로젝트 구조를 분석할 때 발생
- AI는 전체 프로젝트를 통째로 컨텍스트에 넣는 것이 불가능하므로, 관련성 높은 코드 조각들만 선별하여 추가
- 대화 내역
- 이전 대화들이 순서대로 컨텍스트에 포함
- 사용자 입력
- 사용자가 마지막에 입력한 새로운 질문이나 명령이 컨텍스트의 맨 끝에 추가
이 모든 요소가 합쳐져 하나의 거대한 프롬프트(명령문)를 구성하고, AI 모델은 이를 바탕으로 응답을 생성한다.
Context Window의 한계와 토큰
섹션 제목: “Context Window의 한계와 토큰”AI의 응답 품질이 갑자기 떨어지거나 의도를 파악 못한다면, 대부분 ‘컨텍스트 용량 초과’ 문제 때문이다.
- 토큰(Token): AI가 정보를 처리하는 기본 단위
- Context Window: AI가 한 번에 기억할 수 있는 토큰의 최대 개수
- 한계: 이 용량을 넘어서는 정보(긴 대화, 많은 참조 파일)가 입력되면, AI는 가장 오래된 정보부터 잊어버리기 시작
따라서 AI 성능을 높이려면, 한정된 컨텍스트 윈도우 안에 지금 작업에 꼭 필요한 정보만 정확하게 넣어주는 관리(prompt engineering)가 필수적이다.
토큰(Token)의 작동 방식과 비용
섹션 제목: “토큰(Token)의 작동 방식과 비용”토큰은 단순히 단어가 아닌, AI가 세상을 이해하는 어휘(Vocabulary) 집합에 가깝다.
- 토큰화(Tokenization)
- 모델은 학습 데이터에서 통계적으로 자주 등장하는 문자열을 하나의 토큰으로 인식
- 예를 들어
function이나import처럼 자주 쓰이는 단어는 1개의 토큰으로 처리 - 하지만
MyCustomVariable같은 드문 단어는My,Custom,Variable처럼 3개 이상의 토큰으로 분리될 수 있음
- 언어별 효율 차이
- 대부분의 모델은 영어 데이터 위주로 학습
- 따라서 영어는 1단어 = 1토큰에 가까워 효율이 높음
- 한국어는 구조가 달라 한 글자나 조사가 별도 토큰으로 분리되는 경우가 많음(예: ‘안녕하세요’ -> ‘안녕’, ‘하세’, ‘요’ 3~4 토큰)
- 동일한 의미의 질문도 한국어로 하면 영어보다 더 많은 토큰이 소모될 수 있음
- 비용과 직결되는 문제
- 대부분의 AI 서비스는 사용한 토큰의 총량에 따라 비용을 청구
입력 토큰 수(컨텍스트) + 출력 토큰 수(AI 응답)= 총비용- 컨텍스트 윈도우가 크다는 것 -> 한 번에 더 많은 토큰을 처리할 수 있다는 의미
- 거대한 파일을 통째로 첨부하거나, 불필요하게 긴 대화를 이어가는 것은 AI의 성능 저하뿐만 아니라 직접적인 비용 증가로 이어짐
RAG
섹션 제목: “RAG”AI가 수백 개의 파일로 이루어진 프로젝트를 다루기 위해 RAG(Retrieval-Augmented Generation)라는 기술을 사용한다.
- 색인화(Indexing)
- 코드를 작은 조각(chunk)으로 나누고, 각 조각의 ‘의미’를 나타내는 수학적 좌표(Vector Embedding)를 계산하여 데이터베이스에 저장
- 예:
UserService.java파일의login()메서드 코드를 하나의 조각으로 나누고, 해당 코드의 벡터를 생성하여 색인에 추가
- 검색(Retrieval)
- 사용자가 “로그인 관련 버그 수정해줘”라고 질문하면, AI는 이 질문의 의미(벡터)와 가장 가까운 코드 조각(벡터)을 색인에서 탐색
- 이때 ‘로그인’, ‘인증’, ‘User’ 등의 키워드뿐만 아니라, 의미적으로 관련된 코드(e.g.,
SecurityConfig,JwtProvider)도 함께 탐색
- 증강(Augmentation)
- AI는 이렇게 찾아낸 3~5개의 가장 관련성 높은 코드 조각을 컨텍스트 창에 자동으로 삽입
- 마지막으로 사용자 질문(”…버그 수정해줘”)과 함께 이 코드 조각들을 AI에 전달
- 생성(Generation)
- AI는 제공된 코드 조각과 질문을 바탕으로 응답을 생성
외부 도구 연동
섹션 제목: “외부 도구 연동”초기 AI 어시스턴트는 단순히 텍스트 응답만 생성했지만, 현대 AI는 실제 도구를 직접 사용할 수 있다.
Function Calling(Tool Use)
섹션 제목: “Function Calling(Tool Use)”AI가 응답 생성 중 외부 도구가 필요하다고 판단하면, 도구를 호출하고 그 결과를 바탕으로 최종 답변을 생성한다.
- 서울의 실시간 날씨 정보 요청
- AI가 날씨 정보는 실시간 API가 필요하다고 판단
get_weather(location="서울", date="오늘")형태로 도구 호출- API가
{"temp": 15, "condition": "맑음"}응답 반환 - AI가 해당 응답을 바탕으로 최종 응답 생성
MCP 도구 연동의 표준화
섹션 제목: “MCP 도구 연동의 표준화”AI가 외부 도구와 통신을 위해선 아래와 같은 한계점이 존재했다.
- 과거에는 각 도구마다 다른 연동 방식을 사용
- AI 어시스턴트마다 지원하는 도구가 제한적이었으며, 새 도구를 추가하기 위해 모델 재학습이나 커스텀 필요
하지만 MCP(Model Context Protocol) 도입 후에는 새 도구를 플러그인처럼 추가할 수 있으며, AI 모델 수정 없이도 기능을 확장할 수 있게 되었다.
MCP 작동 구조
섹션 제목: “MCP 작동 구조”MCP는 세 가지 핵심 구성 요소로 이루어진다.
- MCP 클라이언트(AI 어시스턴트)
- 사용자 요청 분석
- 필요한 도구(MCP 서버) 선택
- 도구 실행 결과를 자연어로 변환
- MCP 프로토콜(통신 규약)
- 표준화된 메시지 형식(JSON-RPC 기반)
- 요청/응답 구조 정의
- 에러 처리 및 타임아웃 관리
- MCP 서버(실제 도구)
- 특정 작업 수행(파일 읽기, 브라우저 제어, API 호출 등)
- MCP 프로토콜로 AI와 통신
- 실행 결과를 표준 형식으로 반환
예를 들어 로그인 페이지 테스트와 같은 요청이 오면 다음과 같은 과정이 진행된다.
- MCP 클라이언트가 요청을 분석해 적절한 MCP 서버(브라우저 자동화) 선택
- MCP 프로토콜을 통해 Playwright 서버에
{"method": "browser.navigate", "params": {"url": "..."}}메시지 전송 - Playwright 서버가 실제 브라우저를 실행하고 테스트를 수행
- MCP 프로토콜로
{"status": "success", "screenshot": "...", "errors": [...]}결과 반환 - AI가 이를 해석하고 자연어로 변환하여 사용자에게 전달한다.
주요 MCP 서버 유형
섹션 제목: “주요 MCP 서버 유형”- 파일시스템: 파일 읽기/쓰기, 디렉토리 탐색
- 브라우저 자동화: 웹페이지 테스트, 스크린샷, UI 검증
- 데이터베이스: SQL 쿼리 실행, 스키마 분석
- API 통합: 외부 서비스 호출 (Slack, GitHub, Notion 등)
- 코드 분석: 심볼 검색, 의존성 추적, 리팩토링 지원
- 검색 엔진: 웹 검색, 문서 조회, 실시간 정보 수집
한계와 주의사항
섹션 제목: “한계와 주의사항”- 컨텍스트 윈도우 압박
- 도구 호출 결과도 컨텍스트를 소모
- 큰 API 응답이나 긴 파일 내용은 토큰 낭비 가능
- 필요한 정보만 요청하도록 명확히 지시하는 것이 중요
- 실행 권한과 안전성
- AI가 실제 시스템 명령어를 실행할 수 있음
- MCP 서버로 전송되는 데이터 외부 유출 위험
- 파일 삭제, 데이터베이스 수정 등 위험한 작업 가능
- 대부분의 도구는 사용자 승인을 요구하는 안전장치 포함 필요
- 비용 증가
- 도구 호출마다 추가 토큰 소모
- API 호출 비용(외부 서비스 사용 시)
- 복잡한 작업일수록 여러 도구를 연쇄 호출하여 비용 상승
프로덕션 코드에서 AI 어시스턴트 사용 시 가장 민감하고 중요한 부분으로, 내 코드가 반드시 AI 서버로 전송된다는 점을 이해하는 것이 중요하다.
- 무료/개인용 플랜: 모델 학습에 사용될 가능성이 높음
- 기업용(Enterprise) 유료 플랜: 일반적으로 데이터가 저장되거나 학습에 사용되지 않음(Zero-Retention) 보장 가능
따라서 민감한 코드를 다루기 전, 사용하려는 서비스의 데이터 프라이버시 및 이용 약관을 확인하는 것이 중요하다.