์ตœ์‹  Spring AI ๊ธฐ์ดˆ๋ถ€ํ„ฐ MCP๊นŒ์ง€

Spring Boot์™€ React๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž, ๊ทธ๋ฆฌ๊ณ  ๊ธฐ์—… ํ™˜๊ฒฝ์—์„œ AI ์‹œ์Šคํ…œ ๋„์ž…์„ ๊ณ ๋ฏผํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋ถ„๋“ค๊ป˜ Spring AI๋ฅผ ์ ๊ทน ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ณธ ๊ณผ์ •์—์„œ๋Š” ๋‹จ์ˆœํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์†Œ๊ฐœ์— ๊ทธ์น˜์ง€ ์•Š๊ณ , Spring AI์˜ ํ•ต์‹ฌ ๊ฐœ๋…๊ณผ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•œ ๋’ค ๋‹ค์–‘ํ•œ ์‹ค์Šต ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณด๋ฉฐ ์‹ค๋ฌด ์ ์šฉ ์—ญ๋Ÿ‰์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค. Spring AI 1.1.x ๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•˜๋ฉฐ, ํ–ฅํ›„ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ์—๋„ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์†์ ์ธ ๊ธฐ์ˆ  ์ง€์›๊ณผ ํ™•์žฅ ๋ฐฉํ–ฅ์„ ํ•จ๊ป˜ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ MCP(Model Context Protocol)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋„๋ฉ”์ธ ๊ฐ„ ์ปจํ…์ŠคํŠธ ํ†ตํ•ฉ ๋ฐ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ์˜ AI ์—ฐ๊ณ„์™€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ™˜๊ฒฝ์— ์ ํ•ฉํ•œ AI ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„๋ฅผ ์‹คํ˜„ํ•จ์œผ๋กœ์จ, Spring AI ๊ธฐ์ˆ ์˜ ํ™œ์šฉ ๊ฐ€์น˜๋ฅผ ํ•œ ๋‹จ๊ณ„ ๋” ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์—… ํ™˜๊ฒฝ์—์„œ ์‹ค์ œ๋กœ ๋„์ž… ๊ฐ€๋Šฅํ•œ AI ์‹œ์Šคํ…œ ๊ตฌ์ถ•์„ ๋ชฉํ‘œ๋กœ, ์ด๋ก ๊ณผ ์‹ค์Šต์„ ๊ท ํ˜• ์žˆ๊ฒŒ ๋‹ค๋ฃจ๋Š” ์‹ค์ „ ์ค‘์‹ฌ์˜ ๊ฐ€์ด๋“œ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

(4.9) ์ˆ˜๊ฐ•ํ‰ 10๊ฐœ

์ˆ˜๊ฐ•์ƒ 93๋ช…

๋‚œ์ด๋„ ์ดˆ๊ธ‰

์ˆ˜๊ฐ•๊ธฐํ•œ ๋ฌด์ œํ•œ

์‹ค์Šต ์ค‘์‹ฌ
์‹ค์Šต ์ค‘์‹ฌ
AI ํ™œ์šฉ๋ฒ•
AI ํ™œ์šฉ๋ฒ•
react
react
springai
springai
์‹ค์Šต ์ค‘์‹ฌ
์‹ค์Šต ์ค‘์‹ฌ
AI ํ™œ์šฉ๋ฒ•
AI ํ™œ์šฉ๋ฒ•
react
react
springai
springai

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

4.9

5.0

ํฌ์„ฑ

31% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

์ด์ œ ๋ง‰ Spring AI๋ฅผ ์ ‘ํ•œ ์ž…๋ฌธ์ž๋Š” ๋ฌผ๋ก  ๋ณต์Šต์ด ํ•„์š”ํ•œ ๋ถ„๋“ค์—๊ฒŒ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ € ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ œ๊ณต๋œ spring ai ํ•™์Šต์„ ์œ„ํ•œ ํ”„๋กฌํ”„ํŠธ ๊ตฌ์„ฑ๋ถ€ํ„ฐ Thymeleaf์™€ React, ๋ฐฑ์—”๋“œ๊นŒ์ง€ ํฌํ•จ๋œ ์ƒ์„ธํ•œ ํ•™์Šต ์ž๋ฃŒ ๋•๋ถ„์— ์ œ๊ณต๋œ ์ฝ”๋“œ๋ฅผ ๋ฐ”๋กœ ์‹คํ–‰ํ•ด๋ณด๋ฉฐ ํ•ต์‹ฌ ๋กœ์ง์„ ๋น ๋ฅด๊ฒŒ ์ฒด๋“ํ•  ์ˆ˜ ์žˆ์–ด์„œ ํŽธํ•˜๊ฒŒ ํ•™์Šตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

5.0

Victor

74% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

์ •๋ฆฌ๊ฐ€ ์•„์ฃผ ์ž˜ ๋˜์–ด์žˆ๊ณ , ๋‹จ์ˆœ ๋”ฐ๋ผ์“ฐ๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ผ์„œ ๋„ˆ๋ฌด ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ์˜ ์ฐธ์—ฌ๋ฅผ ์œ„ํ•ด ์ž๋ฃŒ์˜ ๋ณต๋ถ™ ํ˜•ํƒœ๋กœ ํ•ด๋†“์œผ์‹  ๊ฒƒ๋„ ๊ตฌ์กฐํŒŒ์•…์— ์€๊ทผ ๋„์›€์ด ๋˜์—ˆ๋„ค์š”. ์ปค๋ฆฌํ˜๋Ÿผ์ด ๊ตฌ์กฐ์ ์œผ๋กœ ์ •๋ฆฌ๊ฐ€ ์•„์ฃผ ์ž˜ ๋˜์–ด ์ „๋ฐ˜์ ์ธ SpringAI์˜ ํ•ต์‹ฌ๋‚ด์šฉ์„ ์ž˜ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ํ”„๋กฌํ”„ํŠธ์— ์ด๊ฒƒ์ €๊ฒƒ ์‹œํ‚ค๋Š” ๋‹ค๋ฅธ ๊ฐ•์˜๋“ค๋ณด๋‹ค ํ›จ์”ฌ ํ€„๋ฆฌํ‹ฐ ์žˆ๊ณ  ๊น”๋”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์›Œ๊ฐ€๋Š” ๋А๋‚Œ์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

