1. AI Agent에서 Tool이 필요한 이유
이전 글에서는 LLM을 Port / Adapter 구조로 연결했다.
현재 구조에서는 LLM문자열을 입력 받고 문자열을 생성하는 것만 가능하다. 하지만 우리가 AI Agent로 하려는 것들은 단순한 챗봇이 아닌 외부 기능을 사용할 수 있는 AI Agent이다.
예를 들어 내가 구현하려는 서비스는 다음과 같은 동작이 가능해야 한다.
- 블로그 글 검색
- 특정 글 읽기
- 글 목록 조회
- 글 요약
- 글 비교
- 키워드 찾기
이런 기능은 LLM이 직접 할 수 없다. LLM자체는 머리만 있고 기능을 수행할 팔과 다리는 없는 상태이기 때문이다.
그래서 Agent에서는 팔과 다리의 기능을할 Tool이 필요하다. 즉,
1
LLM -> Tool 선택 -> Tool 실행 -> 결과 반환 -> LLM
이런 구조가 필요하다.
이때 외부 기능을 Tool이라고 한다.
2. Tool 이란 무엇인가?
Tool은 LLM이 사용할 수 있는 외부 기능이다. 예를 들어
- 검색 함수
DB조회 함수- 파일 읽기 함수
API호출 함수- 계산 함수
와 같은 것들이 Tool 이다.
Agent구조에서는 보통 다음 흐름으로 동작한다.
1
2
3
4
5
6
7
8
9
10
11
사용자 질문
↓
LLM 판단
↓
Tool 선택
↓
Tool 실행
↓
결과 반환
↓
LLM 최종 답변 생성
즉, Tool은 LLM이 직접 못 하는 일을 대신 해주는 기능 이다.
3. Hexagonal Architecture에서 Tool의 위치
Tool도 결국 외부 시스템이기 때문에 도메인 로직을 보호하기 위하여 Port / Adapter 구조로 구현해야 한다.
4. Tool 구조 설계
Tool은 다음 구성으로 나눌 수 있다.
1
2
3
4
Tool Port
Tool Adapter
Tool Registry
Tool Excutor
역할
| 구성 | 역할 |
|---|---|
| Port | 인터페이스 |
| Adapter | 실제 구현 |
| Registry | Tool 목록 |
| Executor | 실행 담당 |
이번 글에서는 Tool Port와 서비스에 필요한 Tool목록 정리까지만 하고 구현은 다음 글에서 한다.
5. 블로그 QA Agent에서 필요한 Tool
이번 프로젝트의 1차 목표는 내 기술 블로그를 이해하는 AI Agent 서비스 개발이다. 때문에, 다음 기능이 필요하다.
5. 블로그 QA Agent에서 필요한 Tool
이번 프로젝트의 1차 목표는 내 기술 블로그를 이해하는 AI Agent 서비스 개발이다. 때문에, 다음 기능이 필요하다.
- 블로그 글 목록 조회
- 글 전체 목록 가져오기 : 예 )
DDD에 관한 글 뭐 있어?
- 글 전체 목록 가져오기 : 예 )
- 블로그 글 읽기
- 특정 글 가져오기 :
DDD에 관한 글 설명해줘
- 특정 글 가져오기 :
- 블로그 검색
- 키워드 기반 검색 :
Tool Calling관련 글 찾아줘.
- 키워드 기반 검색 :
- 글 요약
- 글 내용 요약 : 이 글 요약해줘
- 글 비교
- 두 글 비교 :
DDD랑Hexagonal Architecture차이 설명해줘
- 두 글 비교 :
- 키워드 추출
- 글에서 핵심 키워드 찾기 : 이 글 핵심 키워드 뭐야?
6. Tool 목록 정리
이번 프로젝트에서 사용할 Tool아래의 Tool들을 Port / Adapter 구조로 구현하고 AI Agent에서 사용할 수 있도록 만들 예정이다.
1
2
3
4
5
6
list_posts
read_post
search_posts
summarize_post
compare_posts
extract_keywords
7. 다음 단계
이제 Tool의 종류를 정의했지만, 현재는 실제로 조회할 데이터가 없는 상태이다. 매 호출마다 블로그의 글들을 서칭해서 동작할 순 있겠지만 OpenLLM 특성상 안그래도 늦은 응답 시간에 더해져 사용하기 불편할수도 있기 때문이다.
그렇기 때문에 먼저 블로그 글을 수집하고, AI Agent가 사용할 수 있도록 저장하는 과정이 필요하다 생각했다.
따라서 다음 단계에서는
- 블로그 글 수집
- 글 메타데이터 파싱
- 요약 / 키워드 생성
- 저장 구조 설계
를 먼저 구현해보고, 그 이후에 Tool Port와 Adapter를 만들어 Agent가 해당 데이터를 조회할 수 있도록 구성해볼 예정이다.