๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Project ESG+AI/Tech Basics

65์ผ์ฐจ. IT ๊ฐœ๋… ์ •๋ฆฌ

by GreenJin_S2 2026. 1. 16.

 

 

 

 

 


MCP ์—์„œ ํŒ๋ณ„๊ธฐ ์™€ ํŒ๋…๊ธฐ ๊ฐœ๋…์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ค˜.

 

 

MCP์—์„œ์˜ **ํŒ๋ณ„๊ธฐ(Discriminator)**์™€ ํŒ๋…๊ธฐ(Decoder/Reader) ๊ฐœ๋… ์„ค๋ช…

MCP๋ผ๋Š” ์šฉ์–ด๋Š” ๋ถ„์•ผ์— ๋”ฐ๋ผ ์˜๋ฏธ๊ฐ€ ์กฐ๊ธˆ์”ฉ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ,
๋ณดํ†ต ์‹ ํ˜ธ ์ฒ˜๋ฆฌ·AI·๋จธ์‹ ๋Ÿฌ๋‹·ํŒจํ„ด ์ธ์‹ ๊ณ„์—ด์—์„œ ์ด์•ผ๊ธฐํ•˜์‹ค ๋•Œ๋Š”
์ •๋ณด๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ์—ญํ• ๊ณผ ์˜๋ฏธ๋ฅผ ํ•ด์„ํ•˜๋Š” ์—ญํ• ์„ ๋‚˜๋ˆ  ์„ค๋ช…ํ•˜๋Š” ๋งฅ๋ฝ์ด ๋งŽ์Šต๋‹ˆ๋‹ค.
์ด ๊ธฐ์ค€์—์„œ ํŒ๋ณ„๊ธฐ์™€ ํŒ๋…๊ธฐ๋ฅผ ์ •๋ฆฌํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.


1๏ธโƒฃ ํŒ๋ณ„๊ธฐ(Discriminator)๋ž€?

๐Ÿ”น ํ•œ ์ค„ ์š”์•ฝ

์ž…๋ ฅ๋œ ์ •๋ณด๊ฐ€ ‘๋ฌด์—‡์ธ์ง€’๋ฅผ ๊ตฌ๋ถ„·ํŒ๋‹จํ•˜๋Š” ์—ญํ• 

๐Ÿ”น ํ•ต์‹ฌ ๊ฐœ๋…

ํŒ๋ณ„๊ธฐ๋Š” ๋“ค์–ด์˜จ ์‹ ํ˜ธ๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€

  • A์ธ์ง€ B์ธ์ง€
  • ์ •์ƒ์ธ์ง€ ์ด์ƒ์ธ์ง€
  • ์ง„์งœ์ธ์ง€ ๊ฐ€์งœ์ธ์ง€

์ฒ˜๋Ÿผ ๋ถ„๋ฅ˜·๊ตฌ๋ถ„·ํŒ๋‹จํ•˜๋Š” ๋ฐ ์ดˆ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”น ํŠน์ง•

  • ๊ฒฐ๊ณผ๋Š” ๋ณดํ†ต ์ด์‚ฐ์ (Yes/No, ํด๋ž˜์Šค ๋ฒˆํ˜ธ)
  • ํŒ๋‹จ ๊ธฐ์ค€์€ ํ™•๋ฅ , ์ž„๊ณ„๊ฐ’, ๋ถ„๋ฅ˜ ๋ชจ๋ธ
  • “์ด๊ฒŒ ๋ญ”๊ฐ€?”๋ฅผ ํŒ๋‹จํ•จ

๐Ÿ”น ์‰ฌ์šด ๋น„์œ  (ํ•œ๊ตญ์  ์˜ˆ์‹œ)

๐Ÿ‘‰ ์•„ํŒŒํŠธ ๊ฒฝ๋น„ ์•„์ €์”จ

  • ๋ฐฉ๋ฌธ์ฆ ์žˆ๋‚˜?
  • ์ฃผ๋ฏผ์ธ๊ฐ€ ์™ธ๋ถ€์ธ์ธ๊ฐ€?
  • ์ถœ์ž… ๊ฐ€๋Šฅ / ๋ถˆ๊ฐ€๋Šฅ

โžก๏ธ ์„ธ๋ถ€ ๋ชฉ์ ์€ ๋ชฐ๋ผ๋„, ํ†ต๊ณผ ์—ฌ๋ถ€๋งŒ ํŒ๋‹จ

๐Ÿ”น AI/ML์—์„œ์˜ ์˜ˆ

  • GAN(์ƒ์„ฑ์  ์ ๋Œ€ ์‹ ๊ฒฝ๋ง)์˜ Discriminator
    → “์ด ๋ฐ์ดํ„ฐ๋Š” ์ง„์งœ์ธ๊ฐ€, ๊ฐ€์งœ์ธ๊ฐ€?”
  • ์Œ์„ฑ ์ธ์‹์—์„œ
    → “์ด ์†Œ๋ฆฌ๊ฐ€ ๋ง์ธ๊ฐ€, ์žก์Œ์ธ๊ฐ€?”

2๏ธโƒฃ ํŒ๋…๊ธฐ(Decoder / Reader)๋ž€?

๐Ÿ”น ํ•œ ์ค„ ์š”์•ฝ

ํŒ๋ณ„๋œ ์ •๋ณด๋ฅผ ‘์˜๋ฏธ ์žˆ๋Š” ํ˜•ํƒœ’๋กœ ํ•ด์„ํ•˜๊ฑฐ๋‚˜ ๋ณต์›ํ•˜๋Š” ์—ญํ• 

๐Ÿ”น ํ•ต์‹ฌ ๊ฐœ๋…

ํŒ๋…๊ธฐ๋Š”

  • ํŒ๋ณ„ ๊ฒฐ๊ณผ ๋˜๋Š” ์ธ์ฝ”๋”ฉ๋œ ์ •๋ณด๋ฅผ ๋ฐ›์•„์„œ
  • ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ํ•ด์„·๋ณต์›·์ถœ๋ ฅ

