LangChain을 이용한 AI 에이전트의 커스텀 시간 도구 개발은 BaseTool과 DateTimeTool이라는 두 가지 핵심 컴포넌트를 중심으로 진행됩니다.
1. BaseTool 구현
-
모든 커스텀 도구가 상속받을 기본 클래스인
BaseTool을 정의합니다. -
이 클래스는
LangChain::ToolDefinition을 확장하여 도구의 기본 기능을 제공합니다. -
도구 실행 시간을 측정하는 타이머 기능을 포함하여, 성능 벤치마킹 및 UI 출력을 위한 기반을 마련합니다.
-
attr_reader :task와initialize(task)를 통해 현재 실행 중인 태스크 컨텍스트를 도구에 주입할 수 있도록 하여, 더욱 복잡하고 상황 인지적인 도구 개발의 가능성을 열어줍니다. 이는 향후 서브 에이전트 간의 통신에서도 중요한 역할을 합니다.
2. DateTimeTool 구현
-
BaseTool을 상속받아DateTimeTool클래스를 생성합니다. -
주요 기능인
get_current_date_time메서드를 정의합니다. -
이 메서드는 AI가 요청하는 형식(
format속성, 기본값default)에 따라 현재 시간을 반환합니다.format속성은required: false로 설정하여 AI가 원하는 시간 형식을 자유롭게 선택할 수 있도록 합니다. -
Time.current를 사용하여 현재 시간을 가져오고, AI의 요청에 따라 시간을 포맷팅합니다. -
결과는 JSON 형태로 반환되며, 여기에는 포맷된 시간, 타임스탬프, 시간대 및 도구 실행 시간이 포함됩니다. AI는 JSON 형식의 응답을 선호하므로,
BaseTool에 정의된json_response기능을 활용하여 깔끔한 JSON을 생성합니다.
3. 에이전트 통합 및 활용
-
구현된
DateTimeTool을 에이전트의available_tools목록에 추가합니다. -
에이전트 설정(예:
general_assistant)에서date_time_tool을 활성화합니다. -
이를 통해 에이전트는 “지금 몇 시야?” 또는 “24시간 형식으로 알려줘”와 같은 질문에 대해
current_date_time도구를 호출하여 정확한 현재 시간 정보를 제공할 수 있게 됩니다.