AI 에이전트, 질문을 통해 사용자의 요구 사항을 정확히 파악하다!

by DD
4개월 전
조회수 48

Spring AIAskUserQuestionTool은 AI 에이전트가 사용자에게 질문하여 요구 사항을 수집하는 기능을 제공하며, 상호작용 기반(Interactive-based)의 에이전트 구축을 지원한다.

OpenAI, Anthropic, Google Gemini 등 다양한 LLM(Large Language Model)에서 사용 가능하며, LLM 종속성(Vendor Lock-In) 문제를 해결한다.

MCP Elicitation과 유사한 기능을 제공하며, JSON 스키마(JSON Schema) 기반의 사용자 입력을 에이전트 내에서 직접 처리한다.

AskUserQuestionTool의 작동 원리

AskUserQuestionTool은 AI 에이전트가 사용자에게 질문을 생성하고, 사용자가 답변을 제공하는 질의응답 워크플로우(Question-Answer Workflow)를 따른다.

질문 생성: 에이전트는 질문 텍스트, 헤더, 선택지, multiSelect 플래그(Flag)를 포함하는 질문을 구성하고, askUserQuestion tool function을 호출

답변 제공: 커스텀 핸들러(Custom Handler)는 질문을 UI를 통해 표시하고, 답변을 수집하여 AI에 반환

추가 질문: 필요에 따라 1, 2단계를 반복하여 추가 사용자 피드백 수집

컨텍스트 기반 솔루션: 에이전트는 답변을 사용하여 맞춤형 솔루션 제공

이러한 상호 작용을 통해 AI 에이전트는 사용자 요구 사항(User Requirements)을 정확하게 파악하고, 맞춤형 답변(Tailored Solutions)을 제공한다.

Spring AI를 활용한 구현 방법

Spring AI는 AskUserQuestionTool을 Java 생태계(Ecosystem)에 이식하여 LLM 이식성(LLM Portability)을 보장한다.

의존성 추가: spring-ai-agent-utils 라이브러리(Library)를 프로젝트에 추가

에이전트 구성: ChatClientBuilder를 사용하여 AskUserQuestionTool을 defaultTools로 설정

QuestionHandler 구현: 콘솔(Console) 또는 웹(Web) 기반의 QuestionHandler를 구현하여 사용자 입력을 처리

예시 코드: 콘솔 기반 QuestionHandler는 Scanner를 사용하여 사용자 입력을 받고, 웹 기반 QuestionHandler는 CompletableFuture를 사용하여 비동기 UI 상호 작용 처리

이러한 과정을 통해 개발자는 LLM 플랫폼(LLM Platform)에 종속되지 않고 다양한 LLM을 활용할 수 있다.

MCP Elicitation과의 관계

AskUserQuestionTool은 MCP Elicitation과 유사한 기능을 제공하며, 에이전트 내에서 직접 사용자 입력을 처리한다.

MCP Elicitation: MCP 서버(Server)가 JSON 스키마(JSON Schema)를 통해 구조화된 사용자 입력을 요청

AskUserQuestionTool: MCP 서버 없이 에이전트 내에서 동일한 상호 작용 패턴 구현

Spring AI 지원: @McpElicitation 어노테이션(Annotation)을 통해 서버 기반 시나리오(Server-driven Scenarios)에 대한 MCP Elicitation 지원

AskUserQuestionTool은 MCP Elicitation의 간편한 대안(Alternative)으로, 에이전트 개발의 유연성을 높인다.

AskUserQuestionTool의 장점

AskUserQuestionTool은 기존 AI 상호 작용의 문제점을 해결하고, 보다 정확하고 효율적인(Efficient) AI 에이전트를 구축할 수 있도록 돕는다.

요구 사항 명확화: 질문을 통해 사용자의 요구 사항을 명확하게 파악하여 가정(Assumption) 기반의 답변 생성 문제 해결

LLM 이식성: Spring AI를 통해 다양한 LLM에서 사용 가능하며, LLM 종속성(Vendor Lock-In) 문제 해결

유연성: 단일 선택, 다중 선택, 자유 텍스트 입력(Free-text Input) 등 다양한 입력 방식 지원

풍부한 컨텍스트: 각 선택지에 대한 설명(Description)을 제공하여 사용자 이해도(User Understanding) 향상

이러한 장점들을 통해 개발자는 사용자 중심(User-centric)의 AI 에이전트를 구축할 수 있다.

실제 사용 사례: 여행 추천 도우미

AskUserQuestionTool은 여행 추천 도우미(Travel Recommendation Assistant)와 같은 실제 사용 사례에서 효과적으로 활용될 수 있다.

사용자 입력: 여행 목적지, 관심사, 여행 시기, 예산 등 다양한 질문을 통해 사용자 선호도(User Preferences) 파악

맞춤형 추천: 수집된 정보를 바탕으로 맞춤형 여행지 추천(Personalized Recommendations) 제공

예시: 유럽 여행 추천 시, 관심사, 여행 시기, 예산 등을 질문하여 최적의 여행지(Optimal Destination) 추천

이처럼 AskUserQuestionTool은 상호 작용(Interaction)을 통해 정확한 정보(Accurate Information)를 수집하고, 개인화된 서비스(Personalized Service)를 제공한다.

Spring AI Agentic Patterns (Part 2): AskUserQuestionTool - Agents That Clarify Before Acting

댓글 0

첫 번째 댓글을 남겨보세요!