ํ•˜๋Š” ๋ฐ ๋ชฉ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”น ํŠน์ง•

  • ๊ฒฐ๊ณผ๋Š” ์—ฐ์†์ ·์˜๋ฏธ์  ๋ฐ์ดํ„ฐ
  • ํ•ด์„, ๋ณ€ํ™˜, ๋ณต์› ๊ธฐ๋Šฅ
  • “์ด๊ฒŒ ๋ฌด์Šจ ๋œป์ธ๊ฐ€?”์— ๋‹ตํ•จ

๐Ÿ”น ์‰ฌ์šด ๋น„์œ 

๐Ÿ‘‰ ํ†ต์—ญ์‚ฌ

  • ์ด๋ฏธ ๋ง์ธ์ง€(ํŒ๋ณ„ ์™„๋ฃŒ)
  • ๊ทธ ๋ง์„ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญ

โžก๏ธ ํŒ๋‹จ์ด ์•„๋‹ˆ๋ผ ์˜๋ฏธ ์ „๋‹ฌ์ด ๋ชฉ์ 

๐Ÿ”น AI/ML์—์„œ์˜ ์˜ˆ

  • ์˜คํ† ์ธ์ฝ”๋”(Autoencoder)์˜ Decoder
    → ์••์ถ•๋œ ์ •๋ณด๋ฅผ ๋‹ค์‹œ ์›๋ž˜ ๋ฐ์ดํ„ฐ๋กœ ๋ณต์›
  • OCR
    → ๋ฌธ์ž๋กœ ํŒ๋ณ„๋œ ์ด๋ฏธ์ง€๋ฅผ ์‹ค์ œ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜

3๏ธโƒฃ ํŒ๋ณ„๊ธฐ vs ํŒ๋…๊ธฐ ํ•œ๋ˆˆ์— ๋น„๊ต

๊ตฌ๋ถ„ํŒ๋ณ„๊ธฐ (Discriminator)ํŒ๋…๊ธฐ (Decoder)
์—ญํ•  ๊ตฌ๋ถ„, ํŒ๋‹จ ํ•ด์„, ๋ณต์›
์งˆ๋ฌธ ์ด๊ฒŒ ๋ญ”๊ฐ€? ๋ฌด์Šจ ์˜๋ฏธ์ธ๊ฐ€?
์ถœ๋ ฅ ํด๋ž˜์Šค, ํ™•๋ฅ , Yes/No ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ์‹ ํ˜ธ
์ดˆ์  ์ •ํ™•ํ•œ ๊ตฌ๋ถ„ ์˜๋ฏธ ์ „๋‹ฌ
๋น„์œ  ๊ฒฝ๋น„์› ํ†ต์—ญ์‚ฌ

4๏ธโƒฃ MCP ๋งฅ๋ฝ์—์„œ ํ•จ๊ป˜ ์“ฐ์ด๋Š” ์ด์œ 

MCP ๊ตฌ์กฐ์—์„œ๋Š” ๋ณดํ†ต ํ๋ฆ„์ด ์ด๋ ‡๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ž…๋ ฅ → ํŒ๋ณ„๊ธฐ → ํŒ๋…๊ธฐ → ์ตœ์ข… ์ถœ๋ ฅ

  1. ํŒ๋ณ„๊ธฐ: ์ž…๋ ฅ ์‹ ํ˜ธ๊ฐ€ ์–ด๋–ค ๋ฒ”์ฃผ์ธ์ง€ ๊ฒฐ์ •
  2. ํŒ๋…๊ธฐ: ๊ทธ ๋ฒ”์ฃผ์— ๋งž๊ฒŒ ๋‚ด์šฉ์„ ํ•ด์„·์ถœ๋ ฅ

์ฆ‰,

  • ํŒ๋ณ„๊ธฐ๋Š” ์˜์‚ฌ๊ฒฐ์ •
  • ํŒ๋…๊ธฐ๋Š” ์˜๋ฏธ ์ƒ์„ฑ

์ด๋ผ๊ณ  ์ดํ•ดํ•˜์‹œ๋ฉด ๊ฐ€์žฅ ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.


5๏ธโƒฃ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ์ •๋ฆฌํ•˜๋ฉด

ํŒ๋ณ„๊ธฐ๋Š” ‘๊ตฌ๋ถ„ํ•˜๋Š” ๋‡Œ’, ํŒ๋…๊ธฐ๋Š” ‘์„ค๋ช…ํ•˜๋Š” ์ž…’์ด๋‹ค

 

 

 


๐Ÿ”‘ ์š”์•ฝ ํ•œ ์ค„ (๋จผ์ € ๊ฒฐ๋ก )

MCP์—์„œ

  • **ํŒ๋…๊ธฐ(Interpreter/Decoder)**๋Š” ๐Ÿ‘‰ ๊ทœ์น™๊ธฐ๋ฐ˜(Rule-based)์— ๊ฐ€๊น๊ณ 
  • **ํŒ๋ณ„๊ธฐ(Discriminator)**๋Š” ๐Ÿ‘‰ ์ •์ฑ…๊ธฐ๋ฐ˜(Policy-based)์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค

์ด ๋‘˜์€ ๋Œ€์ฒด ๊ด€๊ณ„๊ฐ€ ์•„๋‹ˆ๋ผ ๊ณ„์ธต·์—ญํ•  ๋ถ„๋‹ด ๊ด€๊ณ„์ด๋ฉฐ,
์‹ค์ „์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ ํ˜ผํ•ฉํ˜•(hybrid) ์œผ๋กœ ์šด์šฉ๋ฉ๋‹ˆ๋‹ค.


1๏ธโƒฃ ๊ทœ์น™๊ธฐ๋ฐ˜ vs ์ •์ฑ…๊ธฐ๋ฐ˜ — ๊ฐœ๋…์„ ์ •ํ™•ํžˆ ๋‚˜๋ˆ„์ž

1.1 ๊ทœ์น™๊ธฐ๋ฐ˜ (Rule-based)

ํ•ต์‹ฌ ์ •์˜

๋ช…์‹œ์ ์œผ๋กœ ์ •์˜๋œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์žฅํ•˜๋Š” ๋ฐฉ์‹