5.0

์ด์€๋ฒ”

100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

์Šคํ”„๋ง ๋ถ€ํŠธ ์ž…๋ฌธ์šฉ์œผ๋กœ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์ดˆ ์„ค๋ช…๋„ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ , ๋ฌด์—‡๋ณด๋‹ค ์š”์ฆ˜ ํ•„์ˆ˜์ธ AI ํ™œ์šฉ๋ฒ•๊นŒ์ง€ ๋ค์œผ๋กœ ์–ป์–ด๊ฐ€๋Š” ๊ธฐ๋ถ„์ด๋ผ ๋งŒ์กฑ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

์ˆ˜๊ฐ• ํ›„ ์ด๋Ÿฐ๊ฑธ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”

  • Spring Boot๋ฅผ ํ™œ์šฉํ•œ ๋‹ค์–‘ํ•œ AI ๋ชจ๋ธ ์—ฐ๋™ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ

  • Spring AI์—์„œ ์ œ๊ณตํ•˜๋Š” ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‹ค์Šต ์ค‘์‹ฌ ํ™œ์šฉ

  • MCP ์‹œ์Šคํ…œ ๊ตฌ์ถ•์„ ํ†ตํ•œ ๊ธฐ์—… ๋‚ด AI ์„œ๋น„์Šค ๊ฐœ๋ฐœ ๋ฐ ์ ์šฉ

  • Spring Boot MVC ๊ธฐ๋ฐ˜ ๊ต์œก ์ง„ํ–‰, React ์—ฐ๋™๊นŒ์ง€ ํ™•์žฅ

์ตœ์‹  Spring AI ๊ธฐ์ดˆ๋ถ€ํ„ฐ MCP๊นŒ์ง€

๋ณธ ๊ฐ•์˜๋Š” Spring AI๋ฅผ ํ™œ์šฉํ•œ ๊ธฐ์—…ํ˜• AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ณผ์ •์œผ๋กœ,
๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ(LLM), ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง, RAG(Retrieval-Augmented Generation), Tool/Function Calling ๋“ฑ ์‹ค๋ฌด ์ค‘์‹ฌ์˜ AI ์„œ๋น„์Šค ๊ตฌํ˜„ ๊ธฐ์ˆ ์„ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ณธ ๊ณผ์ •์€ Spring Boot ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ์ฃผ์š” ๋Œ€์ƒ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ,
Spring ์ƒํƒœ๊ณ„์˜ ๊ฐ•์ ์ธ DI, Bean ๊ด€๋ฆฌ, ๋ชจ๋“ˆํ™” ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ
AI ๊ธฐ๋Šฅ์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

๊ฐ•์˜์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

  • Spring AI ์•„ํ‚คํ…์ฒ˜ ๋ฐ ํ•ต์‹ฌ ๊ฐœ๋… ์ดํ•ด

  • ChatClient, Prompt, Advisor, Memory ๊ตฌ์กฐ ์‹ค์Šต

  • LLM ์—ฐ๋™(OpenAI ๋“ฑ) ๋ฐ ํ”„๋กฌํ”„ํŠธ ์„ค๊ณ„ ์ „๋žต

  • Multimodality API โ€“ Images & Vision, Audio and Speech

  • Vector Store๋ฅผ ํ™œ์šฉํ•œ RAG ์‹œ์Šคํ…œ ๊ตฌํ˜„

  • Tool / Function Calling ๋ฐ MCP(Model Context Protocol) ํ™œ์šฉ

  • Spring Boot ๊ธฐ๋ฐ˜ AI ์„œ๋น„์Šค ์„ค๊ณ„ ๋ฐ ํ…Œ์ŠคํŠธ(Mockito ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ํฌํ•จ)

  • ๊ธฐ์—… ํ™˜๊ฒฝ์„ ๊ณ ๋ คํ•œ ํ™•์žฅ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜ ์ „๋žต

๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•œ ์ดํ›„์—๋Š”
๋‹จ์ˆœํ•œ AI API ํ˜ธ์ถœ ์ˆ˜์ค€์„ ๋„˜์–ด,
Spring ๊ธฐ๋ฐ˜์˜ ์•ˆ์ •์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ AI ์‹œ์Šคํ…œ์„ ์ง์ ‘ ์„ค๊ณ„ยท๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์—ญ๋Ÿ‰์„ ๊ฐ–์ถ”๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ๊ธฐ์—… ๋‚ด AI ๋„์ž…, ์‚ฌ๋‚ด ์ง€์‹ ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ, AI ์ฑ—๋ด‡, ์—…๋ฌด ์ž๋™ํ™” ์„œ๋น„์Šค ๋“ฑ
์‹ค์ œ ํ˜„์—…์— ๋ฐ”๋กœ ์ ์šฉ ๊ฐ€๋Šฅํ•œ AI ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋Šฅ๋ ฅ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก๋ณธ ๊ณผ์ •์˜ ํ•ต์‹ฌ ๋‚ด์šฉ

  • Spring Boot๋ฅผ ํ™œ์šฉํ•œ ๋‹ค์–‘ํ•œ AI ๋ชจ๋ธ ์—ฐ๋™ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ

  • Spring AI์—์„œ ์ œ๊ณตํ•˜๋Š” ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‹ค์Šต ์ค‘์‹ฌ ํ™œ์šฉ

  • MCP ์‹œ์Šคํ…œ ๊ตฌ์ถ•์„ ํ†ตํ•œ ๊ธฐ์—… ๋‚ด AI ์„œ๋น„์Šค ๊ฐœ๋ฐœ ๋ฐ ์ ์šฉ

  • Spring Boot MVC ๊ธฐ๋ฐ˜ ๊ต์œก ์ง„ํ–‰, React ์—ฐ๋™ ํ™•์žฅ

