| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- GPT
- It
- 개발자
- 직장인인강
- airflow
- 방콕여행
- 패스트캠퍼스후기
- 상관분석
- Ai
- 분석
- 독서리뷰
- 파이썬을활용한시계열데이터분석A-Z올인원패키지
- 패캠챌린지
- 직장인자기계발
- 데이터분석
- 파이썬
- data
- 패스트캠퍼스
- API
- nlp
- 데이터
- 머신러닝
- 리뷰
- 클라우드
- 챗지피티
- 태국여행
- llm
- 빅데이터
- Python
- 딥러닝
- Today
- Total
데이터를 기반으로
[AI Agent] 대통령 후보 공약 기반 유권자 나침반 본문
정~~~말 오랜만에 블로그 글을 작성하네요.
(많은 반성을 하고 있습니다..)
현생이 바빠서 요즘 신기술들 겨우 겨우 따라가려고 아둥바둥 삶을 살아가고 있습니다 ㅎㅎ
다름이 아니라 이제 생성형 AI 춘추전국시대에 살고 있는 저에게 조금은 AI 활용을 잘하고자(사실 그냥 RAG 부터 공부하자 였긴했지만..)하는 마음으로 지인과 사이드 프로젝트로 한번 재밌는 것을 만들어 보았습니다.
물론, 이재명 대통령께서 당선이 되었지만...그 투표 1주일 전에 재밌겠다 싶은 주제를 선별하다 보니 굉장히 늦은 게시글이 되었네요ㅎㅎ
(게으르게 정리안하고 묵혀두고 있다가 이제 막 정리해서 올리다 보니 시간이 오래 걸린 것은 비밀...ㅎㅎ)
암튼!! 자 주제부터 먼저 말씀드리면 요즘 너무 정보 과잉시대에 살고 있고, Hallucination 같은 것도 비일비재하다 보니 어떤 정보가 정확한 정보인지 모를 때가 많습니다!
그래서 딱! 대통령 후보들이 내세운 후보공약집을 기반으로 AI Agent를 구축하여 조금은 더 객관적인 투표를 도울 수 있도록 하는 것이 현 프로젝트에 목적이었죠!!
너무 자극적인 기사들과 자극적인 콘텐츠들이 많이 나오다보니 조금은 중립적인 입장으로 생성된 콘텐츠에 목마름을 느끼던 중이었습니다.
먼저 AI Agent 개념 부터 간략하게 이해하고 시작하시죠!
AI Agent란?
'AI 에이전트(AI Agent)'는 인공지능 분야에서 매우 중요하고 활발하게 연구되는 개념입니다. 쉽게 말해, 환경을 인식하고, 추론하여 목표를 달성하기 위해 스스로 행동하는 똑똑한 소프트웨어(혹은 시스템)를 의미합니다.
단순히 명령을 받아서 코드를 실행하는 프로그램과는 달리, AI 에이전트는 복잡한 환경 속에서 자율적으로 움직이며 주어진 목표를 완수하려고 노력합니다.
AI 에이전트의 4가지 핵심 특징
AI 에이전트가 "에이전트"로 불리기 위해서는 일반적으로 다음 4가지 핵심 특성을 가져야 합니다.
- 인지 (Perception):
- 외부 환경으로부터 정보를 받아들입니다. 이는 센서 데이터, 사용자 입력, 웹사이트 정보, 데이터베이스 등 다양할 수 있습니다.
- 추론 및 의사결정 (Reasoning & Decision-making):
- 받아들인 정보를 분석하고, 어떤 행동을 취해야 목표에 가장 효과적으로 도달할 수 있는지 판단합니다.
- 이 과정에서 AI 모델(예: LLM)의 지식과 논리가 활용됩니다.
- 행동 (Action):
- 결정된 사항을 실행합니다. 이는 코드를 생성하거나, 이메일을 보내거나, 로봇 팔을 움직이거나, 데이터를 검색하는 등의 물리적/가상적 행동이 될 수 있습니다.
- 자율성 (Autonomy):
- 지속적인 인간의 개입 없이 스스로 작동하고 목표를 추구할 수 있습니다.
위 내용은 Gemini로 정리한 글 입니다.
가장 핵심적인 부분은 "환경을 인식하고, 추론하여 목표를 달성하기 위해 스스로 행동하는 똑똑한 소프트웨어(혹은 시스템)를 의미" 해당 문장입니다!
우리는 유권자의 질문을 바탕으로 해당 유권자가 알고 싶은 정보를 판단하여 스스로 생각하여 부족한 정보가 있으면 외부에서 가져오는 행동까지 구현하여 유권자에게 폭 넓은 정보를 제공하는 AI Agent를 구축하였습니다.
그래서 이름을 유권자 나침반으로 지었는데요!
우리 유권자 나침반의 전체 파이프라인을 한번 살펴보시죠 그래야 이해가 좀 더 빠를 것 같습니다!

