에이전트 워크플로우로 구현하는 도구 기반 경로 최적화 시스템

에이전트 워크플로우로 구현하는 도구 기반 경로 최적화 시스템

소개

최근 물류 업계에서는 배송 경로 최적화가 중요한 화두로 자리 잡았습니다. 전통적인 방식으로는 단순한 거리 계산에 의존했지만, 이제 에이전트 워크플로우를 활용하면 더 똑똑하고 효율적인 경로 계획을 세울 수 있습니다. 오늘은 LangChain 에이전트 API를 활용한 실전 경로 최적화 에이전트 구현 방법을 살펴보겠습니다.

핵심 구성 요소

1. 필수 라이브러리 설치

먼저 필요한 도구들을 설치해야 합니다. LangChain과 OpenAI API를 활용하면 강력한 에이전트를 만들 수 있습니다. 파이썬 환경에서 다음 명령어로 필요한 패키지를 설치합니다.

pip install langchain langchain-openai pydantic

이 라이브러리들은 에이전트 개발, 언어 모델 연동, 데이터 검증 등을 담당합니다. 특히 Pydantic은 구조화된 출력을 보장하는 중요한 도구입니다.

2. 사이트 및 속도 프로파일 정의

경로 최적화의 첫 번째 단계는 운영 체계를 정의하는 것입니다. 예시에서는 리그, 야적장, 창고 등의 시설을 좌표와 함께 정의합니다. 각 시설에는 위도와 경도가 부여되어 있으며, 시설 유형에 따라 분류됩니다.

속도 프로파일은 도로 유형별로 평균 시속을 설정합니다. 고속도로는 90km/h, 간선도로는 65km/h, 지방도는 45km/h로 설정합니다. 여기에 교통 혼잡도를 반영하기 위한 기본 승수 값도 함께 정의합니다.

3. 하버시네 공식으로 거리 계산

거리 계산을 위해서는 수학적 계산이 필수적입니다. 하버시네 공식을 사용하면 지구 표면상의 두 지점 사이 직선 거리를 정확하게 구할 수 있습니다. 이 계산은 모든 경로 결정의 기반이 됩니다.

수학적 기반이 견고하게 되면, 모든 거리와 소요 시간은 추론이 아닌 명시적인 계산에 의해 도출됩니다. 이는 에이전트가 확실하지 않은 값을 생산하는 것을 방지합니다.

경로 최적화 도구 구현

1. 사이트 조회 및 검증 도구

에이전트가 사용할 수 있는 여러 도구를 정의합니다. 먼저 모든 사이트를 조회하는 도구, 특정 사이트의 상세 정보를 확인하는 도구, 그리고 모호한 검색어를 처리하는 추천 도구를 만들 수 있습니다. 이러한 도구들을 통해 에이전트가 시설 정보를 정확하게 파악할 수 있습니다.

2. 직접 경로 계산 도구

두 지점 사이의 직접 경로를 계산하는 도구도 중요합니다. 도로 유형과 교통 승수를 매개변수로 전달하면, 시스템이 거리와 예상 소요 시간을 자동으로 계산합니다. 결과는 각 구간별로 세분화되어 반환됩니다.

3. 최적 경로 탐색 도구

가장 강력한 도구는 여러 경유지를 고려한 최적 경로를 탐색하는 기능입니다. 출발지에서 도착지까지 가능한 모든 경로를 생성하고, 사용자가 지정한 목표에 따라 최고를 선택합니다. 목표는 소요 시간 단축이나 거리 단축 중 하나를 선택할 수 있습니다.

또한 상위 대안 경로도 함께 제공합니다. 이를 통해 운전자가 긴급 상황에 대비할 수 있습니다.

구조화된 출력 정의

Pydantic 모델 활용

에이전트의 출력을 구조화하기 위해 Pydantic 모델을 사용합니다. 경로 구간별 정보를 담는 모델, 전체 경로 계획을 담는 모델, 그리고 최종 결정 결과를 담는 모델을 정의합니다. 각 모델은 타입과 제약 조건이 명확하게 지정되어 있어 데이터 품질이 보장됩니다.

특히 결정 결과 모델에는 선택된 경로, 대안 경로, 가정 사항, 참고 메모, 감사 추적 목록이 포함됩니다. 이를 통해 모든 결정이 투명하고 감사 가능한 형태로 기록됩니다.

에이전트 생성

LangChain의 create_agent 함수를 활용하여 에이전트를 생성합니다. 시스템 프롬프트에는 에이전트의 역할과 행동 규칙을 명시합니다. 반드시 도구를 사용해서만 거리와 소요 시간을 계산해야 하며, 구조화된 형태만 반환해야 합니다.

응답 형식으로 앞서 정의한 Pydantic 모델을 지정하면, 에이전트가 항상 일관된 형식의 결과를 반환합니다.

실제 활용 사례

사례 1: 기본 경로 최적화

첫 번째 예시에서는 야적장에서 리그_B까지의 경로를 최적화합니다. 간선도로를 주로 이용하고, 교통 상황을 반영한 승수를 적용합니다. 에이전트는 도구를 호출하여 정확한 거리와 예상 소요 시간을 계산하고, 최적 경로를 반환합니다.

사례 2: 다중 경유지 최적화

더 복잡한 상황도 처리할 수 있습니다. 리그_C에서 리그_B로 이동하면서, 경유 가능한 시설들을 활용하는 경우를 살펴봅니다. 고속도로를 이용하고, 두 개의 경유지를 포함하도록 설정합니다. 소요 시간을 최소화하는 것이 목표입니다.

이 경우 에이전트는 모든 가능한 경로를 평가하여 최고를 선택합니다. 결과에는 선택된 경로와 함께 상위 대안 경로도 포함되어 있습니다.

결론 및 확장 가능성

이번 튜토리얼에서 구현한 경로 최적화 에이전트는 확정적 계산과 도구 호출 언어 모델의 장점을 결합합니다. 모든 결정이 명시적인 계산에 기반하므로 신뢰할 수 있으며, 구조화된 출력 덕분에 이후 시스템과의 연동도 용이합니다.

이 시스템을 기반으로 여러 가지 확장이 가능합니다. 실시간 교통 데이터 연동, 차량 제약을 반영한 제한 조건 추가, 비용 기반 목표 함수 도입 등을 통해 더 현실적인 물류 시스템으로 발전시킬 수 있습니다.

경로 최적화 에이전트는 Dispatch 플랫폼이나 차량 관리 시스템의 핵심 구성 요소로 활용될 잠재력이 있습니다. 이제 이러한 기술을 활용하여 더 효율적인 물류 운영을 구축할 차례입니다.


참고: 전체 코드 예제는 GitHub에서 확인할 수 있습니다.

댓글 남기기