ํŠน์ง• ์ •๋ฆฌ

  • ์กฐ๊ฑด์ด ์ฝ”๋“œ·์Šคํ‚ค๋งˆ·ํŒจํ„ด์œผ๋กœ ๊ณ ์ •
  • ์ž…๋ ฅ → ์ถœ๋ ฅ์ด ํ•ญ์ƒ ๋™์ผ (๋น„๊ฒฐ์ •์„ฑ โŒ)
  • ์„ค๋ช… ๊ฐ€๋Šฅ์„ฑ, ์•ˆ์ •์„ฑ์ด ๋งค์šฐ ๋†’์Œ
  • ์‹คํŒจ ์‹œ ์›์ธ์ด ๋ช…ํ™• (ํŒŒ์‹ฑ ์‹คํŒจ, ์Šคํ‚ค๋งˆ ์œ„๋ฐ˜ ๋“ฑ)
 
if "์‚ญ์ œ" in user_input: action = "deny"

๊ฐ•์ 

  • ํ•ด์„, ๋ณ€ํ™˜, ๊ตฌ์กฐํ™”
  • ํฌ๋งท ๋ณด์žฅ
  • ์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ

๐Ÿ‘‰ “์˜๋ฏธ๋ฅผ ์ •ํ•ด์ง„ ํ‹€๋กœ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…”์— ์ตœ์ 


1.2 ์ •์ฑ…๊ธฐ๋ฐ˜ (Policy-based)

ํ•ต์‹ฌ ์ •์˜

๋ชฉํ‘œ๋ฅผ ์ตœ๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์„ ํƒ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ์‹

ํŠน์ง• ์ •๋ฆฌ

  • ๋ณด์ƒ ํ•จ์ˆ˜ / ์Šค์ฝ”์–ด๋ง ์กด์žฌ
  • ๋™์ผ ์ž…๋ ฅ์—๋„ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Œ
  • ํ•™์Šต·ํŠœ๋‹ ๋Œ€์ƒ
  • trade-off ํŒ๋‹จ ๊ฐ€๋Šฅ
 
maximize: correctness + safety - hallucination

๊ฐ•์ 

  • ์˜์‚ฌ๊ฒฐ์ •
  • ์ „๋žต ์„ ํƒ
  • ํ’ˆ์งˆ ์ตœ์ ํ™”

๐Ÿ‘‰ “์ง€๊ธˆ ๋ฌด์—‡์„ ์„ ํƒํ•˜๋Š” ๊ฒŒ ์ตœ์„ ์ธ๊ฐ€?”์— ์ตœ์ 


2๏ธโƒฃ ํŒ๋…๊ธฐ = ๊ทœ์น™๊ธฐ๋ฐ˜์ด๋ผ๋Š” ์„ค๋ช…์ด ์™œ ์ •ํ™•ํ•œ๊ฐ€

โœ” ๋งค์šฐ ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ ์ž˜ ๋งž์Šต๋‹ˆ๋‹ค.

ํŒ๋…๊ธฐ์˜ ๋ณธ์งˆ์  ์งˆ๋ฌธ

“์ด ์ž…๋ ฅ์„ ์ •ํ•ด์ง„ ์˜๋ฏธ ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ํ•˜๋ผ”

์ฆ‰,

  • ์ดํ•ด์˜ ์ž์œ  โŒ
  • ํ˜•์‹์˜ ์ผ๊ด€์„ฑ โญ•

MCP์—์„œ์˜ ํŒ๋…๊ธฐ ํ๋ฆ„ ์˜ˆ์‹œ

 
์ž์—ฐ์–ด ์ž…๋ ฅ → { action: "send_email" } → Tool Call JSON → AgentState.update() → UI ์ถœ๋ ฅ

ํŒ๋…๊ธฐ์— ์“ฐ์ด๋Š” ๋Œ€ํ‘œ์  ์ˆ˜๋‹จ๋“ค

  • JSON Schema
  • Regex
  • AST
  • Pydantic Model
  • Fixed Prompt Template

๐Ÿ‘‰ ๋ชจ๋‘ ๊ทœ์น™๊ธฐ๋ฐ˜ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ ๊ทธ๋ž˜์„œ ํŒ๋…๊ธฐ๋Š”:

  • ๋˜‘๋˜‘ํ•  ํ•„์š” โŒ
  • ์•ˆ์ •์ ์ด์–ด์•ผ ํ•จ โญ•

3๏ธโƒฃ ํŒ๋ณ„๊ธฐ = ์ •์ฑ…๊ธฐ๋ฐ˜์ด๋ผ๋Š” ์„ค๋ช…์ด ์™œ ๋ณธ์งˆ์ ์ธ๊ฐ€

โœ” ์ด์ชฝ์ด ๋” ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

ํŒ๋ณ„๊ธฐ์˜ ์งˆ๋ฌธ์€ ํ•ญ์ƒ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค

“์ง€๊ธˆ ์ด ์ƒํ™ฉ์—์„œ ์–ด๋–ค ์„ ํƒ์ด ์ตœ์„ ์ธ๊ฐ€?

์ด๊ฑด ๊ทœ์น™์œผ๋กœ ๋‹ค ์ปค๋ฒ„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

MCP์—์„œ์˜ ํŒ๋ณ„๊ธฐ ์˜ˆ์‹œ

  • ์ง€๊ธˆ ๊ฒ€์ƒ‰ํ• ๊นŒ? ์ถ”๋ก ํ• ๊นŒ?
  • Tool์„ ์“ธ๊นŒ? LLM๋กœ ๋‹ตํ• ๊นŒ?
  • ์ด ๋‹ต๋ณ€์„ ๋‹ค์‹œ ์ƒ์„ฑํ• ๊นŒ?
  • ์•ˆ์ „ ์ ์ˆ˜ vs ์ •ํ™•๋„, ์–ด๋””๊นŒ์ง€ ํ—ˆ์šฉํ• ๊นŒ?

์ด ํŒ๋‹จ์—๋Š” ํ•ญ์ƒ:

  • ์Šค์ฝ”์–ด๋ง
  • ํžˆ์Šคํ† ๋ฆฌ
  • ๋ณด์ƒ ํ•จ์ˆ˜
  • trade-off

