[250801] Spring AI - ChatClient ๋น ๋ฑ๋ก ์ค๋ฅ ํด๊ฒฐ
๋ชฉ์
Spring AI์ ChatClient๋ OpenAI์์ ๋ํํ API ์์ฒญ์ ํธ๋ฆฌํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ ํต์ฌ ์ปดํฌ๋ํธ์ด๋ค.
ํ์ง๋ง Spring AI๊ฐ ์ ๊ณตํ๋ ์๋ ๊ตฌ์ฑ(AutoConfiguration)์ด ํญ์ ์ ์ ์๋์ ๋ณด์ฅํ์ง ์๋ ๊ฒ ๊ฐ๋ค.
๋ฐ๋ผ์ ๋์ ๋ฐ๋ผ์๋ ๋ช ์์ ์ผ๋ก ChatClient ๋น์ ๊ตฌ์ฑํ๊ณ ๋ฑ๋กํ๋ ๊ฒ์ด ๋ ์์ ์ ์ด๋ค.
๋ฌธ์ ์ํฉ
- AiService ํด๋์ค์์ ChatClient๋ฅผ ์์ฑ์ ์ฃผ์ ํ๋ ค ํ ๋ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์

์์ธ ๋ถ์
Spring AI์ ChatClient๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ ๊ตฌ์ฑ(@AutoConfiguration)์ ํตํด ๋ฑ๋ก๋๋ค.
ํ์ง๋ง ์๋ ๊ตฌ์ฑ ๊ณผ์ ์์ ํ์ํ ์กฐ๊ฑด๋ค์ด ์ถฉ์กฑ๋์ง ์์ ๊ฒฝ์ฐ, Spring์ด ์ด๋ฅผ ๋น์ผ๋ก ๋ฑ๋กํ์ง ๋ชปํ ์ ์๋ค๊ณ ํ๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
โ๏ธ ๋ช ์์ ๋น ๋ฑ๋ก!
๋ค์๊ณผ ๊ฐ์ด ChatClient.Builder๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ๋น์ผ๋ก ๋ฑ๋กํ์ฌ ํด๊ฒฐํ ์ ์๋ค.
@Configuration
public class AiConfig {
@Bean
/**
* chatClient():
* chatClientSpring AI์์ ์๋์ผ๋ก ์ ๊ณตํ๋ ๋น์ผ๋ก,
* ChatClient ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ํ์ํ ๊ตฌ์ฑ ์ ๋ณด๋ฅผ ๋ด๋ถ์ ์ผ๋ก ๋ด๊ณ ์์.
* (์: model, api-key ๋ฑ)
*/
ChatClient chatClient(ChatClient.Builder builder) {
return builder.build();
}
}
๊ฒฐ๊ณผ
์์ ๊ฐ์ด ๋ช ์์ ์ผ๋ก ๋น ๋ฑ๋ก์ ์ํํ๋ฉด Spring์์ ์ ์์ ์ผ๋ก ChatClient ๋น์ ์ฃผ์ ํ๊ณ , AiService ์์ฑ์ ์ฃผ์ ์ค๋ฅ๊ฐ ํด๊ฒฐ๋์๋ค.
์ฐธ๊ณ ์๋ฃ
https://mingdodev.github.io/blog/dev/2025-03-22-OpenAI-structred-outputs-with-Spring-AI/