실무에 바로 적용하는 Spring AI: Spring 서비스에 챗봇·RAG·MCP 도입하기
practice-implementing-tool-service
✅ 1. Tool Service 구현
ToolService.java
package com.jscode.tool.service;
@Service
public class ToolService {
private final ChatClient chatClient;
public ToolService(ChatClient.Builder chatClientBuilder,
Advisor[] advisors,
@Value("${app.chat.default-system-prompt:}") String systemPrompt,
Tools tools) {
this.chatClient = chatClientBuilder
.defaultSystem(systemPrompt)
.defaultTools(tools)
.defaultOptions(ToolCallingChatOptions.builder()
.temperature(0.2).build().mutate())
.defaultAdvisors(advisors)
.build();
}
private ChatClient.ChatClientRequestSpec createRequest(String conversationId, Prompt prompt){
return chatClient.prompt(prompt)
.advisors(advisorSpec -> advisorSpec.param(ChatMemory.CONVERSATION_ID, conversationId));
}
public Flux<String> stream(String conversationId, Prompt prompt){
return createRequest(conversationId, prompt).stream().content();
}
public ChatResponse call(String conversationId, Prompt prompt){
return createRequest(conversationId, prompt).call().chatResponse();
}
}