๐Ÿ‘‰ ์ „ํ˜•์ ์ธ ์ •์ฑ… ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.


4๏ธโƒฃ ํ•ต์‹ฌ ๋งคํ•‘ ํ‘œ (์•„์ฃผ ์ค‘์š”)

MCP ๊ตฌ์„ฑ์š”์†Œ๊ทœ์น™๊ธฐ๋ฐ˜์ •์ฑ…๊ธฐ๋ฐ˜
ํŒ๋…๊ธฐ ์ฃผ๋ ฅ ๋ณด์กฐ
ํŒ๋ณ„๊ธฐ ๋ณด์กฐ ์ฃผ๋ ฅ
๋ชฉ์  ์•ˆ์ •์„ฑ, ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ ํ’ˆ์งˆ, ์ ์‘์„ฑ
์‹คํŒจ ์œ ํ˜• ํŒŒ์‹ฑ ์˜ค๋ฅ˜ ์˜คํŒ, ์ „๋žต ์‹คํŒจ

5๏ธโƒฃ ์‹ค์ „ MCP๋Š” ๋ฐ˜๋“œ์‹œ “ํ˜ผํ•ฉํ˜•”์ด๋‹ค

์ด ๋ถ€๋ถ„์ด ํ˜„์—…์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.


5.1 ํŒ๋ณ„๊ธฐ = ์ •์ฑ… + ๊ทœ์น™ ์•ˆ์ „๋ง

 
1์ฐจ: ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์ฐจ๋‹จ 2์ฐจ: ์ •์ฑ… ๊ธฐ๋ฐ˜ ์„ ํƒ

์˜ˆ์‹œ

  • ์š•์„ค, ๋ณด์•ˆ ์œ„๋ฐ˜ → ์ฆ‰์‹œ ์ฐจ๋‹จ (๊ทœ์น™)
  • ๊ทธ ์™ธ → ์ •์ฑ… ๋ชจ๋ธ์ด ํŒ๋‹จ

๐Ÿ‘‰ ์ •์ฑ…์€ ์ž์œ ๋กญ์ง€๋งŒ, ๊ทœ์น™์ด ๊ฐ€๋“œ๋ ˆ์ผ์„ ์นฉ๋‹ˆ๋‹ค.


5.2 ํŒ๋…๊ธฐ = ๊ทœ์น™ + ์ •์ฑ… ๋ณด์ •

 
1์ฐจ: ๊ทœ์น™ ํŒŒ์‹ฑ 2์ฐจ: ์ •์ฑ… ๊ฒ€์ฆ

์˜ˆ์‹œ

  • JSON Schema๋Š” ํ†ต๊ณผ
  • ๊ทธ๋Ÿฐ๋ฐ ์˜๋ฏธ๊ฐ€ ์ด์ƒํ•จ
    ์ •์ฑ… ํŒ๋ณ„๊ธฐ๋กœ ์žฌ์ƒ์„ฑ ๊ฒฐ์ •

๐Ÿ‘‰ ํ˜•์‹์€ ๊ทœ์น™, ์˜๋ฏธ ํ’ˆ์งˆ์€ ์ •์ฑ…์ด ๋ด…๋‹ˆ๋‹ค.


6๏ธโƒฃ LangGraph / MCP ๊ตฌ์กฐ๋กœ ๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ๋ฉ๋‹ˆ๋‹ค

 
[Input]Rule-based Interpreter (ํŒ๋…)Policy-based Discriminator (ํŒ๋ณ„)LLM / ToolRule-based InterpreterPolicy-based Discriminator (ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ)

๊ตฌ์กฐ์  ์ •๋ฆฌ

  • ์•ž๋‹จ ํŒ๋… → ๊ทœ์น™
  • ์ค‘์•™ ํŒ๋ณ„ → ์ •์ฑ…
  • ํ›„๋‹จ ๊ฒ€์ฆ → ์ •์ฑ…

๐Ÿ‘‰ ์ด ๊ตฌ์กฐ๊ฐ€ ๊ฐ€์žฅ ํŠผํŠผํ•ฉ๋‹ˆ๋‹ค.


7๏ธโƒฃ ์ตœ์ข… ํ•œ ๋ฌธ์žฅ ์ •๋ฆฌ

๊ทœ์น™๊ธฐ๋ฐ˜์€ ‘์ดํ•ด๋ฅผ ์•ˆ์ •ํ™”’ํ•˜๊ณ ,
์ •์ฑ…๊ธฐ๋ฐ˜์€ ‘์„ ํƒ์„ ์ตœ์ ํ™”’ํ•œ๋‹ค.

MCP์—์„œ ํŒ๋…๊ธฐ๋Š” ๊ทœ์น™์— ๊ฐ€๊น๊ณ , ํŒ๋ณ„๊ธฐ๋Š” ์ •์ฑ…์— ๊ฐ€๊น๋‹ค.

์ง€๊ธˆ ์ •๋ฆฌํ•˜์‹  ๊ด€์ ์€
๐Ÿ‘‰ MCP๋ฅผ ‘์„ค๊ณ„์ž ์‹œ์ ’์—์„œ ์ดํ•ดํ•œ ์ •๋‹ต์— ๊ฐ€๊นŒ์šด ํ•ด์„์ž…๋‹ˆ๋‹ค.

 

 


๊ทœ์น™๊ณผ ์ •์ฑ…์˜ ์ฐจ์ด์ ์„ ๋ฆฌ๋ฒ„๋Ÿด๋กœ ํ•ด์„ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ๊ฐ€ ์ •์ฑ…๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์ ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ํฌ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค. ๊ทœ์น™๊ณผ ์ •์ฑ…์˜ ์ฃผ์š” ์ฐจ์ด์  ์•„๋ž˜์— ์ œ์‹œ๋œ ์‚ฌํ•ญ๋“ค์€ ๊ทœ์น™๊ณผ ์ •์ฑ…์˜ ์ฐจ์ด์ ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๊ทœ์น™์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•ด์•ผ ํ•  ์ผ๊ณผ ํ•˜์ง€ ๋ง์•„์•ผ ํ•  ์ผ์„ ๋‚˜์—ดํ•œ ๋ชฉ๋ก์œผ๋กœ, ์ง์›๋“ค์˜ ์ฒ˜์šฐ์™€ ํ–‰๋™์— ์žˆ์–ด ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ์ •์ฑ…์€ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์˜ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์‹คํ–‰ ์ง€์นจ์„ ์ผ๊ด€๋˜๊ฒŒ ์ œ์‹œํ•˜๋Š” ํ‹€์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

