소개
나와 같은 사람이 한명 더 있다면? 혹은 나보다 더 뛰어나고 나보다 더 부지런한 사람이 있다면?
귀찮은거? 대신 해줄 사람이 있다면? 그게 누구일까? 복제인간???
위 물음표를 시작으로 늦은감은 잊지만, AI 기술을 활용해 나를 어느정도 대체 해 줄 수 있는 모둘형 에이전트를 만들고자 했습니다.
그리하여 나자신의 AI 에이전트를 만들어가는 여정을 공유하려고 해요.
진행 방법
1. 프로젝트 개요
1.1 목적
이 프로젝트의 핵심 목표는 사용자 질문의 의도를 정확히 파악해 전문화된 에이전트로 라우팅하는 거예요.
질문 유형에 따라 각 에이전트가 전문적인 응답을 생성하며, 확장 가능한 설계를 통해 새로운 요구사항에도 쉽게 대응 가능하답니다.
웹 애플리케이션의 다이어그램
1.2 주요 기능
의도 분석 (Intent Recognition): 질문의 목적과 주제를 파악하여 적합한 에이전트로 연결합니다.
담당자 찾기 (Task Owner Search): 조직 내 적합한 담당자를 식별하고 정보를 제공합니다.
API 문서 검색 (API Documentation Search): Swagger와 같은 API 문서를 탐색해 필요한 정 보를 추출합니다.
구현 가능성 검토 (Implementation Feasibility Check): 특정 기능이나 요청의 기술적 타당성을 검토하고 실행 방법을 제안합니다.
2. 아키텍처 설계
2.1 컴포넌트 기반 설계
컴포넌트 기반 구조로 설계된 이 에이전트는 기능별로 분리되어 있어 유지보수와 확장이 용이합니다.
아래는 디렉토리 구조예요:
plaintext
코드 복사
my_agent/
├── components/
│ ├── base.py # 공통 기능 정의
│ ├── intent_analyzer.py # 의도 분석
│ ├── task_owner.py # 담당자 찾기
│ ├── api_docs.py # API 문서 검색
│ └── coding_feasibility.py # 구현 가능성 검토
├── node/
│ ├── api_docs_agent.py # API 문서 관련 에이전트
│ ├── task_owner_agent.py # 담당자 찾기 에이전트
│ └── coding_feasibility_agent.py # 구현 가능성 에이전트
└── agent.py # 메인 에이전트 관리
2.2 워크플로우
아래는 사용자 입력이 처리되는 워크플로우입니다:
mermaid
코드 복사
graph TD
A[사용자 입력] --> B[의도 분석]
B --> C[담당자 찾기]
B --> D[API 문서 검색]
B --> E[구현 가능성 검토]
E --> D
B --> F[일반 대화]
3. 핵심 컴포넌트 설명
3.1 BaseComponent
모든 컴포넌트는 BaseComponent를 상속받아 일관된 인터페이스를 제공합니다.
이를 통해 새로운 기능 추가와 통합이 용이합니다.
python
코드 복사
class BaseComponent:
def process(self, state: dict) -> str:
raise NotImplementedError("이 메서드는 서브클래스에서 구현되어야 합니다.")
3.2 의도 분석기 (IntentAnalyzerComponent)
사용자의 질문을 분석하여 다음의 카테고리로 분류합니다:
담당자 찾기
API 관련 질문
구현 가능성 검토
일반 질문
3.3 담당자 찾기 (TaskOwnerComponent)
조직 내 담당자를 식별하고 정보를 반환합니다.
예를 들어, 사용자가 "결제 시스템 담당자가 누구인가요?"라고 질문하면, 해당 팀 담당자를 제공합니다.
3.4 API 문서 검색 (APIDocsComponent)
Swagger 기반 문서를 탐색하고 API 엔드포인트 및 예제 정보를 제공합니다.
예를 들어, "결제 API의 엔드포인트가 어떻게 되나요?"라는 질문에 관련 정보를 찾아줍니다.
3.5 구현 가능성 검토 (CodingFeasibilityComponent)
요청된 기능이나 기술적 요구사항의 타당성을 검토합니다.
필요할 경우, API 문서 정보를 참조하여 더 구체적인 구현 제안을 제공합니다.
4. 확장 가능성
4.1 새로운 컴포넌트 추가
새로운 기능을 추가하고 싶다면 BaseComponent를 상속받아 간단히 구현할 수 있어요:
python
코드 복사
class NewFeatureComponent(BaseComponent):
def process(self, state: Dict[str, Any]) -> str:
# 새로운 기능 구현
return "next_node"
4.2 워크플로우 확장
agent.py에서 새로운 노드와 엣지를 추가하여 워크플로우를 확장할 수 있습니다:
python
코드 복사
workflow.add_node("new_feature", new_feature_component.process)
workflow.add_edge("intent_analyzer", "new_feature")
5. 사용 예시
5.1 담당자 찾기
질문: "결제 시스템 담당자가 누구인가요?"
응답: "담당자를 찾았습니다: 김철수 (결제시스템팀)"
5.2 API 문서 검색
질문: "결제 API의 엔드포인트가 어떻게 되나요?"
응답: "/api/v1/payment에서 결제 관련 API를 사용할 수 있습니다..."
5.3 구현 가능성 검토
질문: "카카오페이 결제 연동이 가능한가요?"
응답:"구현 가능합니다. 필요한 기술 스택:
Python/Django
카카오페이 SDK주의사항: API 키 발급이 필요합니다..."
6. 향후 개선 방향
Llama 3 Fine Tuning (+RAG)
멀티턴 대화 지원: 사용자의 추가 질문을 기억하고 맥락을 유지합니다.
컨텍스트 관리 강화: 대화 기록을 기반으로 더 정확한 답변을 제공합니다.
더 많은 전문 에이전트 추가: 다양한 분야를 커버할 수 있도록 에이전트를 확장합니다.
성능 모니터링 시스템 구축: 에이전트의 응답 속도와 정확도를 실시간으로 모니터링합니다.
결론
이처럼 레고 블록처럼 모듈형으로 설계된 에이전트는 다양한 환경에서 활용될 수 있어요.
유지보수가 쉽고, 확장이 용이하며, 재사용성이 높은 구조 덕분에 빠르게 변화하는 요구사항에도 대응할 수 있답니다.
관련 태그
#AI에이전트 #모듈형설계 #의도분석 #API문서검색 #구현가능성검토 #확장가능한구조
결과와 배운 점
회사 내 프로젝트로 정신없이 보내는 와중에 스터디 사례 발표 글 작성이란 함께하는 동료와의 약속을 지키겠다는 신념!!! 이거 하나로 만족 합니다. 스터디의 매력인가요? 못지키면 어쩌지 ㅜㅜ
작게 여러번 완성에 목표를 두자!!.
그런데 다시한번 커서 AI에 감탄!!!