๐Ÿ’ก๋ณธ ๊ณผ์ •์˜ ํŠน์ง•

  • ํ–ฅํ›„ Spring AI ๋ฒ„์ „์ด ์—…๊ทธ๋ ˆ์ด๋“œ ๋˜๋ฉด ๊ณผ์ •๋„ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฉ๋‹ˆ๋‹ค.

  • ์ˆ˜์—… ์ค‘ Frontend๋Š” Tymeleaf๋ฅผ ์ด์šฉํ•˜๋ฉฐ React๋กœ๋„ ๊ตฌํ˜„ ํ•ด ๋ด…๋‹ˆ๋‹ค.

  • MCP ์™€ tool์„ ๋™์‹œ์— ์‚ฌ์šฉํ•˜์—ฌ Spring AI๋ฅผ ํ™•์žฅ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’กํ•™์Šต ๋‚ด์šฉ.

1โƒฃ SpringBoot์—์„œ Spring AI ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•
2โƒฃ Chapter 1. Chat Completion
3โƒฃ Chapter 2. Prompt Template & Structured Output Converter
4โƒฃ Chapter 3. Advisor API
5โƒฃ Chapter 4. Multimodality API โ€“ Images & Vision
6โƒฃ Chapter 5. Multimodality API โ€“ Audio and Speech
7โƒฃ Chapter 6. Tool Calling
8โƒฃ Chapter 7. Embedding Model
9โƒฃ Chapter 8. RAG (Retrieval-Augmented Generation)
๐Ÿ”Ÿ Chapter 9. MCP (Model Context Protocol)
๐Ÿ…ฐ๏ธ Chapter 10. React

์ด๋Ÿฐ ๋‚ด์šฉ์„ ๋ฐฐ์›Œ์š”

1โƒฃ SpringBoot์—์„œ Spring AI ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•

SpringBoot ๊ฐœ๋ฐœ Setting ๋ฐ Spring AI ๊ณผ์ •์„ ์ง„ํ–‰ ํ•˜๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ Setting

๊ต์œก ์ง„ํ–‰์„ ์œ„ํ•œ Project ์ƒ์„ฑ ๋ฐ ๊ต์•ˆ Setting

์‹ค์Šต ํ”„๋กœ์ ํŠธ์— ๊ต์•ˆ์ด ํ•จ๊ป˜ ์ฒจ๋ถ€๋˜์–ด ์‹ค์Šต ์‹œ ๊ต์•ˆ ๋‚ด์šฉ์„ ํ•ญ์ƒ ์ฐธ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1. ๊ฐœ๋ฐœํ™˜๊ฒฝ ๋ฐ ์ˆ˜์—…๋‚ด์šฉ ์„ค๋ช…

2. ์ˆ˜์—… ํ™˜๊ฒฝ ๋ฐ ๊ต์•ˆ Setting

3. Open AI Key ๋ฐœ๊ธ‰

4. Gemini Key ๋ฐœ๊ธ‰

5. Spring AI Setting

6. PostgreSQL Setting

7. What is Spring AI

2โƒฃ Chapter 1. Chat Completion

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— AI ๊ธฐ๋ฐ˜์˜ ๋Œ€ํ™” ์™„์„ฑ ๊ธฐ๋Šฅ์„ ํ†ตํ•ฉ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. GPT(Generative Pre-trained Transformer)์™€ ๊ฐ™์€ ์‚ฌ์ „ ํ•™์Šต ์–ธ์–ด ๋ชจ๋ธ์„ ์ด์šฉํ•ด ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ํ•ด์„ํ•˜๊ณ  ์ž์—ฐ์–ด ์‘๋‹ต์„ ์ƒ์„ฑ ํ•œ ํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ด๋ฅผ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์‘๋‹ต ์ฒ˜๋ฆฌ๋Š” Non-Streaming ๋ฐฉ์‹๊ณผ Streaming ๋ฐฉ์‹์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ฐœ๋ฐœ ํ•ฉ๋‹ˆ๋‹ค.

1. Chat (Zero-Shot Prompting): Prompting)Zero-Shot Prompting์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ „๋‹ฌํ•œ Prompt๋งŒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ LLM์ด ์‘๋‹ต์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹

2. Chat Stream: Reactive Streams(Project Reactor) ๊ธฐ๋ฐ˜์œผ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐํ•˜๋Š” ๋ฐฉ์‹

3. Chat (Few-Shot Prompting): ๋ชจ๋ธ์ด ํŠน์ • ์ž‘์—…์„ ๋” ์ •ํ™•ํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์˜ˆ์‹œ(Input/Output Pair)๋ฅผ Prompt์— ํฌํ•จํ•˜๋Š” ๋ฐฉ์‹

4. Chat (Chain-of-Thought Prompting): LLM์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์—์„œ ์ค‘๊ฐ„ ์ถ”๋ก  ๊ณผ์ •์„ ์Šค์Šค๋กœ ๋‹จ๊ณ„์ ์œผ๋กœ ์ „๊ฐœํ•˜๋„๋ก ์œ ๋„ํ•˜๋Š” Prompting ๋ฐฉ์‹

5. Chat Memory: LLM๊ณผ์˜ ๋Œ€ํ™” ๋งฅ๋ฝ์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ณ , ํ›„์† ์š”์ฒญ ์‹œ ์ด๋ฅผ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์™€ ์ง€์†์ ์ด๊ณ  ์ž์—ฐ์Šค๋Ÿฌ์šด ์ฝ˜ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋Œ€ํ™”๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ๋Šฅ

