구축되는 AI 에이전트의 수가 날마다 증가함에 따라 기업은 의사 결정과 운영 워크플로를 지원하기 위한 자율 시스템을 모색하고 있습니다. 동시에 조직은 설명 가능성, 거버넌스 및 프로덕션 준비 상태에 대한 우려를 자주 제기하며, 특히 추론에 대규모 언어 모델(LLM)을 사용하는 멀티 에이전트 시스템에서 이러한 우려가 더욱 큽니다. 명확한 설명 없이 응답하거나 일관되지 않은 동작을 보이는 에이전트를 비즈니스 환경에서 사용하는 것은 어려운 과제입니다.
이러한 문제는 사용자 지정 오케스트레이션 코드 없이도 셀프 호스팅, 툴 기반 추론, API 호출 및 엔터프라이즈급 제어를 지원하는 구조화된 플랫폼인 IBM watsonx Orchestrate를 사용하여 해결할 수 있습니다.
Dynamiq는 주요 보험사 고객을 위해 멀티 에이전트 법률 조사 도우미를 구축했으며, 질의를 먼저 저비용 IBM Granite 분류기로 전달한 후 더 복잡한 조사 에이전트로 전달하도록 구성했습니다. 이러한 중요한 워크플로를 실제로 운영하려면 모든 추론 단계와 툴 호출에 대한 높은 수준의 가시성이 필요했습니다. Dynamiq는 IBM watsonx Orchestrate를 통합하여 모든 의사 결정을 완전히 추적 가능하고, 감사 가능하며, 근거를 확인할 수 있도록 함으로써 거버넌스를 유지하면서 계약 검토 시간을 90분에서 45분으로 단축했습니다.
이 튜토리얼에서는 watsonx Orchestrate Agent Development Kit(ADK)를 사용하여 watsonx Orchestrate에서 AI 에이전트를 만드는 방법을 알아봅니다. LangChain 또는 LangGraph 기반 AI 시스템에서는 개발자가 재시도, 상태 관리 및 비동기 실행을 직접 처리하는 경우가 많습니다. watsonx Orchestrate ADK는 일관된 엔터프라이즈급 에이전트 배포를 지원하는 통합 수명 주기 관리를 통해 이러한 과정을 간소화합니다.
Python을 사용하여 위험 평가 로직을 만들고, 에이전트 동작을 정의하며, Langfuse를 통합하여 실제 실행 추적을 기반으로 에이전트 동작을 모니터링하고 개선합니다. 이 튜토리얼은 GitHub에서도 확인할 수 있습니다.
Langfuse는 OpenTelemetry를 기반으로 구축된 오픈 소스 LLM 관찰 가능성 플랫폼으로, LLM 애플리케이션과 에이전트를 모니터링하는 데 사용됩니다. Langfuse는 텔레메트리(추적, 메트릭 및 로그)를 사용하여 요청 및 세션 단위에서 LLM 호출, 툴 호출, 토큰 사용량, 메타데이터 및 지연 시간을 포함한 에이전트 실행 추적을 모니터링합니다.
이를 통해 개발자는 실제 환경에서 에이전트가 어떻게 동작하는지 심층적으로 파악하고, 잘못된 결과의 근본 원인을 찾아내며, 더 높은 신뢰성과 효율성을 위해 에이전트 동작을 체계적으로 최적화할 수 있습니다.
이 튜토리얼의 목표는 결정론적 규칙 기반 분석을 통해 공급업체 위험을 평가하는 엔터프라이즈 거버넌스용 AI 에이전트를 구축하는 것입니다. 재무 등급, 보안 인증 및 사고 이력이 포함된 공급업체의 합성 데이터 세트를 만들었습니다. 에이전트는 이 데이터를 처리하여 공급업체를 특정 위험 등급(낮음, 중간 또는 높음)으로 분류하고, 분류 결과에 대한 근거도 함께 제공합니다.
또한 사용자가 공급업체를 비교하거나 데이터가 변경될 경우 위험 점수가 어떻게 달라지는지 시뮬레이션할 수 있도록 대화형 후속 질의를 지원하여 기업 규정 준수에 필요한 높은 수준의 감사 가능성을 보장합니다.
아래에는 이 튜토리얼에서 구축하는 완성된 공급업체 위험 에이전트의 대화형 데모가 제공됩니다. 시작하기 전에 에이전트가 공급업체를 분류하고, 질문에 응답하며, Langfuse를 통해 추론 과정을 추적하는 방식을 살펴보면서 구축할 내용을 미리 확인해 보세요.
이 튜토리얼을 완료하려면 다음이 필요합니다.
시스템에 설치된 Python 3.11 이상 버전
watsonx Orchestrate 계정 이 튜토리얼에서는 평가판 계정으로도 충분합니다. 계정이 없는 경우 IBM Cloud에서 30일 무료 평가판 계정을 만들 수 있습니다.
Orchestrate 사용자 인터페이스(UI)에서 발급한 watsonx Orchestrate API 키
시스템에 설치된 watsonx Orchestrate ADK
IBM Cloud를 통해 watsonx Orchestrate에 로그인한 다음 watsonx Orchestrate UI를 엽니다. 프로필 메뉴에서 Settings를 연 후 API details로 이동합니다. 새 API 키를 생성한 다음 복사하여 안전한 곳에 보관합니다. 로컬 개발 중에는 이 API 키를 사용하여 watsonx Orchestrate ADK를 인증합니다. watsonx Orchestrate는 에이전트 로직을 구축하고 테스트하기 위한 로컬 SDK(소프트웨어 개발 키트)처럼 작동합니다.
이 단계에서는 로컬 개발 환경을 만듭니다. 이 튜토리얼에서는 PowerShell에서 ADK가 제공하는 오케스트레이션된 명령줄 인터페이스(CLI)를 통해 로컬 개발 서버를 실행하고, 툴을 가져오고, 환경을 설정하고, 에이전트를 생성합니다. 먼저 프로젝트를 만들 디렉터리로 이동합니다. 그런 다음 새 Python 가상 환경을 만듭니다.
격리된 Python 환경이 .venv 폴더에 생성됩니다. 가상 환경을 사용하면 이 튜토리얼에 필요한 모든 종속성을 시스템의 Python 설치 환경과 분리할 수 있습니다.
그런 다음 가상 환경을 활성화합니다. 사용할 활성화 명령은 운영 체제에 따라 달라집니다.
Windows:
macOS 및 Linux:
활성화되면 터미널 프롬프트 앞에 .venv가 표시되어 현재 가상 환경에서 작업 중임을 나타냅니다.
가상 환경이 활성화된 상태에서 로컬 컴퓨터에 watsonx Orchestrate ADK를 설치합니다. ADK를 사용하려면 기존 watsonx Orchestrate 환경에 연결합니다. PowerShell에서 다음 명령을 실행합니다.
이후 ADK 설치는 공식 설치 문서의 안내에 따라 진행할 수 있습니다.
참고: 이 튜토리얼에서는 watsonx Orchestrate Developer Edition 런타임을 로컬에서 실행하고, 자격 증명을 사용하여 watsonx Orchestrate SaaS 인스턴스에 연결합니다.
이 방법을 실행하려면 프로젝트 폴더의 루트에 .env 파일을 만들고 다음 값을 추가합니다.
서버를 실행하려면 .env 파일이 필요합니다. 다음 단계에서는 orchestrate server start -e .env -l 명령으로 서버를 시작합니다.
다음으로, 유효한 watsonx Orchestrate API 키를 사용하여 ADK를 설정하고 로컬 환경을 watsonx Orchestrate에 연결해야 합니다.
참고: watsonx Orchestrate ADK는 IBM Cloud, AWS 및 온프레미스 배포를 비롯한 여러 환경 유형과 호환됩니다. 이 튜토리얼에서는 온프레미스 환경을 사용하며 ADK CLI를 통해 API 키로 인증합니다. ADK는 자격 증명을 내부에서 안전하게 관리하므로 이 설정에서는 환경 변수를 수동으로 구성할 필요가 없습니다.
프로젝트 디렉터리(가상 환경이 활성화된 상태)에서 다음 명령을 실행하여 watsonx Orchestrate 환경을 추가합니다.
여기서 service-instance-url은 watsonx Orchestrate 인스턴스 URL입니다. 이 정보는 watsonx Orchestrate UI의 Settings에 있는 API details 탭에서 확인할 수 있습니다.
다음으로, 추가한 환경을 활성화합니다.
메시지가 표시되면 1단계에서 발급받은 watsonx Orchestrate API 키를 입력합니다. 환경이 활성화되면 에이전트 가져오기, 툴 가져오기 또는 서버 실행과 같은 이후의 모든 ADK 관련 명령은 watsonx Orchestrate 환경에서 실행됩니다.
참고: Developer Edition으로 모든 작업을 로컬에서 실행하려면 다음 명령으로 기본 로컬 환경을 활성화할 수 있습니다.
그러면 ADK가 기본 제공되는 로컬 Orchestrate 환경으로 전환되어 로컬 테스트에 사용할 수 있습니다.
이 단계에서는 Vendor Risk Intelligence Agent의 정의, 툴 및 소스 코드가 포함된 에이전트 프레임워크 템플릿을 만듭니다. 그런 다음 로컬 ADK 기반 개발에 필요한 폴더 구조를 만듭니다.
다음 명령을 사용하여 에이전트의 폴더 구조를 만들 수 있습니다.
각 폴더의 용도는 다음과 같습니다.
agents 폴더에는 에이전트 모델의 지침, 추론 규칙 및 구성이 포함된 YAML 파일이 있습니다. 이 파일은 시스템이 사용자 질문에 응답하는 방식을 결정합니다. tools 폴더에는 에이전트에 제공되는 툴을 설명하는 YAML 파일이 있습니다. src 폴더에는 사용자 지정 툴과 비즈니스 로직을 구현한 Python 코드가 있습니다.
툴과 에이전트를 가져오기 전에 가져온 항목을 수신하고 저장할 수 있도록 watsonx Orchestrate 서버를 시작합니다. 프로젝트 폴더의 루트에서 다음 명령을 실행합니다.
다음 단계는 에이전트 관찰 가능성으로, 어떤 툴이 호출되는지, 지연 시간이 얼마나 발생하는지, 오류가 어디에서 발생하는지 등 런타임 중 에이전트의 동작을 분석합니다. 이를 위해 watsonx Orchestrate ADK 환경에서 Langfuse 관찰 가능성을 활성화합니다.
이 튜토리얼에서는 Langfuse를 로컬에서 실행하지 않고도 추적을 수집할 수 있는 Langfuse SaaS 버전을 사용합니다.
Langfuse를 구성하기 전에 watsonx Orchestrate 서버가 실행 중인지(6단계) 확인합니다.
다음으로 https://cloud.langfuse.com에서 Langfuse 계정을 생성합니다. 로그인한 후 새 조직과 프로젝트를 생성합니다. 프로젝트 설정에서 프로젝트 ID, 공개 키, 비밀 키 및 호스트 URL을 복사합니다.
이제 다음 섹션에 나오는 명령을 사용하여 watsonx Orchestrate ADK에서 Langfuse를 설정하고, placeholder를 복사한 값으로 바꿉니다.
이 명령이 성공적으로 완료되면 Langfuse 모듈이 watsonx Orchestrate 환경에 완전히 통합됩니다. 이 단계부터 에이전트와 이루어지는 모든 상호 작용은 Langfuse 모듈에 자동으로 기록됩니다.
이제 서버가 실행 중이므로 에이전트를 테스트할 수 있습니다.
다음 단계에서는 Vendor Risk Intelligence Agent를 정의합니다. watsonx Orchestrate ADK에서는 에이전트의 목표, 추론 제한 사항, 모델 구성 및 사용할 수 있는 툴을 정의하는 YAML 파일로 에이전트를 선언합니다.
agents 디렉터리에 vendor-risk-agent.yaml 파일을 생성합니다. 이 파일은 자유로운 추론이 아니라 결정론적 추론을 기반으로 모든 응답이 생성되도록 보장하는 에이전트의 프롬프트 관리 계층입니다.
이 튜토리얼에서 사용하는 에이전트 정의는 다음과 같습니다. 다음 에이전트 정의를 agents/vendor-risk-agent.yaml 파일에 복사하여 붙여 넣습니다. 그런 다음 파일을 저장합니다.
이 구성은 무엇, 이유, 방법 및 비교 질문 전반에서 에이전트가 예측 가능한 방식으로 동작하도록 보장합니다. 시스템은 툴의 출력에서 명시적으로 정의된 경우를 제외하고 재무 등급이나 위험의 의미를 추정하지 못하도록 하여 할루시네이션을 방지합니다.
이 단계에서는 공급업체 위험 평가를 수행하는 Python 툴을 구현합니다. watsonx Orchestrate ADK에서는 에이전트가 결과를 얻기 위해 실행하는 Python 툴을 통해 사용자 지정 비즈니스 로직을 구현합니다. 이 튜토리얼에서는 특정 도메인에 맞게 모델을 파인튜닝하는 대신 Python 툴을 통해 결정론적 규칙 기반 추론을 구현하여 일관된 결과를 얻는 방법을 보여줍니다.
src 폴더에 main.py 파일을 생성합니다. 이 파일에는 생성한 공급업체 데이터 세트, 위험 평가 규칙 및 에이전트에 로직을 제공하는 evaluate_all_vendor_risks라는 Python 툴이 포함됩니다.
위험 평가 로직은 규칙 기반으로 구현됩니다. 고위험 신호의 경우 기업은 재무 성과 부진, 과거의 보안 사고 또는 규제 기관의 조사로 인해 높은 위험 점수를 받을 수 있습니다. 기업은 인증 부재, 단일 운영 사고 또는 기상 조건으로 인한 운영 차질로 인해 중간 위험 점수를 받을 수 있습니다.
evaluate_all_vendor_risks 함수는 watsonx Orchestrate 툴로 구현되어 실행 중에 에이전트가 호출할 수 있습니다. 이 툴은 최종 위험 수준과 함께 해당 분류의 정확한 근거를 포함하는 구조화된 출력값을 반환합니다.
참고: 이 튜토리얼에 포함된 main.py파일은 공급업체 위험 평가 로직의 최종 업데이트 버전입니다. 초기 버전의 코드는 에이전트의 잘못된 동작을 유발했으며, 이러한 문제는 Langfuse 추적을 통해 분석했습니다. Langfuse 추적은 이 튜토리얼의 뒷부분에 있는 스크린샷에서 확인할 수 있습니다.
이 튜토리얼에서 사용하는 main.py파일의 전체 구현은 다음과 같습니다. 이를 src/main.py에 복사하여 붙여 넣습니다. 그런 다음 파일을 저장합니다.
이 단계에서는 툴과 에이전트를 watsonx Orchestrate에서 사용할 수 있도록 해야 합니다. 이를 위해 활성화된 ADK 환경으로 이러한 구성 요소를 가져옵니다. 가져오기 명령을 실행하기 전에 agents, src 및 tools 디렉터리가 있는 프로젝트의 루트 폴더에 있는지 확인합니다.
먼저 watsonx Orchestrate가 Python 툴을 실행 가능한 기능으로 등록할 수 있도록 Python 툴을 가져옵니다. 프로젝트 디렉터리의 루트에서 다음 명령을 실행합니다.
이 명령은 Python 코드를 모듈로 패키징하고 evaluate_all_vendor_risks 툴을 등록하여 에이전트가 이를 호출할 수 있도록 합니다.
그러면 Vendor Risk Intelligence Agent가 watsonx Orchestrate 환경에서 Python 툴과 완전히 통합됩니다.
로컬 watsonx Orchestrate 서버가 실행 중이고 에이전트 관찰 가능성이 활성화된 상태에서 이제 에이전트를 테스트하고 동작을 실시간으로 분석할 수 있습니다.
다음 명령을 실행하여 채팅 인터페이스를 시작합니다.
이제 브라우저에서 watsonx Orchestrate 채팅 UI를 엽니다. 에이전트 선택기에서 Vendor_Risk_Intelligence_Agent를 선택한 다음 공급업체 위험과 관련된 질문을 시작합니다.
에이전트가 올바르게 응답하고 Python 툴을 결정론적으로 호출하는지 확인하기 위해 다음과 같은 질문으로 테스트해 볼 수 있습니다.
에이전트와 상호 작용하면서 브라우저에서 Langfuse 대시보드를 엽니다. 각 사용자 질의는 새로운 추적을 생성하며, 여기에는 session_id와 사용자 ID가 포함됩니다. 이러한 추적에는 에이전트의 전체 실행 경로가 기록됩니다. 추적을 선택하면 다음 항목을 분석할 수 있습니다.
에이전트의 전체 입력 및 출력
Python 툴 호출
툴이 반환한 구조화된 데이터
최종 답변에 도달하기까지의 추론 과정
각 단계의 지연 시간
여러 질문에 대한 세션 기반 대화 흐름
이러한 관찰 가능성을 통해 가정의 오류, 불완전한 규칙 또는 예기치 않은 에이전트 동작과 같은 병목 현상을 보여 주는 성능 지표를 분석할 수 있습니다.
에이전트를 테스트한 후에는 Langfuse 추적을 사용하여 잘못된 응답을 식별합니다. Langfuse는 각 툴 호출, 추론 단계 및 응답 지연 시간을 보여 주므로 응답이 생성된 이유를 쉽게 파악할 수 있습니다.
이 사용 사례에서는 추적 분석을 통해 에이전트가 재무적 의미를 추론하거나 규칙 기반 근거를 명시적으로 제시하지 않고 응답할 때 일부 잘못된 답변이 발생한다는 사실을 확인했습니다. 이를 개선하기 위해 에이전트 지침과 해당 Python 코드를 수정하여 필수 툴 호출을 기반으로 엄격한 규칙 기반 추론이 이루어지도록 했습니다.
업데이트된 파일을 다시 가져온 후 에이전트를 다시 테스트했습니다. 새로운 추적을 통해 응답이 구조화된 툴 출력에 확실히 기반하고, 설명이 결정론적으로 이루어지며, 모든 설명형 질문에 대한 응답이 올바른지 확인할 수 있습니다.
이러한 관찰 및 개선 과정을 통해 Langfuse가 사용자 피드백을 바탕으로 에이전트를 안전하고 안정적으로 개발하는 데 어떻게 도움이 되는지 확인할 수 있습니다.
아래의 대화형 데모를 통해 공급업체 위험 에이전트와 Langfuse 추적이 실제로 어떻게 동작하는지 살펴보세요.
이 튜토리얼에서는 엔터프라이즈급 에이전트 개발을 위해 설계된 watsonx Orchestrate를 사용하여 구조적이고 신뢰할 수 있는 AI 에이전트를 만드는 방법을 살펴보았습니다. 간단한 규칙 기반 Python 로직, 명확한 에이전트 지침 및 재사용 가능한 툴을 통합하여 최소한의 코드로 높은 투명성을 갖춘 공급업체 위험 평가 사용 사례를 구현했습니다.
Langfuse를 추가하면 에이전트의 동작을 쉽게 파악하고 추론상의 문제를 식별하여 추측에 의존하지 않고도 정확성을 지속적으로 개선할 수 있습니다. 이러한 접근 방식은 기업이 에이전트 시스템을 엔드 투 엔드로 최적화하고, 복잡한 워크플로를 자동화하며, 완전한 투명성을 갖춘 AI 시스템을 배포하는 데 도움이 됩니다.
더 중요한 점은 watsonx Orchestrate ADK와 Langfuse를 함께 사용하면 기업은 더욱 강력한 거버넌스와 명확한 추론을 바탕으로 개발 시간을 단축하면서 복잡한 에이전틱 워크플로와 AI 애플리케이션을 더 빠르게 설계하고, 디버깅하고, 확장할 수 있다는 것입니다.
생성형 AI로 워크플로와 프로세스를 자동화하는 강력한 AI 어시스턴트 및 에이전트를 구축, 배포, 관리하세요.
믿을 수 있는 AI 솔루션으로 비즈니스의 미래를 설계하세요.
IBM Consulting AI 서비스는 기업이 AI 활용 방식을 재구상하여 혁신을 달성하도록 지원합니다.