| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- 디자인 패턴
- 생성 패턴
- 청첩장 모임
- docker
- PostgreSQL
- Rust
- github
- ssh
- 티스토리챌린지
- 회고
- 토스
- 실용주의 프로그래머
- 경로 계획 알고리즘
- 커머스
- study
- DevOps
- 논문 정리
- 구조 패턴
- AWS
- AWS 비용 절감
- 14일 공부
- amazon ecs
- leetcode
- terraform
- 오블완
- MAPF
- Playwright
- Til
- Go-lang
- 지표
- Today
- Total
밤 늦게까지 여는 카페
AI 엔지니어링 스터디 #1 - Anthropic이 알려주는 컨텍스트 엔지니어링 본문
안녕하세요. 회사에서 AI 엔지니어링 스터디를 진행하게 되었는데 제가 공부한 내용들을 정리하고자 합니다.
블로그 글을 읽으면서 떠올랐던 질문들을 정리해서
1. Context(컨텍스트)가 뭐에요?
Anthropic 블로그에서는 컨텍스트를 다음과 같이 설명합니다.
Context refers to the set of tokens included when sampling from a large-language model (LLM)
컨텍스트란 LLM이 답변을 생성할 때 입력으로 함께 넣어주는 토큰들의 집합이라고 하네요.
chatGPT, Gemini, Claude 등 LLM의 입력으로 전달되는 토큰들이라고 하면 다양한 값들이 있습니다.
- 시스템 프롬프트
- 유저 프롬프트
- 대화 히스토리
- Tool 호출 결과
- 등등
2. 그러면 컨텍스트 엔지니어링은 무엇이죠?
컨텍스트 엔지니어링은 수많은 토큰들 중에서 꼭 필요한 토큰들만 추출하여
LLM이 효율적으로 동작할 수 있도록 도와주는 작업이라고 할 수 있습니다.
3. 컨텍스트 엔지니어링과 프롬프트 엔지니어링의 차이는 무엇이죠?
컨텍스트 엔지니어링과 프롬프트 엔지니어링은 LLM 모델에 전달하는 입력을 튜닝한다는 점에서 비슷합니다.
프롬프트 엔지니어링을 유저 프롬프트를 잘 작성하는 방법이라고 한다면
컨텍스트 엔지니어링은 유저 프롬프트를 포함한 모든 토큰들 중에서 정말 필요한 토큰들을 추출하는 방법이라고 할 수 있습니다.
프롬프트 엔지니어링 => 유저 레벨 토큰 최적화
컨텍스트 엔지니어링 => 시스템 레벨 토큰 최적화
라고 생각할 수 있을 것 같습니다.
4. LLM 모델들의 성능이 점점 좋아지고 있는데 컨텍스트 엔지니어링을 왜 해야 하죠?
LLM 모델들의 성능이 좋아지면서 처리할 수 있는 토큰 수를 의미하는 컨텍스트 윈도우가 점점 커지고 있습니다.
특히, 구글의 gemini 모델들은 컨텍스트 윈도우가 백만 이상인 것들도 많습니다.
- 컨텍스트 윈도우가 백만 이상이면 소스 코드 5만줄까지 입력에 넣을 수 있습니다 ㄷㄷㄷ
- 참고: https://ai.google.dev/gemini-api/docs/long-context?hl=ko
그럼에도 불구하고
1) 컨텍스트가 길어졌을 때 답변의 정확도가 떨어지고
- 참고 자료: Context Rot
2) 마이그레이션, 복잡한 연구 같은 큰 작업들의 경우 컨텍스트가 매우 길어지기 때문에
컨텍스트 엔지니어링이 필요합니다.
5. 컨텍스트 엔지니어링의 예시가 있을까요?
블로그에서는 다음 예시들을 소개해줍니다.
- 시스템 프롬프트 잘 작성하기: 너무 구체적이지도, 너무 포괄적이지도 않고 직접적인 언어로 작성하기
- AI agent가 사용하는 Tool들 잘 만들기: 필요한 Tool을 쉽게 찾을 수 있도록 상호 배제적으로 구성하기
- Just In Time(JIT) 컨텍스트 전략: 컨텍스트에 대한 링크를 전달해서 필요할 때 읽을 수 있도록 하기
6. 시스템 프롬프트를 잘 작성하는 방법이 있을까요?
시스템 프롬프트도 감으로 만드는 것보다는 검증 과정을 거치는 것이 좋습니다.
- LLM으로 프롬프트 초안을 만들 수 있습니다.
- 여러 버전을 만들어서 A/B 테스트를 할 수 있습니다.
- 테스트 케이스로 성능을 비교하면서 개선할 수도 있습니다.
- 참고: https://claude.com/blog/evaluate-prompts
이렇게 하면 더 안정적으로 동작하는 시스템 프롬프트를 만들 수 있습니다.
7. JIT 컨텍스트 전략을 잘 수행하는 방법이 있을까요?
JIT 전략이 잘 동작하려면 자료 구조가 정리되어 있어야 합니다.
소스 코드를 예시로 들면 다음 방법이 있습니다.
- 폴더 이름과 계층을 명확하게 나누기
- 10중 폴더 같이 너무 깊게 만들지 않기
- 각 폴더에 CLAUDE.md 같은 설명 문서 두기
CLAUDE.md 같은 설명 문서에는 다음 내용을 적어두면 좋습니다.
- 폴더가 어떤 역할을 하는지
- 어떤 파일을 먼저 보면 좋은지
- 주의해야 할 설계 규칙이 있는지
8. 4에서 말해주셨던 컨텍스트가 길어질 수 밖에 없는 작업들은 어떻게 하나요?
Anthropic에서는 다음 3가지 방법을 제시합니다.
- Compaction
- 컨텍스트 윈도우 제한에 가까워지면 단순 출력이나 중복 정보를 제거합니다.
- 무작정 토큰들을 지우는 것보다는 일단 모든 토큰을 다 담고 조금씩 지워갑니다.
- 중요한 맥락을 놓치지 않도록 recall(재현율)을 최대한 유지합니다.
- Structured note-taking
- Claude Code는 자체적으로 TO-DO 리스트를 만들어서 복잡한 작업의 진행 상황을 추적합니다.
- 2025년 AI 활용 회고에 작성했던 claude code로 SW 개발하는 방법과 비슷하네요!
- Sub-agent architectures
- 전체 작업을 조율하는 main agent와 세부 작업을 담당하는 sub agent들을 만들면
- 각 sub agent들은 컨텍스트 윈도우를 고유하게 사용할 수 있고
- main agent는 sub agent가 요약/정리해준 밀도 높은 토큰들로 작업을 이어갈 수 있습니다.
'For Fun > 잡학 지식' 카테고리의 다른 글
| AI 엔지니어링 스터디 #2 - 파운데이션 모델 이해하기 (2) | 2026.01.26 |
|---|---|
| 코드 컨벤션, 아키텍처도 잘 지키고 있는지 테스트 케이스를 만들 수 있습니다! – ArchUnit vs Konsist (3) | 2026.01.12 |
| 검색 맛보기 (0) | 2025.12.13 |
| 이커머스 앱 페이지 용어 공부하기 - 커머스 도메인 이해하기 #4 (2) | 2025.11.03 |
| 디지털 광고 과금 방식 공부하기 - 커머스 도메인 이해하기 #3 (4) | 2025.09.07 |