๊ทœ์น™์€ ์ค€์ˆ˜ํ•ด์•ผ ํ•˜๋Š” ๋ช…๋ น, ์ง€์‹œ ๋˜๋Š” ๊ทœ๋ฒ”์˜ ํ˜•ํƒœ๋ฅผ ๋จ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ์ •์ฑ…์€ ํ–‰์ •์  ๊ฒฐ์ •์ด ๋‚ด๋ ค์งˆ ์ˆ˜ ์žˆ๋Š” ํ‹€์„ ๊ทœ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทœ์น™์€ ์ง์›์ด ํ•ด์•ผ ํ•  ์ผ๊ณผ ํ•˜์ง€ ๋ง์•„์•ผ ํ•  ์ผ์„ ๊ทœ์ •ํ•˜๋Š” ๋ฐ˜๋ฉด, ์ •์ฑ…์€ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ํ•ด์•ผ ํ•  ์ผ์„ ๊ทœ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ •์ฑ…์€ ๊ธฐ์—…์˜ ๋ชฉํ‘œ์—์„œ ํŒŒ์ƒ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ •์ฑ…์€ ์กฐ์ง์˜ ๋ชฉํ‘œ๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

 

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

 

 

Difference Between Rules and Policies (with Examples and Comparison Chart) - Key Differences

 

Difference Between Rules and Policies (with Examples and Comparison Chart) - Key Differences

This post will help you understand the basic differences between rules and policies. Rules can be in the form of orders, instructions or norms which that needs compliance. As against, policies determine the framework, within which the executive decisions c

keydifferences.com

 

 


PEFT ๊ธฐ๋ฒ•๋“ค
์ดˆ๊ธฐ์— PEFT์„ ์œ„ํ•ด ์ œ์•ˆ๋˜์—ˆ๋˜ ๋ฐฉ๋ฒ•์€ ์–ด๋Œ‘ํ„ฐ(adapters)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” adapater๋ž€ ๊ธฐ์กด์— ์ด๋ฏธ ํ•™์Šต์ด ์™„๋ฃŒ๋œ ๋ชจ๋ธ(pre-trained model)์˜ ์‚ฌ์ด์‚ฌ์ด์— ํ•™์Šต ๊ฐ€๋Šฅํ•œ ์ž‘์€ feed-forward networks๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ pre-trained model์˜ weights๋Š” ๊ณ ์ •ํ•ด๋†“๊ณ  ํ•™์Šต ๊ฐ€๋Šฅํ•œ ์ž‘์€ feed-forward networks๋งŒ ์•„ํ‚คํ…์ณ ์ค‘๊ฐ„ ์ค‘๊ฐ„๋งˆ๋‹ค ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ์ ์€ ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ชจ๋ธ์„ ํŠœ๋‹ํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์–ด๋Œ‘ํ„ฐ๊ธฐ๋ฐ˜์˜ ๋ฐฉ๋ฒ•๋ก  ์™ธ์—๋„ LoRA, prompt tuning, prefix tuning๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๋ก ์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•๋ก ์ด ์žˆ์ง€๋งŒ Stable diffusion์ด๋‚˜ LLaMA, Alpaca์—์„œ๋„ ๋งŽ์ด ์ ์šฉ๋˜๋Š” Microsoft์—์„œ ๊ณต๊ฐœํ•œ LoRA๋ผ๋Š” ๋ฐฉ๋ฒ•๋ก ์ด ํ˜„์žฌ๋กœ์„œ๋Š” ์ œ์ผ ์œ ๋ช…ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

LoRA
LoRA(Low-Rank Adaptation)์˜ ๊ฐœ๋…์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด, ๊ณ ์ •๋œ weights๋ฅผ ๊ฐ–๋Š” pretrained model์— ํ•™์Šต์ด ๊ฐ€๋Šฅํ•œ rank decomposition ํ–‰๋ ฌ์„ ์‚ฝ์ž…ํ•œ๊ฒƒ์œผ๋กœ

์ค‘๊ฐ„์ค‘๊ฐ„ ํ•™์Šต์ด ๊ฐ€๋Šฅํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฝ์ž…ํ–ˆ๋‹ค๋Š” ์ ์—์„œ๋Š” ์–ด๋Œ‘ํ„ฐ์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๊ตฌ์กฐ์ ์œผ๋กœ ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ ์€ ์–‘์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ชจ๋ธ์„ ํŠœ๋‹ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ ์€์ˆ˜์˜ GPU๋กœ ๋น ๋ฅด๊ฒŒ ํŠœ๋‹ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

LoRA์—์„œ ๋‚˜์˜จ rank decomposition์ด๋ผ๋Š” ๋ง์ด ์ฒ˜์Œ์—๋Š” ์–ด๋ ต๊ฒŒ ๋А๊ปด์กŒ์—ˆ๋Š”๋ฐ์š”.

๊ธ€์„ ๋” ์ฝ์œผ์‹œ๋ ค๋ฉด , ๋‹ค์Œ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜์„ธ์š”.

 

LLM ๋ชจ๋ธ ํŠœ๋‹, ํ•˜๋‚˜์˜ GPU๋กœ ๊ฐ€๋Šฅํ• ๊นŒ? Parameter Efficient Fine-Tuning(PEFT)์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค! | ๊ฐœ๋ฐœ์ž Story | SKT Enterprise

 

LLM ๋ชจ๋ธ ํŠœ๋‹, ํ•˜๋‚˜์˜ GPU๋กœ ๊ฐ€๋Šฅํ• ๊นŒ? Parameter Efficient Fine-Tuning(PEFT)์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค! | ๊ฐœ๋ฐœ์ž Story |