1. 유저가 질의를 하면 ReAct Agent가 질의를 보고 어떤 Tool을 사용해야할지 파악합니다.
2. 질의를 기반으로 후보자들의 프로필을 추출합니다.
2-1. 질의에 대한 답변이 외부 데이터가 필요한 답변이면 네이버 뉴스 API 를 활용해 정책을 가져옵니다.
2-2. 질의에 대한 답변이 pdf에 존재하면 구축해둔 vectorDB에서 정책을 가져옵니다.
3. 해당 정책을 정제하여 최종 답변을 유저에게 전달합니다.
ReAct 에서 사용할 수 있는 Tool들의 파이프라인은 아래 사진과 같습니다.




바로 코드단에서 실행하기 보다는 최소한의 디자인을 해서 이쁘게 Gradio UI를 활용하여 시연 화면을 만들어 보았습니다.




위와 같은 이쁜 결과들을 마주할 수 있었다.
세부적인 파라미터들과 셋팅 값 그리고 임베딩 모델은 아래와 같다.
| 입력 데이터 | 후보자 이름이 포함된 PDF 파일 (예: 이재명_공약.pdf) |
| 문서 로더 | PyMuPDFLoader – PDF 페이지 단위로 로드, candidate 메타데이터 추가 |
| 텍스트 분할기 | RecursiveCharacterTextSplitter.from_tiktoken_encoder |
| 임베딩 모델 | jhgan/ko-sbert-nli (KoSBERT 한국어 NLI 기반 SBERT 모델) |
| 벡터스토어 | Chroma – 로컬 persist 디렉토리에 저장 |
| Retriever | 후보자별 필터링 (filter={"candidate": <name>}) 적용, k=6 설정 |
| chunk_size | 1000 | 문서 분할 시 한 덩어리 텍스트의 최대 토큰 수 |
| chunk_overlap | 200 | 다음 청크와 겹치는 토큰 수 |
| embedding_model | jhgan/ko-sbert-nli | KoSBERT 한국어 임베딩 모델 |
| device | cpu | 임베딩 추론 시 사용하는 장치 |
| normalize_embeddings | True | 벡터 정규화 적용 (검색 정확도 향상) |
| retriever.k | 6 | 검색 시 반환할 문서 수 |
| retriever.filter | 후보자 이름 | 후보자별 문서만 검색하도록 필터링 |
아 추가로 Temperature 조정 값은 0.2로 주었다.
사실 보수적으로 후보의 공약만 참고하게 하려고 했으나 너무 답변 성능이 좋지 않아 최소한의 자유도를 주기 위해 0.2로 조정하였더니 훨씬 더 좋은 답변을 잘 작성하는 것을 확인할 수 있었다.
해당 프로젝트에서 반영한 프롬프팅 기술들은 아래와 같다.

자 모든 정리는 대충 끝났고 모두가 바라는(?) 코드 주소의 깃 주소는 아래와 같다.
https://github.com/ihyoo/President-candidate-compass
많이 놀러와주고 질문 남겨주면 댓글로 응답드리겠습니다~
긴 글 읽어주셔서 감사합니다!