3โƒฃ Chapter 2. Prompt Template & Structured Output Converter

Prompt Template & Structured Output Converter๋ฅผ ์ด์šฉํ•˜์—ฌ AI ๋ชจ๋ธ์ด ํŠน์ • ๋ชฉ์ ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ์œ ๋„ ํ•ฉ๋‹ˆ๋‹ค. Prompt์˜ ๊ตฌ์„ฑ ๋ฐฉ์‹๊ณผ ์„ค๊ณ„ ํ’ˆ์งˆ์€ ๋ชจ๋ธ์˜ ์‘๋‹ต ์ •ํ™•๋„, ์ผ๊ด€์„ฑ ๋ฐ ํ™œ์šฉ๋„์— ํฐ ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค. ๋ณธ Chapter ์—์„œ๋Š” ๋‹ค์–‘ํ•œ Prompt Template์˜ ํ™œ์šฉ์„ ๊ณต๋ถ€ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1. Prompt Template: ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ž์—ฐ์–ด ๋ฌธ์žฅ, ๊ฐ„๋‹จํ•œ ๋ช…๋ น, ํŒŒ๋ผ๋ฏธํ„ฐ ๋“ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์กฐํ™”๋œ ํ”„๋กฌํ”„ํŠธ(Prompt String) ๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ

2. ListOutputConverter: Java์˜ List<String> ๋˜๋Š” ๊ธฐํƒ€ List ํƒ€์ž…์œผ๋กœ ํŒŒ์‹ฑํ•˜๋Š” Output Converter

3. MapOutputConverter: Java์˜ Map<String, Object> ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” Converter

4. BeanOutputConverter: ์ง€์ •๋œ Java Bean ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” Converter

5. ParameterizedType: List<UserInfo>, Map<String, List<Item>> ๊ฐ™์€ ๋ณต์žกํ•œ ํƒ€์ž…์„ ํŒŒ์‹ฑ

4โƒฃChapter 3. Advisor API

Advisors API๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€์—์„œ AI ๋ชจ๋ธ๊ณผ์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ฐ€๋กœ์ฑ„๊ณ  ๋ณ€ํ™˜ํ•˜๋ฉฐ ๋ณด๊ฐ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ณตํ†ต์ ์ธ ์ƒ์„ฑํ˜• AI ์ฒ˜๋ฆฌ ๋กœ์ง์„ ์บก์Аํ™”ํ•˜๊ณ , ์ž…ยท์ถœ๋ ฅ ํ๋ฆ„์„ ์ •๊ตํ•˜๊ฒŒ ์ œ์–ดํ•˜๋ฉฐ, ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ AI ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. Advisor: ๋‹ค์–‘ํ•œ Advisor๋ฅผ ์ด์šฉํ•˜์—ฌ LLM๊ณผ ์†Œํ†ต

2. Advisor: Stream: ๋‹ค์–‘ํ•œ Advisor๋ฅผ Reactive Streams์„ ์ด์šฉํ•˜์—ฌ LLM๊ณผ ์†Œํ†ต

3. Recursive Advisors: ํŠน์ • ์กฐ๊ฑด์ด ์ถฉ์กฑ๋  ๋•Œ๊นŒ์ง€ LLM์„ ์žฌ๊ท€์  ๋˜๋Š” ๋ฐ˜๋ณต์ ์œผ๋กœ ํ˜ธ์ถœ

5โƒฃ Chapter 4. Multimodality API โ€“ Images & Vision

๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ(MLLM: Multimodal Large Language Model)์„ ์ด์šฉํ•˜์—ฌ ํ…์ŠคํŠธ๋ฟ ์•„๋‹ˆ๋ผ ์ด๋ฏธ์ง€, ์˜ค๋””์˜ค, ๋น„๋””์˜ค ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ๋ฐ›์•„๋“ค์ด๊ณ , ์ด๋ฅผ ์ข…ํ•ฉ์ ์œผ๋กœ ๋ถ„์„ํ•˜์—ฌ ๊ณ ํ’ˆ์งˆ์˜ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์‘๋‹ต์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ Chapter์—์„œ๋Š” ์ด๋ฏธ์ง€ ๋ถ„์„, ์ด๋ฏธ์ง€ ์ƒ์„ฑ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1. Generate Image for URL: ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ Prompt๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฏธ์ง€ URL ์ƒ์„ฑ

2. Generate Image: ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ Prompt๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ƒ์„ฑ

3. Image Analysis: ์ด๋ฏธ์ง€์˜ ๋‚ด์šฉ, ์ƒํ™ฉ, ์š”์†Œ ๋ถ„์„ ๋“ฑ ๋‹ค์–‘ํ•œ ๋น„์ „ ๊ธฐ๋ฐ˜ ์ธ์‹

4. Video Analysis: ์˜์ƒ์˜ ํŠน์ • ํ”„๋ ˆ์ž„์— ๋Œ€ํ•œ ๋ถ„์„

6โƒฃ Chapter 5. Multimodality API โ€“ Audio and Speech

๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ(MLLM: Multimodal Large Language Model)์„ ์ด์šฉํ•˜์—ฌ ํ…์ŠคํŠธ๋ฟ ์•„๋‹ˆ๋ผ ์ด๋ฏธ์ง€, ์˜ค๋””์˜ค, ๋น„๋””์˜ค ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ๋ฐ›์•„๋“ค์ด๊ณ , ์ด๋ฅผ ์ข…ํ•ฉ์ ์œผ๋กœ ๋ถ„์„ํ•˜์—ฌ ๊ณ ํ’ˆ์งˆ์˜ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์‘๋‹ต์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ Chapter์—์„œ๋Š” ์˜ค๋””์˜ค ๋ถ„์„, ์˜ค๋””์˜ค ์ƒ์„ฑ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1. Text to Speech: ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ ์Œ์„ฑ ๋ฐ์ดํ„ฐ(Audio) ๋กœ ๋ณ€ํ™˜

