๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป๐Ÿ“/ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

[250801] Spring AI - ChatClient ๋นˆ ๋“ฑ๋ก ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

_silver 2025. 8. 1. 00:11
๋ชฉ์ 

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/