이전에 작성했던 계획을 바탕으로 간단한 에이전트를 구현해보았다.

전체적인 구조는 위와 같다
작동 방식 (6단계)
- 사용자 질문 수신 - POST /api/ai/chat 엔드포인트로 질문 전송
- 의도 파악 - Gemini API로 질문 분석, 6가지 의도 분류, JSON으로 파라미터 추출
- 데이터 검색 - Switch Expression으로 라우팅, MySQL에서 실제 출석 데이터 조회
- 데이터 포맷팅 - 엔티티를 텍스트로 변환 (목록형/통계형)
- 자연어 답변 생성 - Gemini API로 친절한 답변 생성
총 2번의 GEMINI API 호출이 필요하다.
이러한 방식을 채택한 이유
1. 간단한 질문만 가능하게끔 하고 싶었다.
2. AI가 직접적으로 쿼리에 접근하는 것은 위험하다고 판단되었다,
하지만 결국 6가지 의도로 분류된 질문만 답변이 가능했기에
완전한 AI 에이전트라고 할수는 없었다.
결국 내가 원하는 에이전트는
모든 출석 데이터 관련 모든 질문에 답변 가능한 에이전트가 필요했다.
그렇게 고민을 하던 중
DB에 직접 접근 하지않고 간접적으로 접근하는 방식을 고안해냈다
Lang Chain을 적용하기 위해 FASTAPI 로 프레임워크를 변경하고
DB는 필요한 테이블만 SQLite로 추출하는 방식으로 진행하였다.

자연어 질문을 받아
랭체인을 통해 적절한 쿼리를 생성한뒤
필요한 데이터만 있는 SQLITE에서 데이터 추출 후
응답하는 구조이다
만약 랭체인을 적용하지 않았다면
1. Gemini에게 "어떤 SQL 써야 해?" 물어보기
2. SQL 받아서 SQLite에 실행하기
3. 결과를 다시 Gemini에게 넘기기
4. "이걸로 충분해?" 판단하기
5. 부족하면 2번으로 다시 돌아가기
6. 최종 답변 생성하기
LangChain 쓰면
python create_sql_agent(llm, db=db)
이 한 줄로 다 가능해진다.
이러한 구조로 변경 후 출석 관련 모든 질문에 대해 답변이 가능한 에이전트를 간단하게 개발하였다.
https://github.com/PoroGramr/PW3_AiAgent
GitHub - PoroGramr/PW3_AiAgent
Contribute to PoroGramr/PW3_AiAgent development by creating an account on GitHub.
github.com
프롬프트나 소스코드가 궁금한 자는 여기로..

추후에는 MCP나 vector db를 적용해 좀 더 고도화 해보고자 한다.
이런 AI 에이전트에 관심이 있는 분은
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372710393
요즘 당근 AI 개발 | 당근 팀
AI로 과연 될까?라는 질문은 AI로 어떻게 하면 될까?라는 고민으로 이어졌다. 엔지니어, 프로덕트 매니저, 운영 매니저, 누구든 문제의 중심에서 AI를 도구로 삼아 새로운 길을 만들어갔다. 이 책
www.aladin.co.kr
이 책 추천합니다.
재밌어서 하루만에 다 읽음
'Spring' 카테고리의 다른 글
| certbot + nginx로 https 적용하기 (0) | 2026.02.02 |
|---|---|
| 출석관리체계에 AI 에이전트 구축하기 - 0 (0) | 2025.12.27 |
| Audit Log 조회 API 성능 개선기 - 3 (1) | 2025.08.08 |
| Audit Log 조회 API 성능 개선기 - 2 (8) | 2025.08.08 |
| Audit Log 조회 API 성능 개선기 - 1 (4) | 2025.07.19 |