LangGraph 로 나를 에이전트로 만들자 - 레고 에이전트 PART1

소개

‎나와 같은 사람이 한명 더 있다면? 혹은 나보다 더 뛰어나고 나보다 더 부지런한 사람이 있다면?

귀찮은거? 대신 해줄 사람이 있다면? 그게 누구일까? 복제인간???
위 물음표를 시작으로 늦은감은 잊지만, 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 구현 가능성 검토

  • 질문: "카카오페이 결제 연동이 가능한가요?"

  • 응답:"구현 가능합니다. 필요한 기술 스택:

    1. Python/Django

    2. 카카오페이 SDK주의사항: API 키 발급이 필요합니다..."


6. 향후 개선 방향

  1. Llama 3 Fine Tuning (+RAG)

  2. 멀티턴 대화 지원: 사용자의 추가 질문을 기억하고 맥락을 유지합니다.

  3. 컨텍스트 관리 강화: 대화 기록을 기반으로 더 정확한 답변을 제공합니다.

  4. 더 많은 전문 에이전트 추가: 다양한 분야를 커버할 수 있도록 에이전트를 확장합니다.

  5. 성능 모니터링 시스템 구축: 에이전트의 응답 속도와 정확도를 실시간으로 모니터링합니다.


결론

이처럼 레고 블록처럼 모듈형으로 설계된 에이전트는 다양한 환경에서 활용될 수 있어요.

유지보수가 쉽고, 확장이 용이하며, 재사용성이 높은 구조 덕분에 빠르게 변화하는 요구사항에도 대응할 수 있답니다.

관련 태그

#AI에이전트 #모듈형설계 #의도분석 #API문서검색 #구현가능성검토 #확장가능한구조

결과와 배운 점

회사 내 프로젝트로 정신없이 보내는 와중에 스터디 사례 발표 글 작성이란 함께하는 동료와의 약속을 지키겠다는 신념!!! 이거 하나로 만족 합니다. 스터디의 매력인가요? 못지키면 어쩌지 ㅜㅜ

작게 여러번 완성에 목표를 두자!!.

‎그런데 다시한번 커서 AI에 감탄!!!

도움 받은 글 (옵션)

2
1개의 답글

👉 이 게시글도 읽어보세요