spring AI가 지원하는 곳이 많이 지고 있고 AI 시대에 맞게 해외에서는 최대 관심사가 Spring AI 이지 않을 까 싶습니다. (개인적인 생각..)
https://spring.io/projects/spring-ai
Spring AI 덕분에 Chat GPT 같은 Open AI 연동이 매우 간단해 진 것 같아서 좋습니다. ㅎㅎ
위의 글에 발급 방법이 상세히 나와있습니다. 저도 위에 글을 참고하여 발급 받았습니다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
spring.ai.openai.api-key=${OPENAI_API_KEY}
수도 질문 용
package com.example.springai.model;
public record GetCapitalRequest(String stateOrCountry) {
}
응답 용
package com.example.springai.model;
public record Answer(String answer) {
}
{stateOrCountry} 의 수도의 이름만 말해줘
인터페이스
package com.example.springai.service;
import com.example.springai.model.GetCapitalRequest;
public interface OpenAIService {
Answer getCapital(GetCapitalRequest getCapitalRequest);
}
구현
@Service
public class OpenAIServiceImpl implements OpenAIService{
private final ChatClient chatClient;
public OpenAIServiceImpl(ChatClient chatClient) {
this.chatClient = chatClient;
}
@Value("classpath:templates/get-capital-prompt.st")
private Resource getCapitalPrompt;
@Override
public Answer getCapital(GetCapitalRequest getCapitalRequest) {
PromptTemplate promptTemplate = new PromptTemplate(getCapitalPrompt);
Prompt prompt = promptTemplate.create(Map.of("stateOrCountry", getCapitalRequest.stateOrCountry()));
ChatResponse response = chatClient.call(prompt);
return new Answer(response.getResult().getOutput().getContent());
}
}
@RestController
public class QuestionController {
private final OpenAIService openAIService;
public QuestionController(OpenAIService openAIService) {
this.openAIService = openAIService;
}
/**
* 나라의 수도 질문
*/
@PostMapping("/capital")
public Answer getCapital(@RequestBody GetCapitalRequest getCapitalRequest) {
return this.openAIService.getCapital(getCapitalRequest);
}
}
재밌다 ㅎ