2. Text to Speech: Chat: ์‚ฌ์šฉ์ž ์ž…๋ ฅ ํ…์ŠคํŠธ๋ฅผ LLM์— ์ „๋‹ฌํ•˜์—ฌ ์Œ์„ฑ ๋‹ต๋ณ€ ์ƒ์„ฑ

3. Text to Speech: Stream: ์‚ฌ์šฉ์ž ์ž…๋ ฅ ํ…์ŠคํŠธ๋ฅผ LLM์— ์ „๋‹ฌํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ ๋‹ต๋ณ€ ์ƒ์„ฑ

4. Speech to Text: ์‚ฌ์šฉ์ž๊ฐ€ ๋งํ•œ ์Œ์„ฑ ์ž…๋ ฅ(Audio)์„ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜

5. Speech to Text: Chat: ์‚ฌ์šฉ์ž๊ฐ€ ๋งํ•œ ์Œ์„ฑ ์ž…๋ ฅ(Audio)์„ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ๋‹ต๋ณ€ ์ƒ์„ฑ

6. Speech to Text: Chat Voice: ์‚ฌ์šฉ์ž๊ฐ€ ๋งํ•œ ์Œ์„ฑ ์ž…๋ ฅ(Audio)์„ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ์Œ์„ฑ ๋‹ต๋ณ€ ์ƒ์„ฑ

7โƒฃ Chapter 6. Tool Calling

๋„๊ตฌ ํ˜ธ์ถœ(Tool Calling), ๋˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ(Function Calling)์€ AI ๋ชจ๋ธ์ด ์™ธ๋ถ€ API๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด ๋„๊ตฌ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ํ™•์žฅ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ชจ๋ธ์€ ๋‹จ์ˆœ ํ…์ŠคํŠธ ์‘๋‹ต์„ ๋„˜์–ด์„œ ์‹ค์ œ ๊ธฐ๋Šฅ ์ˆ˜ํ–‰, ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰, ์‹œ์Šคํ…œ ์ œ์–ด ๋“ฑ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. Date Time

DateTimeTools: ํ˜„์žฌ ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

CurrentWeatherTools: ํ˜„์žฌ ๋‚ ์”จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒฝ๋„์™€ ์œ„๋„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

ForecastWeatherTools: ๋‚ ์”จ ์˜ˆ๋ณด๋ฅผ ์ •๋ณด๋ฅผ ๊ฒฝ๋„์™€ ์œ„๋„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

2. Customer Inquiry: ๊ณ ๊ฐ ์ •๋ณด๋ฅผ Tool์„ ์ด์šฉํ•ด์„œ LLM๊ณผ ์—ฐ๋™ ํ•˜์—ฌ ์กฐํšŒ ํ•ฉ๋‹ˆ๋‹ค.

CustomerTools: ๊ณ ๊ฐ์ •๋ณด๋ฅผ Customer ๊ฐ์ฒด ํƒ€์ž…์„ ๊ธฐ๋ฐ˜์œผ๋กœ JSON ํ˜•์‹์œผ๋กœ ๋ฆฌํ„ด ํ•ฉ๋‹ˆ๋‹ค.

CustomerStringTools: ๊ณ ๊ฐ์ •๋ณด๋ฅผ Customer ๊ฐ์ฒด ํƒ€์ž…์„ ๊ธฐ๋ฐ˜์œผ๋กœ String ํ˜•์‹์œผ๋กœ ๋ฆฌํ„ด ํ•ฉ๋‹ˆ๋‹ค.

CustomerToolCallResultConverter: Tool์—์„œ ๋งŒ๋“ค์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ JSON ๋˜๋Š” String์œผ๋กœ ๋ณ€ํ™˜ํ•ด ์ค๋‹ˆ๋‹ค.

3. Recommendation: ToolContext๋ฅผ ์ด์šฉํ•˜์—ฌ ํŠน์ • ID๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ณ ๊ฐ์˜ ๊ตฌ๋งค ๋ชฉ๋ก์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ œํ’ˆ์— ๋Œ€ํ•œ ์ถ”์ฒœ ์‹œ์Šคํ…œ ์ž…๋‹ˆ๋‹ค.

4. Access System: ์นด๋ฉ”๋ผ๋ฅผ ํ†ตํ•ด ์‚ฌ์›์ฆ์„ ์ธ์‹ ํ•˜์—ฌ ์‚ฌ์›์ฆ์— ์žˆ๋Š” ID Number๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถœ์ž…์„ ํ—ˆ๊ฐ€ ํ•˜๋Š” ์‹œ์Šคํ…œ ์ž…๋‹ˆ๋‹ค.

8โƒฃ Chapter 7. Embedding Model

์ž„๋ฒ ๋”ฉ(Embedding)์€ ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ๋น„๋””์˜ค ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธ ๊ธฐ๋ฐ˜ ๋ฒกํ„ฐ ํ˜•ํƒœ(๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž ๋ฐฐ์—ด)๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ž…๋ ฅ ๊ฐ„ ๊ด€๊ณ„์™€ ์˜๋ฏธ์  ์œ ์‚ฌ์„ฑ์„ ์ˆ˜์น˜์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ด ๋ฒกํ„ฐ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฒกํ„ฐ ์ฐจ์›(Vector Dimension)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Spring AI๋Š” ์ž„๋ฒ ๋”ฉ์„ ํ™œ์šฉํ•œ RAG(Retrieval Augmented Generation) ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ง์ ‘ ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜, Spring์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ RAG ํ”Œ๋กœ์šฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ ์ˆ˜ ์ง€์‹์œผ๋กœ ๊ณต๋ถ€ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1. Text Embedding: ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ Embedding ๋ชจ๋ธ์„ ํ†ตํ•ด ๊ณ ์ฐจ์› ๋ฒกํ„ฐ(Vector Representation) ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ๋ณ€ํ™˜๋œ ๋ฒกํ„ฐ๋ฅผ Vector Store์— ์ €์žฅํ•œ ๋’ค, ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ์„ Embeddingํ•˜์—ฌ ์œ ์‚ฌ๋„ ๊ฒ€์ƒ‰(Semantic Search)์œผ๋กœ ๊ด€๋ จ ๋ฌธ์„œ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

