이 자습서에서는 크루즈 라인에 대한 여행자 문의 및 예약을 처리하는 자율 AI 에이전트를 빌드하는 방법을 보여 줍니다. AI 에이전트는 계획, 도구 사용 및 인식에 LangChain 에이전트 프레임워크를 사용합니다. 그런 다음 에이전트는 이러한 기능을 Azure DocumentDB의 벡터 데이터베이스 및 통합 메모리 시스템에 대한 문서 저장소 기능과 결합합니다.
샘플 에이전트는 Python FastAPI 백 엔드 내에서 작동하며 React JavaScript 사용자 인터페이스를 통해 사용자 상호 작용을 지원합니다. 이 구현에서는 AI 에이전트가 기본 챗봇을 넘어 기존에 코딩된 논리가 필요한 자연어를 기반으로 복잡한 작업을 수행하는 방법을 보여 줍니다.
이 튜토리얼에서는 다음을 배우게 됩니다:
- 벡터 검색 기능을 사용하여 Azure DocumentDB 설정
- 여행 문서 로딩 및 벡터 임베딩 만들기
- Python FastAPI 및 LangChain을 사용하여 AI 에이전트 빌드
- 휴가 조회, 여정 검색 및 예약을 위한 에이전트 도구 구현
- 사용자 상호 작용을 위한 React 웹 인터페이스 만들기
- 전체 AI 에이전트 솔루션 테스트
필수 조건
Azure 구독
- Azure 구독이 없는 경우 체험 계정 만들기
기존 Azure DocumentDB 클러스터
- 클러스터가 없는 경우 새 클러스터를 만듭니다.
OpenAI API 또는 Azure OpenAI Service에 대한 계정입니다.
Visual Studio Code와 같은 통합 개발 환경.
개발 환경에 설치된 Python 3.11.4 이상
Node.js React 프런트 엔드용으로 설치됩니다.
샘플 프로젝트 다운로드
모든 코드 및 샘플 데이터 세트는 Travel AI Agent GitHub 리포지토리에서 사용할 수 있습니다.
리포지토리(https://github.com/jonathanscholtes/Travel-AI-Agent-React-FastAPI-and-Cosmos-DB-Vector-Store)를 로컬 개발 환경에 복제하거나 다운로드합니다.
프로젝트 디렉터리로 이동하여 구조를 탐색합니다.
/loader: Azure DocumentDB에서 샘플 문서 및 벡터 포함을 로드하기 위한 Python 코드 포함/api: AI 여행사를 호스트하기 위한 Python FastAPI 프로젝트를 포함합니다./web: React 웹 인터페이스에 대한 코드 포함
Azure DocumentDB에 이동 문서 로드
디렉터리에는 /loader 샘플 여행 문서를 Azure DocumentDB에 로드하고 필요한 벡터 임베딩을 만들기 위한 Python 프로젝트가 포함되어 있습니다.
터미널의
/loader디렉터리로 이동합니다.Python 가상 환경을 만듭니다.
python -m venv venv가상 환경을 활성화합니다.
# On Windows venv\Scripts\activate # On macOS/Linux source venv/bin/activate필요한 종속성을 설치합니다.
python -m pip install -r requirements.txt.env디렉터리에 연결 세부 정보가 포함된 파일을 생성하십시오.OPENAI_API_KEY="<your OpenAI key>" MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure DocumentDB>"이 파일은
main.py데이터를 로드하기 위한 중앙 진입점 역할을 합니다. 선박 및 목적지 정보를 포함한 샘플 여행 데이터를 처리한 다음 여행 일정 패키지를 생성합니다./loader디렉터리에서 데이터 로드 스크립트를 실행하십시오. 스크립트는 다음 작업을 수행합니다.JSON 파일에서 배송 및 대상 데이터를 읽습니다.
다음을 사용하여 5개의 일정 패키지를 생성합니다.
ItineraryBuilder컬렉션에 여정 패키지를 저장합니다
itinerary목적지를
destinations컬렉션에 저장합니다ships컬렉션 내 선박에 대한 벡터 임베딩을 생성합니다.선박 이름에 대한 텍스트 검색 인덱스를 추가합니다.
python main.py출력에 성공적인 완료가 표시되는지 확인합니다.
--build itinerary-- --load itinerary-- --load destinations-- --load vectors ships--
AI 여행사 API 빌드
AI 여행 에이전트는 프런트 엔드 인터페이스와 통합되고 Azure DocumentDB 데이터에 대해 LLM(대규모 언어 모델) 프롬프트를 접지하여 에이전트 요청을 처리하는 Python FastAPI 백 엔드를 통해 호스팅됩니다.
터미널의
/api디렉터리로 이동합니다.Python 가상 환경을 만들고 활성화합니다.
python -m venv venv # On Windows venv\Scripts\activate # On macOS/Linux source venv/bin/activate필요한 종속성을 설치합니다.
python -m pip install -r requirements.txt.env파일을/api디렉터리에 만듭니다.OPENAI_API_KEY="<your OpenAI key>" MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure DocumentDB>"/api디렉터리에서 FastAPI 애플리케이션을 실행합니다.python app.py기본적으로 서버는
http://127.0.0.1:8000에서 시작됩니다.Swagger 대화형 설명서에
http://127.0.0.1:8000/docs을 통해 액세스하여 API 엔드포인트를 탐색합니다.
AI 에이전트 기능 테스트
AI 에이전트가 예상대로 작동하는지 테스트합니다.
Swagger 인터페이스에서 세션 엔드포인트를 테스트합니다.
/session/로 이동하여 사용해 보기 선택요청을 실행하여 대화 기록 추적을 위한 세션 ID 가져오기
에이전트 채팅 기능을 테스트합니다.
방문하여
/agent/agent_chat페이지로 이동한 후, 체험해 보기를 선택하세요.이 예제 입력을 사용하여 에이전트를 테스트합니다.
{ "input": "I want to take a relaxing vacation.", "session_id": "your-session-id-from-step-1" }에이전트는 LLM과 Azure DocumentDB 간의 통합을 보여주는 벡터 유사성 검색을 기반으로 크루즈 권장 사항으로 응답해야 합니다.
React 웹 인터페이스 만들기
웹 인터페이스는 대화형 인터페이스를 통해 AI 여행사와 상호 작용하는 사용자에게 친숙한 방법을 제공합니다.
React 환경 설정
터미널의
/web디렉터리로 이동합니다.프로젝트 종속성을 설치합니다.
npm ci.env파일을/web디렉터리에 만듭니다.REACT_APP_API_HOST=http://127.0.0.1:8000
웹 애플리케이션 시작
React 개발 서버를 시작합니다.
npm start애플리케이션은 일반적으로
http://localhost:3000기본 브라우저에서 자동으로 열립니다.인터페이스는 유람선 및 대상 이미지가 있는 여행 웹 사이트를 보여줍니다.
전체 솔루션 테스트
기본 페이지에서 여행 도우미 채팅 인터페이스를 열기 위해 항해를 손쉽게 계획 합니다.
채팅 인터페이스는 미리 채워진 메시지와 함께 대화 상자에서 열립니다. "편안한 휴가를 보내고 싶습니다."
전송을 선택하여 AI 에이전트에 메시지를 보냅니다.
에이전트는 입력에 따라 크루즈 권장 사항으로 응답하여 다음을 보여 줍니다.
자연어 처리
Azure DocumentDB에 대한 벡터 유사성 검색
세션 전체의 대화형 메모리
채팅 인터페이스의 HTML 형식 응답
대화를 계속하여 에이전트 기능의 전체 범위를 참조하세요. 특정 선박, 여정 또는 예약에 대해 묻습니다.
AI 에이전트 아키텍처 이해
AI 에이전트 구현은 문제를 구분하고 유지 관리를 가능하게 하는 계층화된 아키텍처를 따릅니다.
서비스 계층 구성 요소
서비스 계층에는 핵심 비즈니스 논리 및 LangChain 에이전트 구현이 포함됩니다.
에이전트 초기화: 모듈은
init.pyChatOpenAI 모델, 에이전트 도구 및 대화 기록을 설정합니다.에이전트 도구: 세 가지 주요 도구는 휴가 조회, 여정 검색 및 크루즈 예약을 처리합니다.
메모리 관리: 대화 기록은 세션 식별자를 사용하여 Azure DocumentDB에 저장됩니다.
에이전트 도구 기능
AI 에이전트는 세 가지 특수 도구를 사용합니다.
vacation_lookup: Azure DocumentDB에 대한 벡터 검색을 수행하여 관련 여행 정보를 찾습니다.
itinerary_lookup: 특정 선박의 크루즈 패키지 세부 정보 및 일정을 검색합니다.
book_cruise: 승객 정보 유효성 검사를 통해 크루즈 패키지 예약을 처리합니다.
데이터 계층 통합
데이터 계층은 Azure DocumentDB와의 모든 상호 작용을 처리합니다.
벡터 검색: 여행 권장 사항에 대한 점수 매기기와 유사성 검색.
문서 스토리지: 선박, 목적지 및 여정에 대한 구조적 데이터입니다.
대화 기록: 세션 기반 채팅 메시지 스토리지.
자원을 정리하세요
이 자습서에서 만든 리소스가 더 이상 필요하지 않은 경우 지속적인 요금을 방지하기 위해 리소스를 정리할 수 있습니다.
Azure Portal에서 Azure DocumentDB 계정으로 이동합니다.
이 자습서에 대한 전용 리소스 그룹을 만든 경우 전체 리소스 그룹을 삭제합니다.
그렇지 않으면 만든 특정 컬렉션을 삭제합니다.
travel.itinerarytravel.destinationstravel.shipstravel.history