소개
지난 글에서 만든 POST /plan은 "시간 안에 들어가면 오늘, 넘치면 내일"이라는 고정 규칙으로만 판단했습니다. 이번에는 예고했던 대로 Claude API를 연결해, 마감과 중요도까지 고려해 AI가 우선순위를 직접 판단하는 엔드포인트(POST /plan-ai)를 추가했습니다.
진행 방법
활용한 툴: Claude Code(클코) - 코드 수정·에러 해결 / Anthropic Python SDK - Claude API 호출 / FastAPI + uvicorn - 기존 서버 / Windows PowerShell - 실행·테스트 / Swagger UI - 엔드포인트 테스트
API 키 발급하고 환경변수로 저장하기
Anthropic 콘솔에서 API 키를 발급받고, 코드에 직접 쓰지 말라는 클코의 조언대로 PowerShell에서 setx ANTHROPIC_API_KEY 로 환경변수에 저장했습니다. 처음에 401 인증 에러가 났는데 키를 복사할 때 공백이 함께 들어간 것이 원인이었고, PowerShell 창을 새로 열어야 반영된다는 것도 이때 배웠습니다. (사진: 콘솔 API 키 화면)
Claude에게 판단을 맡기는 엔드포인트 추가하기
클코에게 쓴 프롬프트 전문: "main.py에 POST /plan-ai 엔드포인트를 추가해줘. 기존 /plan과 입력은 같은데, 각 할 일에 deadline(마감)과 importance(중요도)를 추가로 받아. 이걸 Claude API에 보내서 무엇을 오늘 하고 무엇을 미룰지, 그 이유까지 JSON으로 받아서 돌려줘. 모델은 claude-haiku 써줘." 클코가 pip install anthropic 설치를 안내한 뒤 코드를 작성해 줬습니다.
Swagger UI에서 AI 판단 테스트하기
가용 시간 120분에 은행 업무(30분, 마감 오늘), 발표자료(90분, 중요도 상), 블로그 글쓰기(60분, 마감 없음)를 보냈습니다. 결과는 고정 규칙과 같았지만 /plan-ai는 "은행 업무는 오늘 마감이라 미룰 수 없고, 발표자료는 중요도가 높아 우선 배치"라는 이유까지 돌려줬습니다. 판단 근거를 사람이 읽을 수 있다는 것이 규칙 로직과의 가장 큰 차이였습니다. (사진: Swagger 응답 화면)
결과와 배운 점
시행착오: 환경변수 미반영(새 창 필요), 401 인증 에러(키 공백), Claude가 JSON 앞뒤에 설명을 붙여 json.loads가 실패한 문제를 겪었고, 프롬프트 강화와 방어 코드로 해결했습니다.
도움이 필요한 부분: AI 응답이 매번 조금씩 달라지는데 재현 가능한 데모가 필요할 때 좋은 방법이 있을까요? 24시간 서버에서 API 키를 안전하게 관리하는 방법도 궁금합니다.
앞으로의 계획: 이 서버를 백그라운드 실행과 자동 재시작으로 24시간 돌리고, 아침마다 오늘 계획을 스스로 만들어 알려주는 에 이전트로 완성할 계획입니다.
배운 점: 규칙 로직과 AI 판단은 대체 관계가 아니라 역할 분담이었습니다. 확실한 계산은 코드가, 애매한 우선순위 판단은 AI가 맡는 구조가 안정적이었습니다.
도움 받은 글
Claude Code로 FastAPI API 서버 만들기'에서 만든 서버를 그대로 확장했습니다.