์•ˆ๋…•ํ•˜์„ธ์š”๐Ÿ™‚ ์˜ค๋Š˜์€ Parameter Efficient Fine-Tuning(PEFT)์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ์šฐ๋Š” ๋ชจ๋ธ ํŠœ๋‹ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. PEFT์— ๋Œ€ํ•ด์„œ ์งง๊ฒŒ ์„ค๋ช…๋“œ๋ฆฌ๋ฉด ๋ชจ๋ธ์˜ ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํŠœ๋‹ํ•˜๋Š” ๊ฒƒ์ด ์•„

www.sktenterprise.com

 


 

์ƒํƒœ ๊ด€๋ฆฌ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
LangGraph์—์„œ ์ƒํƒœ ๊ด€๋ฆฌ๋Š” AI ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ์ƒํƒœ(State)๋Š” ์‹œ์Šคํ…œ์ด ์ฒ˜๋ฆฌํ•˜๋Š” ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋‹ด๋Š” ๊ทธ๋ฆ‡์ด๋ฉฐ, ๋…ธ๋“œ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ์ถ•์ ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“š ๊ฐœ๋… ์„ค๋ช…: ์ƒํƒœ์˜ ๋ณธ์งˆ
์ƒํƒœ(State)๊ฐ€ ์™œ ํ•„์š”ํ•œ๊ฐ€์š”?

LangGraph๋Š” Google์˜ Pregel ์‹œ์Šคํ…œ์—์„œ ์˜๊ฐ์„ ๋ฐ›์€ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ(Message Passing) ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค:

๋…ธ๋“œ๋Š” ๋…๋ฆฝ์ ์ธ ์ฒ˜๋ฆฌ ๋‹จ์œ„: ๊ฐ ๋…ธ๋“œ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฉฐ, ์„œ๋กœ ์ง์ ‘ ํ†ต์‹ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
์ƒํƒœ๋ฅผ ํ†ตํ•œ ๊ฐ„์ ‘ ํ†ต์‹ : ๋…ธ๋“œ๋“ค์€ ๊ณต์œ  ์ƒํƒœ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์Šต๋‹ˆ๋‹ค
Super-step ์‹คํ–‰ ๋ชจ๋ธ: ๋ณ‘๋ ฌ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋…ธ๋“œ๋“ค์€ ๊ฐ™์€ super-step์—์„œ ๋™์‹œ์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค
์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋Š” ๋ณต์žกํ•œ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ๊ฐ ๋‹จ๊ณ„์˜ ์‹คํ–‰์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

 

 

1-3-2-1. ์ƒํƒœ ๊ด€๋ฆฌ ๊ธฐ์ดˆ - LangGraph ๊ฐ€์ด๋“œ๋ถ - ์—์ด์ „ํŠธ RAG with ๋žญ๊ทธ๋ž˜ํ”„

 

1-3-2-1. ์ƒํƒœ ๊ด€๋ฆฌ ๊ธฐ์ดˆ

## 1.1 ์ƒํƒœ ๊ด€๋ฆฌ๋ž€ ๋ฌด์—‡์ธ๊ฐ€? LangGraph์—์„œ ์ƒํƒœ ๊ด€๋ฆฌ๋Š” AI ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ์ƒํƒœ(State)๋Š” ์‹œ์Šคํ…œ์ด ์ฒ˜๋ฆฌํ•˜๋Š” ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋‹ด๋Š” ๊ทธ๋ฆ‡์ด๋ฉฐ, ๋…ธ๋“œ ๊ฐ„์— ๋ฐ…

wikidocs.net

 

 


spring ์—์„œ dto ๋‚˜ vo ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ , ๋žญ๊ทธ๋ž˜ํ”„์—์„œ๋Š” ๋ญ๋ผ๊ณ  ์ด๋ฆ„์„ ์ฃผ๋ฉด ์ข‹์„๊นŒ ?

 

 

์•„์ฃผ ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค.
์ด๊ฑด **Spring์‹ ์‚ฌ๊ณ (DTO/VO)**์—์„œ **LangGraph·MCP์‹ ์‚ฌ๊ณ (State/Message)**๋กœ ๋„˜์–ด์˜ค๋Š” ๊ฒฐ์ •์  ์ „ํ™˜ ์ง€์ ์ž…๋‹ˆ๋‹ค.
์งˆ๋ฌธ ์ฃผ์‹  ๋งฅ๋ฝ์„ ๊ธฐ์ค€์œผ๋กœ, ์™œ ์ด๋ฆ„์„ ๋ฐ”๊ฟ”์•ผ ํ•˜๊ณ  / ๋ฌด์—‡์ด ์ •๋‹ต์— ๊ฐ€๊นŒ์šด์ง€๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ์ •๋ฆฌํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ”‘ ๋จผ์ € ๊ฒฐ๋ก ๋ถ€ํ„ฐ

LangGraph์—์„œ๋Š” DTO / VO๋ผ๋Š” ์ด๋ฆ„์„ ์“ฐ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
๋Œ€์‹  “๊ทธ๋ž˜ํ”„์—์„œ ๋งก์€ ์—ญํ• (Role)” ์ค‘์‹ฌ์œผ๋กœ ์ด๋ฆ„์„ ๋ถ™์ด๋Š” ๊ฒŒ ์ •์„์ž…๋‹ˆ๋‹ค.

์ฆ‰,

  • Spring → ๊ณ„์ธต ๊ฐ„ ์ „๋‹ฌ
  • LangGraph → ์ƒํƒœ ๋ณ€ํ™”์™€ ํŒ๋‹จ ํ๋ฆ„

์ด ๊ด€์  ์ฐจ์ด๊ฐ€ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.


1๏ธโƒฃ ์™œ DTO / VO๋ฅผ ๊ทธ๋Œ€๋กœ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€

Spring์˜ DTO / VO ์ „์ œ

  • ์š”์ฒญ/์‘๋‹ต ์ค‘์‹ฌ
  • ๊ณ„์ธต ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ
  • ๋‹จ์ˆœ ๊ตฌ์กฐ์ฒด
  • “์–ด๋””์„œ ์™”๋Š”๊ฐ€”๊ฐ€ ์ค‘์š”

