일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Test
- jwt
- redis
- 인덱스
- DDL
- Spring
- 열 속성
- hashcode
- lambda
- 테스트 코드
- java
- StringBuilder
- 바이너리 카운팅
- MSA
- static
- SQL
- 조합
- stream
- VUE
- 재정의
- KEVISS
- AOP
- DI
- select_type
- cache
- docker
- equals
- 필드 주입
- jpa
- 생성자 주입
- Today
- Total
백엔드 개발자 블로그
Spring AI 본문
1. Spring AI 알아보기
1.1 Spring AI가 무엇인가?
Spring AI는 생성형 AI 애플리케이션을 개발할 수 있도록 지원하는 Spring 프레임워크의 확장으로,
쉽게 말해 생성형 AI를 Spring Boot 애플리케이션에서 쉽게 구현할 수 있도록 추상화 및 구현체를 제공하는 역할을 한다.
Spring AI는 OpenAI(ChatGPT, DALL-E 등), Vertex AI(Gemini 등), Azure OpenAI 등 여러 AI 서비스 제공자와 통합하여 활용할 수 있다.
1.2 Spring AI 특징
(1) 단순하고 간편한 통합
Spring Boot 애플리케이션에 쉽게 AI 기능을 추가하고, AI 모델과의 상호작용을 단순화
(2) 일관된 인터페이스
다양한 AI 서비스 제공자(OpenAI, Vertex AI 등)를 하나의 방식으로 사용 가능
(3) 자동 설정
최소한의 설정으로 AI 기능을 바로 활용 가능
(4) 다양한 AI 기능 지원
텍스트 생성, 대화형 AI, 텍스트-이미지 변환, 임베딩 모델 등 다양한 AI 기능을 구현 가능
2. Spring AI를 사용하는 이유
1) AI를 자바에서도 유연하게 활용 가능
이전에는 주로 파이썬 언어를 사용하여 AI를 활용했다면 이제는 Spring Ai를 통해 Java 환경에서도 AI를 유연하게 활용 가능하다.
2) URL 호출 대비 코드의 간결성
직접 URL을 호출하여 AI 모델을 사용했을 때보다 Spring AI를 사용하는 것이 스프링의 추상화를 활용하여 간편하게 요청을 보낼 수 있고, 코드도 더 간결해서 개발 생산성을 높일 수 있다.
Gemini, ChatGpt 등 여러 AI 모델들을 통합하여 사용하기에 편리하다.
3) JSON 응답의 파싱 편의성
이전에는 JSON 응답에서 필요한 정보를 직접 추출하는 번거로움이 있었지만, Spring AI를 사용하면 정해진 결과값만 반환되어 JSON 응답을 파싱하는 과정이 생략되어 비교적 간편하다.(다만 vertexai모델은 Response에 특수 문자값이 섞여 있어 추가적인 파싱이 필요할 것 같음)
3. Spring AI 사용해보기
3-1. Spring AI dependency 설정
3-2. application.properties에 chatgpt 관련 설정값 작성
spring.ai.openai.api-key=키값
spring.ai.openai.chat.options.model=gpt버전
3-3. Controller 작성
package com.example.demo;
import java.util.HashMap;
import java.util.Map;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/api")
@RestController
public class ChatController {
private final OpenAiChatModel openAiChatModel;
public ChatController(OpenAiChatModel openAiChatModel) {
this.openAiChatModel = openAiChatModel;
}
@PostMapping("/chat")
public Map<String, String> chat(@RequestBody String message) {
Map<String, String> responses = new HashMap<>();
// OpenAI API 호출
String openAiResponse = openAiChatModel.call(message);
// OpenAI 응답 처리
responses.put("openai(chatGPT) 응답", openAiResponse);
return responses;
}
}
3-4. 질문
RequestBody raw
3-5. 응답
비용을 내야 사용할 수 있다. 무료 버전도 무료로 사용하지 못하니 주의하자. 비용을 안내면 아래와 같이 출력된다.
org.springframework.ai.retry.NonTransientAiException: 404 - {
"error": {
"message": "The model `gpt-4o` does not exist or you do not have access to it.",
"type": "invalid_request_error",
"param": null,
"code": "model_not_found"
}
}
유료서비스 결제 후 JSON 형태로 응답이 나온다.
ref
https://docs.spring.io/spring-ai/reference/