2. Hotel Data Embedding: ํ˜ธํ…” ์ด๋ฆ„, ์œ„์น˜, ํŽธ์˜์‹œ์„ค, ๊ฐ€๊ฒฉ, ๋ฆฌ๋ทฐ ๋“ฑ ํ˜ธํ…” ๊ด€๋ จ ๋ฉ€ํ‹ฐํ•„๋“œ ๋ฐ์ดํ„ฐ๋ฅผ Embeddingํ•˜์—ฌ Vector Store์— ์ €์žฅํ•œ ๋’ค, ์‚ฌ์šฉ์ž์˜ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

3. Chat Memory PGvector: LLM์˜ ๋Œ€ํ™” ๋‚ด์—ญ์„ ์‹ค์‹œ๊ฐ„ Embeddingํ•˜์—ฌ PGVector(PostgreSQL Vector Extension)์— ์ €์žฅ

4. Chat Memory JDBC: LLM์˜ ๋Œ€ํ™” ํ๋ฆ„์„ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(JDBC) ๊ธฐ๋ฐ˜์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

9โƒฃ Chapter 8. RAG (Retrieval-Augmented Generation)

RAG๋Š” ๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ(LLM)์ด ์žฅ๋ฌธ ์ฒ˜๋ฆฌ, ์‚ฌ์‹ค์  ์ •ํ™•์„ฑ, ์™ธ๋ถ€ ์ง€์‹ ์ธ์‹ ๋“ฑ์—์„œ ๊ฐ–๋Š” ํ•œ๊ณ„๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ๊ธฐ์ˆ ๋กœ์„œ ๊ฒ€์ƒ‰๋œ ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ํ”„๋กฌํ”„ํŠธ์— ๊ฒฐํ•ฉํ•˜์—ฌ ๋ณด๋‹ค ์ •ํ™•ํ•˜๊ณ  ์‹ ๋ขฐ๋„ ๋†’์€ ์‘๋‹ต์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

1. ETL Pipeline: ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋กœ๋“œํ•œ ํŒŒ์ผ(TXT, PDF, DOC ๋“ฑ)์„ ์ฒ˜๋ฆฌํ•˜์—ฌ Vector Store์— ์ €์žฅ/์‚ญ์ œ

2. RAG Chat: Vector Store์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜์œผ๋กœ LLM๊ณผ ๋Œ€ํ™”

3. RAG Chat: template: RAG Chat ๊ธฐ๋Šฅ์— PromptTemplate์„ ์ ์šฉ

4. Retrieval Augmentation Advisor: Vector Store์— ์ •ํ™•ํ•œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ์—†์–ด๋„ LLM์ด ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€ํ™”๋ฅผ ์ด์–ด๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ์ง€์›

5. Compression Query Transformer: ๋Œ€ํ™” ๊ธฐ๋ก๊ณผ ํ›„์† ์งˆ๋ฌธ์„ ์••์ถ•ํ•˜์—ฌ ๋Œ€ํ™” ํ•ต์‹ฌ์„ ํฌ์ฐฉํ•œ ๋…๋ฆฝ์ ์ธ ์ฟผ๋ฆฌ๋กœ ์žฌ๊ตฌ์„ฑ

6. Rewrite Query Transformer: ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ์ด ์žฅํ™ฉ ํ•˜๊ฑฐ๋‚˜ ๋ชจํ˜ธํ•  ๋•Œ, ์งˆ๋ฌธ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์žฌ์ž‘์„ฑ

7. Translation Query Transformer: ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ์„ ํŠน์ • ์–ธ์–ด๋กœ ๋ฒˆ์—ญ ๋‹ค๊ตญ์–ด ๋Œ€ํ™”๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ง€์›

8. Multi Query Expander: ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ์„ ๋‹ค์–‘ํ•œ ๋ณ€ํ˜•(Query Expansion)์œผ๋กœ ๋งŒ๋“ค์–ด ๋Œ€ํ™”

๐Ÿ”Ÿ Chapter 9. MCP (Model Context Protocol)

Model Context Protocol(MCP)์€ AI ๋ชจ๋ธ์ด ์™ธ๋ถ€ ๋„๊ตฌยท๋ฐ์ดํ„ฐยท๋ฆฌ์†Œ์Šค์™€ ๊ตฌ์กฐํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ‘œ์ค€ํ™”๋œ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ชจ๋ธ๊ณผ ํ˜„์‹ค ์„ธ๊ณ„(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, API, ํŒŒ์ผ ์‹œ์Šคํ…œ ๋“ฑ)๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ํ†ตํ•ฉ์ ์ธ AI ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœ ํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1. MCP Chat: ๋‹ค์–‘ํ•œ MCP์„œ๋ฒ„์™€ ์—ฐ๋™ํ•˜์—ฌ LLM๊ณผ ๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ

  • Standard Input/Output (STDIO) MCP Server: ๋‚ ์”จ ์˜ˆ๋ณด

  • SSE WebMVC MCV Server: ํ˜„์žฌ ๋‚ ์”จ

  • SSE WebFlux MCP Server: ํ˜„์žฌ ์‹œ๊ฐ„