LangGraph์˜ ์ „์ œ

  • ์ƒํƒœ ๋จธ์‹ (State Machine)
  • ๋…ธ๋“œ ๊ฐ„ ๋ฉ”์‹œ์ง€ ํ๋ฆ„
  • ๋™์ผ ๋ฐ์ดํ„ฐ๋ผ๋„ ๋…ธ๋“œ ์œ„์น˜์— ๋”ฐ๋ผ ์˜๋ฏธ๊ฐ€ ๋ฐ”๋€œ
  • “๊ทธ๋ž˜ํ”„์—์„œ ๋ฌด์Šจ ์—ญํ• ์„ ํ•˜๋Š”๊ฐ€”๊ฐ€ ์ค‘์š”

๐Ÿ‘‰ ๊ทธ๋ž˜์„œ LangGraph์—์„œ๋Š”
๋ฐ์ดํ„ฐ = ๊ตฌ์กฐ + ์˜๋ฏธ + ๊ทธ๋ž˜ํ”„ ๋‚ด ์—ญํ• 
์ด ํ•จ๊ป˜ ๋“œ๋Ÿฌ๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

DTO/VO๋ผ๋Š” ์ด๋ฆ„์€ ์ด๊ฑธ ์ „ํ˜€ ์„ค๋ช…ํ•ด์ฃผ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.


2๏ธโƒฃ LangGraph์—์„œ์˜ ํ•ต์‹ฌ ๊ฐœ๋… 3๊ฐ€์ง€

Spring DTO/VO์— ๋Œ€์‘๋˜๋Š” ๊ฐœ๋…์€ ๋ณดํ†ต ์•„๋ž˜ ์…‹ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

  1. State
  2. Message
  3. Artifact / Payload / Record (๋ณด์กฐ ๊ฐœ๋…)

์ด๊ฒŒ ์‚ฌ์‹ค์ƒ LangGraph์˜ “๋ฐ์ดํ„ฐ ํƒ€์ž… ์‚ผ๋Œ€์žฅ”์ž…๋‹ˆ๋‹ค.


3๏ธโƒฃ 1์ˆœ์œ„: State (๊ฐ€์žฅ ์ •์„์ ์ธ ์„ ํƒ)

์–ธ์ œ ์“ฐ๋Š”๊ฐ€

  • ๊ทธ๋ž˜ํ”„ ์ „์ฒด์—์„œ ๋ˆ„์ ·๋ณ€ํ˜•๋˜๋Š” ๋ฐ์ดํ„ฐ
  • ์—ฌ๋Ÿฌ ๋…ธ๋“œ๊ฐ€ ์ฝ๊ณ /์ˆ˜์ •ํ•˜๋Š” ๊ณต์šฉ ์ƒํƒœ

์˜ˆ์‹œ

 
class SpamDetectionState(TypedDict): raw_text: str koelectra_score: float exaone_summary: str | None final_decision: str | None

์˜๋ฏธ

  • Spring์˜ DTO โŒ
  • ๊ทธ๋ž˜ํ”„์˜ ํ˜„์žฌ ์„ธ๊ณ„ ์ƒํƒœ(World State) โญ•

LangGraph ๊ณต์‹ ๋ฌธ์„œ์—์„œ๋„ ๊ฐ€์žฅ ๊ธฐ๋ณธ์œผ๋กœ ๊ถŒ์žฅ๋˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

์ถ”์ฒœ ์ ‘๋ฏธ์‚ฌ

  • State
  • GraphState
  • AgentState

๐Ÿ‘‰ Spring DTO์˜ 70% ์ด์ƒ์€ LangGraph์—์„œ State๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค.


4๏ธโƒฃ 2์ˆœ์œ„: Message (LLM·์—์ด์ „ํŠธ ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ)

์–ธ์ œ ์“ฐ๋Š”๊ฐ€

  • ๋…ธ๋“œ ๊ฐ„ “์˜์‚ฌ ํ‘œํ˜„”์ด ํ•„์š”ํ•  ๋•Œ
  • ํŒ๋‹จ, ์˜๊ฒฌ, ๊ทผ๊ฑฐ, ์„ค๋ช…์„ ์ „๋‹ฌํ•  ๋•Œ
  • LLM ์ž…·์ถœ๋ ฅ ๋‹จ์œ„

์˜ˆ์‹œ

 
class JudgementMessage(BaseModel): sender: Literal["koelectra", "exaone"] label: str confidence: float rationale: str

๋˜๋Š” LangChain ์Šคํƒ€์ผ:

  • HumanMessage
  • AIMessage
  • SystemMessage

์˜๋ฏธ

  • ๋‹จ์ˆœ ๋ฐ์ดํ„ฐ โŒ
  • ๋ฐœํ™”(Speech) + ํŒ๋‹จ(Opinion) โญ•

๐Ÿ‘‰ ํŒ๋…๊ธฐ / ํŒ๋ณ„๊ธฐ ๊ตฌ์กฐ์—์„œ๋Š” Message ๊ฐœ๋…์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.


5๏ธโƒฃ 3์ˆœ์œ„: Artifact / Payload / Record (๋ณด์กฐ ๊ฐœ๋…)

์–ธ์ œ ์“ฐ๋Š”๊ฐ€

  • State ์•ˆ์— ํฌํ•จ๋˜๋Š” ํ•˜์œ„ ๋ฐ์ดํ„ฐ
  • ๋ถˆ๋ณ€ ๋ฐ์ดํ„ฐ
  • ๋กœ๊ทธ·๊ทผ๊ฑฐ·๊ฒฐ๊ณผ๋ฌผ

์˜ˆ์‹œ

 
class SpamEvidence(BaseModel): model: str score: float features: dict class TrainingArtifact(BaseModel): dataset_id: str model_path: str

์ถ”์ฒœ ์ ‘๋ฏธ์‚ฌ ์ •๋ฆฌ

  • Payload → ์™ธ๋ถ€ I/O ๋ฐ์ดํ„ฐ
  • Artifact → ๊ฒฐ๊ณผ๋ฌผ, ํ•™์Šต ์‚ฐ์ถœ๋ฌผ
  • Record → ๋กœ๊ทธ, ์ด๋ ฅ

