LLM의 토큰화 메커니즘, 프롬프트 설계 원칙, 코딩 에이전트(Cursor, Claude Code) 활용법에 대한 기술 강의 요약.
@transactional → @, trans, actional (3개 토큰)| 구분 | 특징 |
|---|---|
| 영어 | 더 작은 토큰으로 분리 → 효율 좋고 의미 보존 우수 |
| 한국어 | 같은 글자 수라도 토큰 수가 더 많이 계산됨 |
⚠️ 코드 파일을 많이 붙여넣는다고 무조건 답이 좋아지는 것은 아님. 토큰 증가로 비용·지연이 증가하고, 중요 정보가 긴 문맥에 묻힐 수 있음.
문맥이 부족하거나 지시가 애매하면, LLM이 빈칸을 자기 방식으로 채워 그럴듯한 내용을 생성함.
| 유형 | 설명 |
|---|---|
| 존재하지 않는 어노테이션 | 실제로 없는 Spring 어노테이션 제안 |
| 가짜 메서드 | 실제 라이브러리에 없는 메서드 호출 |
| 오래된 설정 | 오래된 설정을 최신 방식처럼 설명 (가장 위험) |
| 가짜 옵션 | 공식 문서에 없는 옵션 생성, 없는 클래스·파일이 있다고 가정 |
"Spring 몇 버전 기준으로" 명확히 지정"이 안에서 만들어내" 같은 지침 제공"공식 문서 기준으로 확인해줘" 또는 "버전을 명시해서 비교해줘"1. 메시지 정리 → 사용자 요청을 정리하고 토큰화
2. 행렬 변환 → 토큰을 행렬로 만들어 GPU 메모리(VRAM)에 적재
3. 임베딩 조회 → 토큰의 임베딩 값 조회
4. Transformer → 다음 토큰을 연속 생성
5. 디코딩 → 토큰 ID 집합을 사람이 읽을 수 있는 텍스트로 변환
"나무에서 사과가 떨어졌다. 그건 왜 떨어졌을까?"에서 "그건" → "사과" 를 가리킨다고 인지"위에서 이렇게 말했잖아. 이거대로 해줘" 같은 이전 결과 참조 가능| 항목 | 내용 |
|---|---|
| 속도 | KV 캐시로 속도 향상 |
| 메모리 | 문맥이 길어질수록 GPU 메모리 사용 증가 |
| 동시 처리 | 메모리 사용 증가 → 동시 처리 가능한 요청 수 감소 |
| 기준 | 내용 |
|---|---|
| 실제 기준 | 소설 약 5권 분량 |
| 일반 사용 | 20문장, 3,000자 → 전혀 문제없음 |
| 프롬프트 지침 | 빠르게 읽고 답변 가능 |
| 값 | 특성 |
|---|---|
| 낮음 | 안정적, 확실한 답변 (코드 작업 등에 적합) |
| 높음 | 창의적, 다양한 답변 |
GPT, Claude, Gemini 같은 서비스는 Temperature가 고정되어 있으며, Ollama·Hugging Face에서 직접 모델을 실행할 때 조절 가능.
"JSON 형태로 답변해줘")프롬프트는 말로 작성하지만 본질은 인터페이스 — AI와 사람이 어떻게 협업할지 정의하는 것
| 요소 | 설명 | 예시 |
|---|---|---|
| 역할 (Role) | AI의 역할 설정 | "너는 시니어 백엔드 개발자야" |
| 태스크 (Task) | 구체적인 작업 지시 | "이 코드를 리팩터링해줘" |
| 맥락 (Context) | 길지 않은 배경 정보 | "Spring Boot 3.2 프로젝트야" |
| 제약사항 (Constraints) | 하지 말아야 할 것 | "외부 라이브러리는 추가하지 마" |
| 판단 기준 (Criteria) | 스스로 판단할 수 있는 기준 | "성능보다 가독성 우선" |
| 출력 형식 (Output Format) | 답변 구조 고정 | "JSON 형태로 반환해줘" |
| 실패 처리 (Failure Handling) | 정보 부족 시 행동 지침 | "부족한 정보는 먼저 질문하세요" |
❌ "이 코드 고쳐줘"
무엇이 빠졌나?
"고칠 게 없습니다" 라고 답변"추측하지 말고 부족한 정보를 먼저 말하세요" 같은 실패 조건을 넣으면, LLM이 작업 중 실패 가능성을 감지하고 명확히 "실패했습니다" 라고 알림.
<role>시니어 백엔드 개발자</role>
<context>Spring Boot 3.2 프로젝트</context>
<code>...</code>
LLM을 잘 사용하기 위한 모든 기능을 사용자가 몰라도 사용할 수 있게 만든 도구.
단순히 Claude API나 GPT API를 랩핑한 것이 아님.
.cursorrules.md 같은 설정 파일 포함1. 사용자 요청 → 프롬프트 입력
2. 프롬프트 변환 → LLM에 맞는 형식으로 변환
3. LLM 호출 → 변환된 프롬프트로 요청
4. 도구 실행 → 파일 읽기/수정, 터미널 명령 실행
5. 루프 → 결과를 다시 코딩 에이전트로 가져와 반복
| 구성 요소 | 역할 |
|---|---|
| 모델 선택 | 어떤 LLM 모델을 사용할지 지정 |
| 에이전트 지침 | 어떤 에이전트를 사용할지 설정 |
| 샌드박스 | 보안 레이어 제공 |
최신 프롬프트 기법들이 Cursor나 Claude Code 업데이트 하나로 자동 반영됨.
KV 캐시가 아닌, 반복되는 선호 패턴(빌드 명명, 디버깅 방식 등)을 학습하여 메모리에 저장.
✅ Spring 버전 명시: 최신 정보가 중요한 질문은 항상 버전을 명시하거나 공식 문서 기준을 제시
✅ 컨텍스트 길이 관리: 3,000자·20문장 정도는 문제없지만, 소설 5권 이상은 비용과 지연 고려
⚠️ LLM 신뢰 한계: LLM은 굉장히 많이 틀림 → 항상 검증 필요
⚠️ 코드 파일 붙여넣기: 많이 붙여넣는다고 무조건 답이 좋아지는 것은 아님. 중요 정보가 묻힐 수 있음