2. MCP Access: ์นด๋ฉ”๋ผ๋ฅผ ํ†ตํ•ด ์‚ฌ์›์ฆ ์ธ์‹ ํ›„ ์‚ฌ์›์ฆ์— ์žˆ๋Š” ID Number๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถœ์ž… ํ—ˆ๊ฐ€ ์‹œ์Šคํ…œ
Tool Calling๊ณผ MCP Server๋ฅผ ๋™์‹œ์— ๊ตฌ์„ฑ

  • SSE WebFlux MCP Server: ์ง์›์˜ ์‚ฌ๋ฒˆ๊ณผ ๋ชจ๋“  ์ง์› ์‚ฌ๋ฒˆ๊ณผ ๋น„๊ต(Tool Calling ๋ฐฉ์‹์œผ๋กœ๋„ ๋ณ€ํ™˜)

  • SSE WebMVC MCP Server: ์‚ฌ๋ฒˆ์ด ์ผ์น˜ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ถœ์ž…๋ฌธ ํ†ต์ œ

๐Ÿ…ฐ๏ธ Chapter 10. React

SpringBoot MVC๋ฅผ React๋กœ ๋ณ€ํ™˜

ํ”„๋ก ํŠธ์—”๋“œ ๊ตฌ์„ฑ

  • React 19.2.0 + TypeScript

  • Vite (๋นŒ๋“œ ๋„๊ตฌ)

  • React Router 7.10.1

  • Axios / Fetch API (API ํ†ต์‹ )



์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

์‹ค์Šต ํ™˜๊ฒฝ

  • ์šด์˜ ์ฒด์ œ ๋ฐ ๋ฒ„์ „(OS): Windows, macOS, Linux ๋“ฑ ๋ชจ๋“  OS๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ ๋„๊ตฌ: JDK,Intellij(Ultimate or Community),PostgreSQL & Docker,Node.js,VSCode

  • PC ์‚ฌ์–‘: ์ธํ„ฐ๋„ท ์ ‘์†์ด ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ณธ ์‚ฌ์–‘์˜ PC

ํ•™์Šต ์ž๋ฃŒ

  • ์ œ๊ณตํ•˜๋Š” ํ•™์Šต ์ž๋ฃŒ ํ˜•์‹: ๊ต์œก ํ™˜๊ฒฝ ํ”„๋กœ์ ํŠธ, ๊ต์•ˆ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ์ž๋ฃŒ ์ œ๊ณต

  • ๋ถ„๋Ÿ‰ ๋ฐ ์šฉ๋Ÿ‰: ๊ฐ ์„น์…˜๋ณ„๋กœ ํ•™์Šต ์ž๋ฃŒ ์ œ๊ณต

์„ ์ˆ˜ ์ง€์‹ ๋ฐ ์œ ์˜์‚ฌํ•ญ

  • HTML, CSS, JavaScript ๊ธฐ๋ณธ ์ง€์‹ ๋ณด์œ ์ž.

  • Java, SpringBoot ๊ฐœ๋ฐœ ๊ฒฝํ—˜์ž

  • ์งˆ๋ฌธ์€ ๊ฒŒ์‹œํŒ์— ์˜ฌ๋ ค ์ฃผ์‹œ๋ฉด ๋ฐ”๋กœ ๋‹ต๋ณ€ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


  • ๋ณธ ๊ฐ•์˜์˜ ์ €์ž‘๊ถŒ์€ (์ฃผ)ํ† ๋„ค์†”์— ์žˆ์œผ๋ฉฐ, ๋ฌด๋‹จ ๋ฐฐํฌ ๋ฐ ๋ณต์ œ๋ฅผ ๊ธˆ์ง€ํ•ฉ๋‹ˆ๋‹ค. ํ•™์Šต ์ž๋ฃŒ ์—ญ์‹œ ์ €์ž‘๊ถŒ์ด ์žˆ์œผ๋ฉฐ, ๊ฐœ์ธ์ ์ธ ํ•™์Šต ๋ชฉ์  ์™ธ ์‚ฌ์šฉ์„ ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • Spring Boot ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ์„œ AI ๊ธฐ์ˆ ์„ ์‹ค๋ฌด์— ์ ์šฉํ•˜๊ณ  ์‹ถ์€ ๋ถ„

  • Spring AI๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ธฐ์—… ๋‚ด AI ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ยท๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐœ๋ฐœ์ž

  • ๋‹ค์–‘ํ•œ AI ์„œ๋น„์Šค(LLM, Embedding, Vector DB ๋“ฑ) ์™€์˜ ์—ฐ๋™์„ ํ†ตํ•ด ์‹ค์ œ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์‹ถ์€ ๋ถ„

  • MCP(Model Context Protocol) ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋„๋ฉ”์ธ ๊ฐ„ ์ปจํ…์ŠคํŠธ๋ฅผ ํ†ตํ•ฉํ•˜๊ณ  ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ AI ์‹œ์Šคํ…œ์„ ์œ ๊ธฐ์ ์œผ๋กœ ์—ฐ๊ณ„ยทํ™•์žฅํ•˜๊ณ ์ž ํ•˜๋Š” ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • HTML, CSS, JavaScript ๊ธฐ์ดˆ ์ง€์‹

  • Java, SpringBoot ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์ž

์•ˆ๋…•ํ•˜์„ธ์š”
์ด์ง„๋งŒ(tootoo)์ž…๋‹ˆ๋‹ค.

120

๋ช…

์ˆ˜๊ฐ•์ƒ

13

๊ฐœ

์ˆ˜๊ฐ•ํ‰

3

๊ฐœ

๋‹ต๋ณ€

4.9

์ 

๊ฐ•์˜ ํ‰์ 

2

๊ฐœ

๊ฐ•์˜

์•ˆ๋…•ํ•˜์„ธ์š”

์ง€์‹๊ณต์œ ์ž ์ด์ง„๋งŒ(๋‹‰๋„ค์ž„ tootoo) ์ž…๋‹ˆ๋‹ค.