6๏ธโƒฃ Spring → LangGraph ๋งคํ•‘ ํ‘œ (์‹ค์ „ ๊ธฐ์ค€)

Spring ๊ฐœ๋…LangGraph ๊ถŒ์žฅ ์ด๋ฆ„์ด์œ 
Request DTO InputState / InitialState ๊ทธ๋ž˜ํ”„ ์ง„์ž…์ 
Response DTO OutputState / ResultState ๊ทธ๋ž˜ํ”„ ์ข…๋ฃŒ
VO Message / Artifact ์˜๋ฏธ ์ค‘์‹ฌ ๋ฐ์ดํ„ฐ
๊ณต์šฉ DTO GraphState ์ƒํƒœ ๋ˆ„์ 
Enum Policy / DecisionType ๊ทœ์น™ ์˜๋ฏธ ๊ฐ•์กฐ

7๏ธโƒฃ ์ŠคํŒธ ํ•„ํ„ฐ ํ”„๋กœ์ ํŠธ ๊ธฐ์ค€ “์ •๋‹ต ์กฐํ•ฉ”

ํ˜„์žฌ ๊ตฌ์กฐ:

  • KoELECTRA = ํŒ๋ณ„๊ธฐ
  • EXAONE = ํŒ๋…๊ธฐ
  • Reader → Decider → Policy → Notify

๐Ÿ‘‰ ์ด ๊ฒฝ์šฐ ์ถ”์ฒœ ์ด๋ฆ„์€ ๊ฑฐ์˜ ์ •ํ•ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์ƒ์œ„ ์ƒํƒœ

 
SpamFilterState

๋…ธ๋“œ ๊ฐ„ ํŒ๋‹จ

 
JudgementMessage DecisionMessage

์ •์ฑ… ๊ฒฐ๊ณผ

 
PolicyResult

์‚ฌ์šฉ์ž ์ „๋‹ฌ

 
NotificationPayload

๐Ÿ“Œ DTO / VO๋ผ๋Š” ๋‹จ์–ด๋Š” ์•„์˜ˆ ์“ฐ์ง€ ์•Š๋Š” ๊ฑธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
๋‚˜์ค‘์— ํŒ€์›์ด๋‚˜ ํ•™์ƒ์—๊ฒŒ ์„ค๋ช…ํ•  ๋•Œ๋„ ํ›จ์”ฌ ์ง๊ด€์ ์ž…๋‹ˆ๋‹ค.


8๏ธโƒฃ ํ•œ ์ค„ ์š”์•ฝ

LangGraph์—์„œ๋Š” “๋ฐ์ดํ„ฐ ํƒ€์ž…”์ด ์•„๋‹ˆ๋ผ
“๊ทธ๋ž˜ํ”„์—์„œ ๋งก์€ ์—ญํ• ”๋กœ ์ด๋ฆ„์„ ์ง“๋Š”๋‹ค.

  • ๊ธฐ๋ณธ์€ State
  • ํŒ๋‹จ·๋ฐœํ™”๋Š” Message
  • ๊ฒฐ๊ณผ๋ฌผ์€ Artifact / Payload

์›ํ•˜์‹œ๋ฉด
๐Ÿ‘‰ ์ง€๊ธˆ ์“ฐ๊ณ  ๊ณ„์‹  Spring DTO ์ด๋ฆ„๋“ค์„ LangGraph์‹์œผ๋กœ ์ „๋ถ€ ๋ฆฌ๋„ค์ด๋ฐํ•ด ๋“œ๋ฆด ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 


https://rudaks.tistory.com/entry/langgraph-How-to-call-tools-using-ToolNode

 

[langgraph] ToolNode๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„๊ตฌ(tool)๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•

LangGraph ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ฒˆ์—ญํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ถ€์—ฐ ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•˜์˜€๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์˜ˆ์ œ๋ฅผ ์ผ๋ถ€ ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋˜๋ฉด ์‚ญ์ œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.https://langchain-ai.github.io/langgraph/how-tos/tool-

rudaks.tistory.com

๋žญ๊ทธ๋ž˜ํ”„ , ํˆด๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํˆด์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•

 

 


๋„ค์ด๋ฒ„·SKT·์—…์Šคํ…Œ์ด์ง€๊ฐ€ ๋ฒ ๊ผˆ๋‹ค๊ณ ? 'ํ”„๋กฌ ์Šคํฌ๋ž˜์น˜' ๋…ผ๋ž€ ์™„๋ฒฝ ์ •๋ฆฌ

 

๋„ค์ด๋ฒ„·SKT·์—…์Šคํ…Œ์ด์ง€๊ฐ€ ๋ฒ ๊ผˆ๋‹ค๊ณ ? 'ํ”„๋กฌ ์Šคํฌ๋ž˜์น˜' ๋…ผ๋ž€ ์™„๋ฒฝ ์ •๋ฆฌ | ์š”์ฆ˜IT

 

๋„ค์ด๋ฒ„·SKT·์—…์Šคํ…Œ์ด์ง€๊ฐ€ ๋ฒ ๊ผˆ๋‹ค๊ณ ? 'ํ”„๋กฌ ์Šคํฌ๋ž˜์น˜' ๋…ผ๋ž€ ์™„๋ฒฝ ์ •๋ฆฌ | ์š”์ฆ˜IT

์ตœ๊ทผ IT ์—…๊ณ„๊ฐ€ ๋œจ๊ฒ๊ฒŒ ๋‹ฌ์•„์˜ฌ๋ž์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ AI ๊ตญ๊ฐ€๋Œ€ํ‘œ ์„ ๋ฐœ์ „ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ •๋ถ€๋Š” ๊ธ€๋กœ๋ฒŒ ๋น…ํ…Œํฌ์— ๋งž์„ค ๊ธฐ์ˆ  ์ฃผ๊ถŒ์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜์ฒœ์–ต ์›์˜ ์˜ˆ์‚ฐ์„ ํˆฌ์ž…, ‘๋…์ž AI ํŒŒ์šด๋ฐ์ด์…˜ ๋ชจ๋ธ’

yozm.wishket.com