1. 작성하게 된 이유
ai-agent-batch 프로젝트와 마찬가지로 구현을 진행하면서 기능이 추가되고 방향성이 계속 변경되고 있다.
초기에는 단순한 구조로 시작했지만, 개발을 진행할수록 고려해야 할 요소들이 많아졌고 구조 또한 점점 복잡해지고 있다.
현재 시점에서 한 번 중간 점검을 하고, 앞으로의 방향성을 정리해 두는 것이 필요하다고 판단하여 이번 글을 작성하게 되었다.
2. 프로젝트 정보
3. 구현된 부분과 어려웠던 점, 앞으로 추가할 작업
3.1 구현된 기능
현재까지 구현된 기능은 아래와 같다.
DB연결 및 블로그 글 데이터 조회LLM연동Embedding모델 연동- 사용자 질문에 대해 블로그 글을 검색하고, 참고할 만한 글 목록을 함께 포함하도록 프롬프트 구성
아직 구조적으로 완성된 상태는 아니지만, 전체 흐름이 한 번 돌아가는 수준까지는 구현된 상태이다.
3.2 구현하면서 어려웠던 점
이번 프로젝트는 기존에 만들어진 프레임워크를 사용하는 것이 아니라, AI Agent 구조를 직접 만들어보는 형태로 진행하고 있기 때문에 전체적인 흐름은 알고 있어도 세부적으로 어떤 요소들을 고려해야 하는지 명확하게 감이 오지 않는 부분이 많았다.
특히 개발을 진행하면서 자연스럽게 등장하는 개념들이 있었는데, 처음에는 단순히 기능을 구현하는 데 집중하다 보니 이 개념들을 현재 구조 안에 어떻게 녹여야 할지 고민되는 경우가 많았다.
이제 막 AI 쪽 개발을 진행하게된 입장에서 비슷해 보이는 용어들이 많았고, 각각의 역할을 정확히 이해하지 못한 상태에서 구조를 잡다 보니 패키지 위치나 책임을 결정하는 과정이 쉽지 않았다.
특히 처음 사용하는 아키텍처이다 보니
- 이 로직을 어디에 둬야 하는지
- 이 클래스는
port인지adapter인지 - 이 흐름은
usecase인지service인지
같은 고민을 계속 하게 되었고, 구현 자체보다 구조를 정리하는 데 더 많은 시간이 들어간 느낌도 있었다.
아직도 완전히 이해했다고 보기는 어렵지만, 구현을 진행하면서 하나씩 개념을 맞춰가고 있는 단계라고 생각한다.
3.3 앞으로 추가할 작업
앞으로는 Tool 기반 구조를 확장하는 방향으로 작업을 진행할 예정이다.
현재 구조에서는 LLM과 Embedding, DB 조회 정도만 연결되어 있지만, 실제로 Agent 형태로 동작하게 만들기 위해서는 Tool 단위를 기준으로 기능을 확장할 필요가 있다.
툴 들을 추가하면서, 현재 구조가 확장에 적합한지 계속 점검할 생각이다.
또한 이번 프로젝트는 처음 적용해보는 아키텍처이기 때문에 패키지 구조나 클래스 네이밍이 어색한 부분도 꽤 많이 남아 있다.
구현을 진행하면서
- 책임이 맞지 않는 클래스 이동
- 포트 / 어댑터 네이밍 수정
usecase/service역할 정리domain모델 정리
같은 작업도 함께 진행할 예정이다.
아직 완성된 구조라고 보기는 어렵지만, 기능을 추가하면서 구조를 계속 다듬어 가는 방향으로 개발을 이어갈 생각이다.