์˜ค๋žœ ์‹œ๊ฐ„ ๊ฐ•์˜์‹ค์—์„œ ์—ฌ๋Ÿฌ๋ถ„๋“ค๊ณผ ์†Œํ†ต์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์˜จ๋ผ์ธ ์ƒ์—์„œ ์—ฌ๋Ÿฌ๋ถ„๋“ค๊ณผ ์†Œํ†ต ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ข‹์€ ์ปจํ…์ธ  ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

jmlee@tonesol.com

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

62๊ฐœ โˆ™ (15์‹œ๊ฐ„ 41๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

10๊ฐœ

4.9

10๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

  • ๊น€์ •ํ˜„๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ๊น€์ •ํ˜„

    ์ˆ˜๊ฐ•ํ‰ 16

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    ์ˆ˜์ •๋จ

    5

    56% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    Spring AI ์˜ ์ด๋ก ๋ถ€ํ„ฐ RAG, MCP ๋“ฑ์˜ ์‘์šฉ๊นŒ์ง€... ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์˜ ์˜ˆ์ œ๋“ค์„ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ์‹ค์Šต ์œ„์ฃผ๋กœ ํ•™์Šตํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ์–ด์š”.(^^)

    • ์ด์€๋ฒ”๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
      ์ด์€๋ฒ”

      ์ˆ˜๊ฐ•ํ‰ 2

      โˆ™

      ํ‰๊ท  ํ‰์  5.0

      ์ˆ˜์ •๋จ

      5

      100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

      ์Šคํ”„๋ง ๋ถ€ํŠธ ์ž…๋ฌธ์šฉ์œผ๋กœ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์ดˆ ์„ค๋ช…๋„ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ , ๋ฌด์—‡๋ณด๋‹ค ์š”์ฆ˜ ํ•„์ˆ˜์ธ AI ํ™œ์šฉ๋ฒ•๊นŒ์ง€ ๋ค์œผ๋กœ ์–ป์–ด๊ฐ€๋Š” ๊ธฐ๋ถ„์ด๋ผ ๋งŒ์กฑ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

      • hyunhiroto๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
        hyunhiroto

        ์ˆ˜๊ฐ•ํ‰ 1

        โˆ™

        ํ‰๊ท  ํ‰์  5.0

        5

        31% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

        • Victor๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
          Victor

          ์ˆ˜๊ฐ•ํ‰ 19

          โˆ™

          ํ‰๊ท  ํ‰์  4.9

          5

          74% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

          ์ •๋ฆฌ๊ฐ€ ์•„์ฃผ ์ž˜ ๋˜์–ด์žˆ๊ณ , ๋‹จ์ˆœ ๋”ฐ๋ผ์“ฐ๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ผ์„œ ๋„ˆ๋ฌด ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ์˜ ์ฐธ์—ฌ๋ฅผ ์œ„ํ•ด ์ž๋ฃŒ์˜ ๋ณต๋ถ™ ํ˜•ํƒœ๋กœ ํ•ด๋†“์œผ์‹  ๊ฒƒ๋„ ๊ตฌ์กฐํŒŒ์•…์— ์€๊ทผ ๋„์›€์ด ๋˜์—ˆ๋„ค์š”. ์ปค๋ฆฌํ˜๋Ÿผ์ด ๊ตฌ์กฐ์ ์œผ๋กœ ์ •๋ฆฌ๊ฐ€ ์•„์ฃผ ์ž˜ ๋˜์–ด ์ „๋ฐ˜์ ์ธ SpringAI์˜ ํ•ต์‹ฌ๋‚ด์šฉ์„ ์ž˜ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ํ”„๋กฌํ”„ํŠธ์— ์ด๊ฒƒ์ €๊ฒƒ ์‹œํ‚ค๋Š” ๋‹ค๋ฅธ ๊ฐ•์˜๋“ค๋ณด๋‹ค ํ›จ์”ฌ ํ€„๋ฆฌํ‹ฐ ์žˆ๊ณ  ๊น”๋”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์›Œ๊ฐ€๋Š” ๋А๋‚Œ์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

          • ํฌ์„ฑ๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
            ํฌ์„ฑ

            ์ˆ˜๊ฐ•ํ‰ 2

            โˆ™

            ํ‰๊ท  ํ‰์  5.0

            ์ˆ˜์ •๋จ

            5

            31% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

            ์ด์ œ ๋ง‰ Spring AI๋ฅผ ์ ‘ํ•œ ์ž…๋ฌธ์ž๋Š” ๋ฌผ๋ก  ๋ณต์Šต์ด ํ•„์š”ํ•œ ๋ถ„๋“ค์—๊ฒŒ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ € ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ œ๊ณต๋œ spring ai ํ•™์Šต์„ ์œ„ํ•œ ํ”„๋กฌํ”„ํŠธ ๊ตฌ์„ฑ๋ถ€ํ„ฐ Thymeleaf์™€ React, ๋ฐฑ์—”๋“œ๊นŒ์ง€ ํฌํ•จ๋œ ์ƒ์„ธํ•œ ํ•™์Šต ์ž๋ฃŒ ๋•๋ถ„์— ์ œ๊ณต๋œ ์ฝ”๋“œ๋ฅผ ๋ฐ”๋กœ ์‹คํ–‰ํ•ด๋ณด๋ฉฐ ํ•ต์‹ฌ ๋กœ์ง์„ ๋น ๋ฅด๊ฒŒ ์ฒด๋“ํ•  ์ˆ˜ ์žˆ์–ด์„œ ํŽธํ•˜๊ฒŒ ํ•™์Šตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

            ์ด์ง„๋งŒ(tootoo)๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

            ์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

            ๋น„์Šทํ•œ ๊ฐ•์˜

            ๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

            ์ง€์‹๊ณต์œ ์ž์˜ ๊นœ์งํ• ์ธ ์ค‘ (8์ผ ๋‚จ์Œ)

            โ‚ฉ45,380

            24%

            โ‚ฉ60,500