Class SampleQueryServiceImpl

java.lang.Object
com.arms.api.sample.service.SampleQueryServiceImpl
All Implemented Interfaces:
UserQueryService<SampleQueryDTO>

@Service public class SampleQueryServiceImpl extends Object implements UserQueryService<SampleQueryDTO>
샘플 질의 서비스 구현체

UserQueryService<SampleQueryDTO> 를 구현하며, UserQueryServiceImpl 에 위임하여 AI 파이프라인을 실행합니다.

 파이프라인:
   SampleQueryDTO.queryText
       ↓
   UserQueryServiceImpl.stream() / generate()          ← RAG 직접 응답
   UserQueryServiceImpl.execute()                      ← RAG → Keyword → Search → LLM
   UserQueryServiceImpl.executeStream()                ← 위 파이프라인 스트리밍
       ↓
   AiResponseService.convert() / convertAll()          ← 파일 변환·저장
 
  • Constructor Details

    • SampleQueryServiceImpl

      public SampleQueryServiceImpl()
  • Method Details

    • stream

      public reactor.core.publisher.Flux<String> stream(SampleQueryDTO query)
      Description copied from interface: UserQueryService
      질의를 AI 파이프라인에 전달하고 응답을 실시간 스트림으로 반환합니다.
      Specified by:
      stream in interface UserQueryService<SampleQueryDTO>
      Parameters:
      query - 사용자 질의 객체
      Returns:
      토큰 단위 스트리밍 응답
    • generate

      public reactor.core.publisher.Mono<String> generate(SampleQueryDTO query)
      Description copied from interface: UserQueryService
      질의를 AI 파이프라인에 전달하고 완성된 응답을 단건으로 반환합니다.
      Specified by:
      generate in interface UserQueryService<SampleQueryDTO>
      Parameters:
      query - 사용자 질의 객체
      Returns:
      완성된 응답 문자열
    • stopStream

      public String stopStream(String sessionId)
      Description copied from interface: UserQueryService
      진행 중인 스트림을 sessionId 기준으로 중단합니다.
      Specified by:
      stopStream in interface UserQueryService<SampleQueryDTO>
      Parameters:
      sessionId - 중단할 스트림의 세션 ID
      Returns:
      처리 결과 메시지
    • execute

      public reactor.core.publisher.Mono<AiRequestResultVO> execute(SampleQueryDTO query)
      RAG → Keyword → SearchEngine → LLM 전체 파이프라인 실행 후 단건 응답을 반환합니다.
      Parameters:
      query - 샘플 질의 DTO
      Returns:
      LLM 최종 응답 결과 VO
    • executeStream

      public reactor.core.publisher.Flux<String> executeStream(SampleQueryDTO query, String streamId)
      RAG → Keyword → SearchEngine → LLM 전체 파이프라인 실행 후 스트리밍 응답을 반환합니다.
      Parameters:
      query - 샘플 질의 DTO
      streamId - 스트림 중단에 사용할 세션 ID
      Returns:
      토큰 단위 스트리밍 응답
    • buildContext

      public reactor.core.publisher.Mono<PromptContextVO> buildContext(SampleQueryDTO query)
      RAG → Keyword → SearchEngine 파이프라인 결과만 반환합니다. (LLM 호출 없음)
      Parameters:
      query - 샘플 질의 DTO
      Returns:
      파이프라인 전체 컨텍스트 VO
    • executeAndSave

      public reactor.core.publisher.Mono<AiResponseResultVO> executeAndSave(SampleQueryDTO query, String outputPath, OutputType outputType, String fileName)
      전체 파이프라인 실행 후 결과를 지정 타입 파일로 저장합니다.
      Parameters:
      query - 샘플 질의 DTO
      outputPath - 저장 디렉터리 경로 (없으면 자동 생성)
      outputType - 출력 파일 타입
      fileName - 파일명 (확장자 제외, null 이면 자동 생성)
      Returns:
      파일 변환 결과 VO
    • executeAndSaveAll

      public reactor.core.publisher.Mono<List<AiResponseResultVO>> executeAndSaveAll(SampleQueryDTO query, String outputPath, String fileName)
      전체 파이프라인 실행 후 결과를 PDF / JSON / Word / PPT / Excel 5가지 타입으로 저장합니다.
      Parameters:
      query - 샘플 질의 DTO
      outputPath - 저장 디렉터리 경로 (없으면 자동 생성)
      fileName - 파일명 (확장자 제외, null 이면 자동 생성)
      Returns:
      타입별 파일 변환 결과 목록 (5개)