Skip to content

how-about-us/ai-server

Repository files navigation

AI Server

협업 여행 서비스의 AI 기능을 담당하는 FastAPI 서버다.

Spring Boot BE와 분리된 독립 서버로, 채팅 요약과 여행 맥락 기반 AI 응답을 처리한다.

주요 기능

  • 채팅 메시지를 기반으로 rolling structured summary 생성
  • 일정, 북마크, 최근 대화 맥락을 반영한 AI 응답 생성
  • 장소 추천 요청 시 Google Places 기반 후보 조회
  • 여행 도메인 외 질문은 unsupported intent로 분리

API

Method Path Description
POST /v1/ai/context/summaries 이전 summary와 신규 메시지로 요약 갱신
POST /v1/ai/chat/plan 사용자 질문을 intent별로 처리하고 AI 응답 생성

전체 구조

app/
├─ main.py
├─ dependencies.py
├─ core/
│  └─ config.py
├─ schemas/
│  ├─ chat.py
│  └─ planner.py
├─ clients/
│  ├─ openai_travel.py
│  └─ google_places.py
└─ services/
   ├─ context_selection.py
   ├─ summary.py
   └─ orchestrator.py

현재 동작 방식

  • 채팅 요약 API는 previous_summary + messages_since_last_summary를 받아 rolling structured summary를 만든다.
  • 채팅 플랜 API는 summary + delta + recent_messages + request_message를 받아 intent를 분기한다.
  • intent는 place_recommendation, conversation_summary, travel_general_chat, unsupported 4개로 고정했다.
  • 장소 추천은 북마크/일정 맥락을 우선 반영하고, 필요 시 Google Places 후보를 최대 3개 반환한다.
  • OpenAI 호출은 summary 생성, intent 분기, 최종 답변 생성에 structured-output 프롬프트를 사용한다.

환경 변수

  • OPENAI_API_KEY
  • GOOGLE_MAPS_API_KEY

실행

cp .env.example .env
pip install -e .
uvicorn app.main:app --reload

기본 주소는 http://127.0.0.1:8000 이고 Swagger는 /docs 에서 확인할 수 있다.

Docker Compose 실행

개발 환경은 .env, 운영 환경은 .env.prod 파일을 사용한다. 개발 환경 예시는 .env.example, 운영 환경 예시는 .env.prod.example를 참고한다.

cp .env.example .env
docker compose -f compose.dev.yaml up --build
cp .env.prod.example .env.prod
docker compose -f compose.prod.yaml pull
docker compose -f compose.prod.yaml up --wait --wait-timeout 120

About

우리어때 프로젝트의 AI 레포지토리입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors