✅ Spring AI란?
Spring AI는 Spring 개발자들을 위한 LLM 통합 도구로, AI와 연관된 도구들 쉽게 통합하도록 하는 프레임워크입니다.
Spring AI 공식문서에 의하면 "Spring AI는 AI 애플리케이션 개발의 기반이 되는 추상화를 제공하여 최소한의 코드 변경으로 구성 요소를 쉽게 교체할 수 있다"고 소개하며, 대표적으로 다음과 같은 기능을 제공한다고 합니다.
- AI 모델 통합 API 제공
- OpenAI, Anthropic, Microsoft, Amazon, Google, Ollama 등 주요 AI Model Provider를 지원
- Chat Completion, Embedding, Text to Image, Text to Speech 등 다양한 모델 타입을 하나의 일관된 API로 제공
- 모델 출력값을 바로 POJO로 매핑하는 Structured Output 기능 제공
- Vector Store 추상화 및 벡터 데이터베이스 지원
- Chroma, Elasticsearch, Neo4j, Qdrant, Redis 등 주요 벡터 DB 지원
- 텍스트를 청크로 나누고, 벡터화해서 저장하는 등의 작업들을 지원
- ChatClient API
- ChatClient, EmbeddingClient와 같은 컴포넌트를 사용해 모델 호출을 HTTP 요청과 같이 간단한 처리 지원
외에도 AI 호출 모니터링, 챗 메모리 관리, RAG 등을 제공하고 있습니다.
✅ Spring AI 핵심 모델
1️⃣ Prompt
`Prompt` 클래스는 Spring AI에서 모델에 보낼 메시지와 모델 파라미터 옵션(`ChatOptions`)을 감싸는 역할을 합니다.

즉 Prompt는 "어떤 메시지를 보낼지"와 "어떤 옵션으로 보낼지"를 담고 있습니다.
2️⃣ ChatOptions
`ChatOptions`는 LLM 호출 시 사용할 다양한 파라미터를 정의한 인터페이스로, 대부분의 LLM에서 공통으로 사용될 수 있는 옵션들만 포함하고 있습니다.


`maxTokens`, `temperature`, `stopSequences`와 같이 `ChatOptions`가 제공하는 속성은 벤더 간 자동 변환됩니다. 반면 `seed`, `logitBias`와 같은 정의되지 않은 추가 옵션에 대해서는 직접 매핑이 필요합니다.
3️⃣ ChatModel
`ChatModel`은 LLM과의 기본적인 상호작용을 담당하는 인터페이스로, Spring AI 동작의 기반이 되는 핵심 컴포넌트입니다.

`ChatModel` 인터페이스의 구현체는 `ChatResponse`라는 공통 응답 객체를 반환합니다.


`ChatResponse` 응답 객체 안에는 모델의 출력 메시지 외에도 사용된 프롬프트, 모델 파라미터, 응답 시간 등의 메타 정보도 포함되어 있어서, 후처리나 로깅, 디버깅 시에도 유용하게 활용할 수 있습니다.
✅ 내부 동작 순서 정리

- 입력으로 받은 `Prompt`를 벤더의 API 형식에 맞게 변환
- 변환된 메시지를 사용하여 벤더의 API를 호출
- 벤더로부터 받은 응답을 `ChatResponse` 형식으로 변환하여 반환
🔖 참고
https://blog.sionic.ai/spring-ai-series-1#1ebb25e3-2acc-80ea-bd33-c61be025f426
https://www.youtube.com/watch?v=up4TrRvLI-E&list=PLJkjrxxiBSFCgcsP_pzuntmqC3AlTMWFx&index=2
'Spring' 카테고리의 다른 글
| Spring AI 개발 일지 (3) - 챗봇 구현 (0) | 2025.12.05 |
|---|---|
| Spring AI 개발 일지 (2) - OpenAI 사용해 후기 요약 구현해보기 (0) | 2025.11.19 |
| PageableExecutionUtils.getPage로 페이징 성능 개선하기 (0) | 2025.10.24 |
| Spring 비동기로 이메일 전송하기 (0) | 2025.10.21 |
| Spring AbstractRequestLoggingFilter로 RequestBody 로깅 찍기 (0) | 2025.10.14 |