
30분 만에 첫 AI 에이전트 구축하기 - CrewAI + AWS Bedrock
요약
CrewAI와 AWS Bedrock을 활용하여 채용 공고에 맞춰 이력서를 최적화하는 AI 에이전트를 구축하는 튜토리얼입니다. 사용자가 채용 공고를 입력하면 키워드를 추출하고 ATS(지원자 추적 시스템)를 통과할 수 있도록 이력서 내용을 자동으로 조정합니다.
핵심 포인트
- CrewAI와 AWS Bedrock을 결합한 에이전트 구축 방법 제시
- 채용 공고 분석을 통한 이력서 키워드 및 프레이밍 최적화
- ATS(지원자 추적 시스템) 통과를 위한 실전적인 AI 솔루션 구현
- 역할, 목표, 도구 등 에이전트 구성 요소의 실제 적용
👋 안녕하세요, 기술 애호가 여러분!
저는 복잡한 기술 문제를 간단한 솔루션으로 바꾸는 것을 좋아하는 클라우드 아키텍트(Cloud Architect) Sarvar입니다. 저는 실제 기업들을 위해 AWS, Azure, DevOps, 데이터(Data), 분석(Analytics), 생성형 AI (Generative-AI) 및 에이전트형 AI (Agentic-AI)를 활용하여 실제 시스템을 구축해 왔습니다. 이번 아티클 시리즈를 통해, 여러분이 숙련자이든 이제 막 시작하는 단계이든 상관없이 따라하기 쉬운 방식으로 제가 배운 것들을 공유하고자 합니다.
자, 시작해 봅시다! 🚀
반갑습니다, 다시 오신 것을 환영합니다.
지난 아티클에서 우리는 AI 에이전트(AI agents)가 무엇인지, 어떻게 루프(loops) 안에서 사고하는지, 그리고 왜 단순히 ChatGPT에 도움을 요청하는 것과 다른지에 대해 다루었습니다. 우리는 역할(role), 목표(goal), 배경 스토리(backstory), 작업(tasks), 도구(tools)라는 구성 요소와 CrewAI를 통해 이 모든 것을 간단한 YAML 파일로 정의하는 방법을 살펴보았습니다.
우리는 약속과 함께 마쳤습니다. 바로 직접 만들어 보겠다는 것이죠.
이것이 바로 그 아티클입니다. 더 이상의 이론은 없습니다. 우리는 이력서 맞춤형 에이전트(resume tailor agent)를 처음부터 구축할 것입니다. 이 글을 마칠 때쯤, 여러분은 채용 공고(job description)를 입력받아 이를 분석하고, 단 몇 초 만에 그에 맞춰 이력서를 조정해 주는 웹 UI(web UI)를 갖춘 작동 가능한 에이전트를 갖게 될 것입니다.
왜 이력서 맞춤형 에이전트인가?
이것은 무작위로 떠오른 프로젝트 아이디어가 아닙니다. 제가 반복적으로 직면해 온 실제 문제에서 비롯되었습니다.
저는 다국적 기업(MNCs)에서 10년 이상 근무해 왔습니다. 이직할 때마다 과정은 항상 같습니다. 이력서를 업데이트하고, 지원을 시작하고, 연락을 기다리는 것이죠. 그리고 연락은 오지 않습니다. 제가 기술이나 경험이 부족해서가 아닙니다. 직무가 맞지 않아서도 아닙니다. 문제는 그보다 더 단순하고 좌절감을 줍니다. 그들이 찾고 있는 것들을 저는 실제로 해냈습니다. 단지 제 이력서에 언급하지 않았을 뿐입니다.
그 부분이 바로 제가 뒤처졌던 지점이었습니다. 제 이력서에는 제 경험이 담겨 있었지만, 채용 공고 (Job Description)의 언어로 말하고 있지는 않았습니다. 키워드가 없었습니다. 프레이밍 (Framing)이 적절하지 않았습니다. 그리고 경쟁이 그 어느 때보다 치열하고 대부분의 이력서가 먼저 자동 스크리닝을 거치는 오늘날의 시장에서, 그 격차는 사람이 여러분의 지원서를 읽기도 전에 필터링되어 탈락하기에 충분합니다.
오늘날 대부분의 기업은 채용 담당자가 확인하기 전에 키워드를 스캔하는 ATS (Applicant Tracking Systems, 지원자 추적 시스템)를 사용합니다. 만약 여러분의 이력서에 적절한 용어, 즉 채용 공고에 명시된 정확한 용어들이 포함되어 있지 않다면 자동으로 필터링됩니다. 여러분이 완벽한 적임자일지라도 스크리닝 단계를 통과하지 못할 수 있습니다.
이제 실제로 무언가를 수행하는 AI 에이전트 (AI agents)를 구축할 수 있다면, 이 문제를 해결하는 에이전트를 만들어보는 건 어떨까요? 채용 공고를 주고, 여러분의 이력서를 주면, 단 몇 초 만에 중요한 키워드를 추출하고, 부족한 부분을 식별하며, ATS 친화적 (ATS-friendly)이 되도록 불렛 포인트 (bullet points)를 다시 작성해 줍니다. 결과적으로, 여러분의 이력서는 실제로 봇 (bots)을 통과하여 누군가의 책상 위에 놓이게 됩니다.
그것이 바로 우리가 만들고자 하는 것입니다. 단순히 멋진 데모를 만들기 위해서가 아니라, 저에게 그것이 필요했기 때문입니다.
우리가 만드는 것
채용 공고 (필수)와 선택 사항인 여러분의 이력서를 입력받아 다음을 제공하는 단일 AI 에이전트:
채용 공고 + 이력서 포함 시 (전체 분석):
- 채용 공고 요약 (JD Summary) - 그들이 실제로 찾고 있는 것 (5~6문장)
- 일치하는 기술 (Matching Skills) - 이력서에서 강조해야 할 핵심 기술 (예: LLM, MCP, RAG, Kubernetes, Terraform)
- 기술 격차 (Skill Gaps) - 짧은 불렛 포인트, 불렛당 하나의 격차
- 커리어 가이드 (Career Guidance) - 무엇을 준비해야 하는지 보여주는 짧은 커리어 경로 불렛 포인트 (X를 배우고, Y 자격증을 취득하고, Z로 프로젝트를 구축하기)
- 맞춤형 이력서 (Tailored Resume) - 복사하여 붙여넣을 수 있도록 다시 작성된 불렛 포인트
채용 공고만 포함 시 (이력서 없음):
- 채용 공고 요약 (JD Summary) - 해당 역할에 필요한 사항
- 핵심 기술 (Key Technologies) - 채용 공고가 요구하는 기술 키워드
- 커리어 경로 (Career Path) - 이 역할을 위해 준비해야 할 사항
이력서 (Resume)는 선택 사항이므로, 준비된 이력서가 없더라도 직무 기술서 (JD)가 무엇을 요구하는지, 그리고 어떤 경로를 따라야 하는지를 이해함으로써 가치를 얻을 수 있습니다.
복잡한 멀티 에이전트 (multi-agent) 설정은 필요하지 않습니다. 좋은 프롬프트 (prompt)를 가진 단일 에이전트가 단 한 번의 실행으로 이 모든 것을 처리합니다. 코드는 더 단순해지고, 실행은 더 빨라지며, 운영 비용은 더 저렴해집니다.
입력 및 출력 (Input & Output) - 무엇이 들어가고, 무엇이 나오는가
입력 (Input) (제공하는 것):
| 필드 (Field) | 필수 여부 | 설명 |
|---|---|---|
| 직무 기술서 (Job Description) | ✅ 예 | 목표로 하는 JD |
| ... |
출력 (Output) (얻는 것):
JD + 이력서 (Resume)를 제공하는 경우:
| 섹션 (Section) | 형식 (Format) | 예시 |
|---|---|---|
| JD 요약 (JD Summary) | 5-6개 문장 | "AWS 인프라를 엔드 투 엔드(end-to-end)로 관리할 수 있는 시니어 클라우드 엔지니어를 원함" |
| ... |
JD만 제공하는 경우 (이력서 없음):
| 섹션 (Section) | 형식 (Format) | 예시 |
|---|---|---|
| JD 요약 (JD Summary) | 5-6개 문장 | "RAG 및 LLM 경험을 갖춘 GenAI 엔지니어를 찾고 있음" |
| ... |
준비물
- Bedrock 접근 권한이 있는 AWS 계정 (Amazon Nova Pro 모델 활성화 필요)
- EC2 인스턴스 (t3.medium 이상) 또는 Python이 설치된 모든 Linux 머신
- 약 30-45분
- 터미널 (terminal) 사용에 대한 기본적인 숙련도
저는 Amazon Linux 2023이 실행되는 EC2 인스턴스를 사용하고 있습니다. Ubuntu, 로컬 Mac, WSL 등 무엇을 사용해도 상관없습니다. 명령어는 동일합니다.
시작하기 전에 한 가지 확인해야 할 점은, AWS Bedrock 콘솔에서 Amazon Nova Pro 모델을 활성화했는지 확인하는 것입니다. 기본적으로 활성화되어 있지 않습니다. Bedrock > Model access > Request access to Nova Pro로 이동하세요. 승인받는 데 1분 정도 걸립니다.
상위 수준 아키텍처 (High-Level Architecture)
코드로 들어가기 전에, 모든 것이 어떻게 결합되는지 살펴보겠습니다:
작동 방식:
- **사용자 (User)**가 브라우저에서 Streamlit 웹 UI를 열고 직무 기술서(job description), 이력서(resume), 경력 수준(experience level)을 붙여넣습니다.
- Streamlit (EC2에서 실행 중)이 입력값을 CrewAI 오케스트레이터(orchestrator)로 전달합니다.
- crew.py가 에이전트 설정(agents.yaml + tasks.yaml)을 로드하고 프롬프트(prompt)를 구성합니다.
- 프롬프트가 실제 분석을 수행하는 파운데이션 모델 (foundation model)인 Amazon Bedrock Nova Pro로 전송됩니다.
- Bedrock이 기술 격차(skill gaps), 커리어 가이드, 맞춤형 이력서 분석 결과를 반환합니다.
- 결과가 CrewAI → Streamlit을 거쳐 사용자에게 표시됩니다.
전체 스택은 단일 EC2 인스턴스(t3.medium)에서 실행됩니다. 유일한 외부 서비스는 LLM 추론 (inference)을 처리하는 Amazon Bedrock뿐입니다. 데이터베이스, 큐(queue), 복잡한 인프라 없이, 그저 파운데이션 모델과 통신하는 Python 앱일 뿐입니다.
환경 설정 (Setting Up the Environment)
먼저, 서버에 SSH로 접속하세요. 로컬에서 작업 중이라면 이 단계는 건너뛰어도 됩니다.
ssh -i your-key.pem ec2-user@your-server-ip
Python 3.11 설치
CrewAI는 Python 3.11 이상이 필요합니다.
sudo dnf install python3.11 python3.11-pip -y
설치가 잘 되었는지 확인하세요:
python3.11 --version
Python 3.11.x와 같은 메시지가 보여야 합니다.
uv 설치
uv는 빠른 Python 패키지 매니저 (package manager)입니다. CrewAI는 의존성 관리 (dependency management)를 위해 내부적으로 uv를 사용합니다. Python을 위한 npm과 같지만 더 빠르다고 생각하면 됩니다.
curl -LsSf https://astral.sh/uv/install.sh | sh
이제 이를 PATH에 추가하여 바로 사용할 수 있게 만드세요:
export PATH=$HOME/.local/bin:$PATH
확인:
uv --version
CrewAI CLI 설치
이 명령어는 프로젝트를 생성하고, 의존성을 설치하며, 에이전트를 실행하는 데 사용할 crewai 명령어를 제공합니다.
uv tool install crewai-cli --python python3.11 --with crewai
여기서 알아둘 점 두 가지가 있습니다:
crewai가 아니라crewai-cli입니다. 만약 단순히crewai만 설치하면 라이브러리는 얻지만 CLI 명령어는 얻지 못합니다.--with crewai플래그가 중요합니다. 이 플래그를 사용해야 crewai 라이브러리가 CLI 도구의 환경에 포함됩니다. 이것이 없으면 나중에crewai install시ModuleNotFoundError가 발생하여 실패할 것입니다.
확인:
crewai version
이것으로 끝입니다. 환경 설정이 완료되었습니다.
프로젝트 생성하기
CrewAI에는 전체 프로젝트 구조를 자동으로 만들어주는 스캐폴딩(scaffolding) 명령어가 있습니다. 폴더를 수동으로 만들 필요가 없습니다.
crewai create crew resume_tailor --classic
--classic 플래그를 사용하면 표준 Python/YAML 프로젝트 구조를 생성합니다 (우리가 원하는 방식입니다). 이 플래그가 없으면 최신 버전의 CrewAI는 JSON 기반 구조를 생성할 수도 있습니다.
그러면 몇 가지 질문을 던질 것입니다:
- Provider (제공자): bedrock를 선택하세요 (메뉴의 9번 옵션)
- Model (모델):
bedrock/us.amazon.nova-pro-v1:0을 선택하세요 (28번 옵션)
- AWS keys (AWS 키): Enter를 눌러 건너뛰세요. 인스턴스에 연결된 IAM 역할(role) 또는 AWS CLI 자격 증명(credentials)을 사용할 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기







