None
Loading...

๐Ÿš€ [Project] AI ๋‚ด ์ง์› ๋งŒ๋“ค๊ธฐ: Function Calling์œผ๋กœ ์‹คํ˜„ํ•˜๋Š” ํ’ˆ์งˆ์˜ ํ‘œ์ค€ํ™”

64 | 2026-01-29 16:03 | AX | AI ์‹œ๋Œ€, ์™œ ์ฝ”๋”ฉ์„ ๋” ๋ฐฐ์›Œ์•ผ ํ• ๊นŒ์š”? TradeNPU์˜ Function Calling ํ†ตํ•ฉ๊ธฐ. MCP ๋Œ€์‹  Function Calling์„ ์„ ํƒํ•ด ์„œ๋น„์Šค ํ’ˆ์งˆ์„ ํ‘œ์ค€ํ™”ํ•œ ์ „๋žต๊ณผ Gemini SDK ํ™œ์šฉ ํŒ, ๊ทธ๋ฆฌ๊ณ  ๋น„์ „ ๋ชจ๋ธ๊ณผ ๋Œ€ํ™” ๊ธฐ์–ต์„ ๊ฒฐํ•ฉํ•œ ๋ณตํ•ฉ ํ•จ์ˆ˜ ์„ค๊ณ„ ๋…ธํ•˜์šฐ๋ฅผ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค.


๐ŸŽจ AI์˜ ์žฌ๋Šฅ์€ '์ฐฝ์ž‘'์ด์ง€ '์ •๋‹ต'์ด ์•„๋‹ˆ๋‹ค

์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์žŠ๋Š” ์‚ฌ์‹ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. AI๋Š” ๋ณธ์งˆ์ ์œผ๋กœ '์ฐฝ์˜์„ฑ'๊ณผ 'ํ™•๋ฅ ์  ์ƒ์„ฑ'์— ํŠนํ™”๋˜์–ด ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

  • AI์˜ ํŠน์ง•: ๊ฐ™์€ ์งˆ๋ฌธ์—๋„ ๋งค๋ฒˆ ๋‹ค๋ฅธ ๋‹ต์„ ๋‚ด๋†“์œผ๋ฉฐ, ๋•Œ๋กœ๋Š” 'ํ• ๋ฃจ์‹œ๋„ค์ด์…˜(ํ™˜๊ฐ)'์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์ฝฉํŠธ๋ฅผ ์„ ๋ณด์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ „ํ†ต์  ์ฝ”๋”ฉ์˜ ํŠน์ง•: Try-Except ๊ตฌ๋ฌธ์œผ๋กœ 100% ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๋น„์ฆˆ๋‹ˆ์Šค์—์„œ ๊ท ์งˆํ•œ ๊ฒฐ๊ณผ๋ฌผ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด, AI์—๊ฒŒ ๋ชจ๋“  ๊ฒƒ์„ ๋งก๊ธฐ๊ธฐ๋ณด๋‹ค ๊ธฐ์กด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋น„์ค‘์„ ๋†’์ด๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” ๊ฐํžˆ ๋งํ•ฉ๋‹ˆ๋‹ค. AI ์‹œ๋Œ€์ผ์ˆ˜๋ก ์ฝ”๋”ฉ์„ ๋” ๊นŠ๊ฒŒ ์•Œ์•„์•ผ ํ•œ๋‹ค๊ณ ์š”. ์ธ๊ฐ„๋งŒ์ด ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋Š” '๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง'๊ณผ '์‹ฌ๋ฆฌ์  ๋ณ€์ˆ˜'๋ฅผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋…น์—ฌ๋‚ด๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ ๊ฐœ๋ฐœ์ž์˜ ๋ชซ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.


 

๐Ÿ”„ ์ „๋žต์  ์šฐํšŒ: MCP ๋Œ€์‹  Function Calling์„ ๋จผ์ € ํƒํ•œ ์ด์œ 

MCP ์„œ๋ฒ„ ๊ตฌ์ถ• ์ค‘ fastapi-mcp ๋งˆ์šดํŠธ ์˜ค๋ฅ˜๋ผ๋Š” ๋ฒฝ์— ๋ถ€๋”ชํ˜”์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ  ์ž๋ฃŒ๋„ ๋ถ€์กฑํ•˜๊ณ , ์‹ฌ์ง€์–ด Gemini์กฐ์ฐจ MCP๋ฅผ '๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ'์˜ ๋ฌด์–ธ๊ฐ€๋กœ ์˜คํ•ดํ•˜๋Š” ์ƒํ™ฉ์ด์—ˆ์ฃ . ์—ฌ๊ธฐ์„œ ์ €๋Š” '์„ ์ˆ˜๋น„ ํ›„์—ญ์Šต'์˜ ์ž์„ธ๋กœ Function Calling์„ ๋จผ์ € ๋„์ž…ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

MCP vs Function Calling, ๋ฌด์—‡์ด ๋‹ค๋ฅผ๊นŒ?

  • MCP: AI๊ฐ€ ๋„๊ตฌํ•จ์—์„œ ์Šค์Šค๋กœ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•ด ๊ณผ์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์œ ์—ฐํ•˜์ง€๋งŒ ๊ฒฐ๊ณผ์˜ ํ’ˆ์งˆ์ด ๊ฐ€๋ณ€์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Function Calling: ๊ฐœ๋ฐœ์ž๊ฐ€ ์ •์˜ํ•œ ํ•จ์ˆ˜๋ฅผ AI๊ฐ€ ํ˜ธ์ถœํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๊ฐ’(JSON)์„ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ต๋ณ€์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์— ์žˆ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ค์ •ํ•œ ์ œ์•ฝ ๋‚ด์—์„œ๋งŒ ํ™œ๋™ํ•˜๋ฏ€๋กœ ํ›จ์”ฌ ์•ˆ์ „ํ•˜๊ณ  ๊ท ์งˆํ•œ ํ’ˆ์งˆ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ์ž‘์—…์„ ํ†ตํ•ด TradeNPU_AI๋ฅผ ์ „๋ฉด ๋ฆฌํŒฉํ† ๋งํ•˜๋ฉฐ, ํ–ฅํ›„ MCP ์„œ๋ฒ„๋ฅผ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ๋Š” 'MCP ํด๋ผ์ด์–ธํŠธ'๋กœ์„œ์˜ ๊ธฐ๋ฐ˜์„ 80% ์ด์ƒ ์™„์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.


 

๐Ÿ› ๏ธ ์‹ค์ „ ๊ธฐ๋ก: Function Calling ํ†ตํ•ฉ ๊ณผ์ •์˜ 3๊ฐ€์ง€ ํ•ต์‹ฌ ์ธ์‚ฌ์ดํŠธ

์ง์ ‘ ์ฝ”๋“œ๋ฅผ ์”น๊ณ  ๋œฏ์œผ๋ฉฐ ์–ป์€ ๋ผˆ์•„ํ”ˆ ์‹ค๋ฌด ํŒ๋“ค์„ ๋” ๊นŠ์ด ์žˆ๊ฒŒ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

1. "AI์˜ ๊ฐ€์Šค๋ผ์ดํŒ…์„ ์ฃผ์˜ํ•˜๋ผ": SDK ๋ฒ„์ „๊ณผ ๊ณต์‹ ๋ฌธ์„œ์˜ ๊ดด๋ฆฌ

AI ๊ธฐ์ˆ ์˜ ๋ฐœ์ „ ์†๋„๋Š” AI ์ž์‹ ์˜ ํ•™์Šต ๋ฐ์ดํ„ฐ ์†๋„์กฐ์ฐจ ์ถ”์›”ํ•˜๊ณค ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฌธ์ œ: Gemini์—๊ฒŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™œ์šฉ๋ฒ•์„ ๋ฌผ์–ด๋ณด๋ฉด, ์ด๋ฏธ Deprecated๋œ ์˜›๋‚  ๋ฐฉ์‹์˜ ํด๋ž˜์Šค๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. "๋‚˜๋Š” ์ด ํ•จ์ˆ˜๊ฐ€ ๋งž๋‹ค๊ณ  ๋ฏฟ์–ด!"๋ผ๋Š” AI์˜ ํ™•์‹ ์— ์ฐฌ ๋‹ต๋ณ€์— ์†์•„ ์ˆ˜ ์‹œ๊ฐ„์„ ํ—ˆ๋น„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ•ด๊ฒฐ: ๊ฒฐ๊ตญ '๊ณต์‹ ๋ฌธ์„œ(Docs)'๋ผ๋Š” ์„ฑ๊ฒฝ์œผ๋กœ ๋Œ์•„๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ Python SDK๋Š” ๋งˆ์ด๋„ˆ ์—…๋ฐ์ดํŠธ์—์„œ๋„ ํ˜ธ์ถœ ๊ทœ๊ฒฉ์ด ๋ณ€ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žฆ์œผ๋‹ˆ, AI์˜ ๋‹ต๋ณ€์€ ๊ฐ€์ด๋“œ๋กœ๋งŒ ์‚ผ๊ณ  ์‹ค์ œ ๊ตฌํ˜„ ์‹œ์—๋Š” ์ตœ์‹  SDK ๋ฌธ์„œ๋ฅผ ์˜†์— ๋„์›Œ๋‘๋Š” '๊ต์ฐจ ๊ฒ€์ฆ'์ด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

2. "๋ณต์žก์„ฑ์˜ ์ž„๊ณ„์ ": ์ŠคํŠธ๋ฆผ, ๋น„์ „, ๋ฉ”๋ชจ๋ฆฌ์˜ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜

๋‹จ์ˆœํ•œ ํ…์ŠคํŠธ ์ฑ—๋ด‡์„ ๋„˜์–ด์„  '์ง„์งœ AI ์ง์›'์„ ๋งŒ๋“œ๋Š” ๊ณผ์ •์€ ์ผ์ข…์˜ ์˜ค์ผ€์ŠคํŠธ๋ผ ์ง€ํœ˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํ†ตํ•ฉ์˜ ๋‚œ์ œ: ๋‹ต๋ณ€์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์˜์•„์ฃผ๋Š” Streaming, ์ด๋ฏธ์ง€๋ฅผ ์ฝ์–ด๋‚ด๋Š” Vision, ๊ณผ๊ฑฐ ๋Œ€ํ™”๋ฅผ ๊ธฐ์–ตํ•˜๋Š” Chat History, ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ์„œ๋ฒ„์— ๋‚จ๊ธฐ๋Š” DB Logging๊นŒ์ง€... ์ด ๋ชจ๋“  ๋กœ์ง์ด ํ•œ ๋ฒˆ์˜ API ํ˜ธ์ถœ(generate_content) ์•ˆ์— ๋…น์•„๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Great Leap: ํŠนํžˆ ์ด๋ฏธ์ง€ ์ธ์‹ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋ชจ๋ธ ์Šค์œ„์นญ ๋กœ์ง์ด ๋“ค์–ด๊ฐ€๊ณ , Function Calling์˜ ๊ฒฐ๊ณผ๊ฐ’๊นŒ์ง€ ๋‹ค์‹œ ์ŠคํŠธ๋ฆฌ๋ฐ ์‘๋‹ต์— ํƒœ์šฐ๋Š” ๊ณผ์ •์—์„œ ์ฝ”๋“œ์˜ ๋ณต์žก๋„๋Š” ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ฆฌํŒฉํ† ๋ง์œผ๋กœ ๊ธฐ๋ฐ˜์€ ๋‹ฆ์•˜์ง€๋งŒ, ํ–ฅํ›„ ๋™์˜์ƒ ์ธ์‹์ด๋‚˜ STT/TTS๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ๋ฅผ ๋Œ€๋น„ํ•ด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์›์ž ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ์„ค๊ณ„ ์—ญ๋Ÿ‰์ด ํ•ต์‹ฌ์ž„์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

3. "๋„๊ตฌํ•จ์˜ ์ •๋ˆ": Gemini ํŠน์œ ์˜ Tool ๊ตฌ์„ฑ ์ „๋žต

OpenAI์™€ Gemini๋Š” Function Calling์„ ๋Œ€ํ•˜๋Š” ๋ฌธ๋ฒ• ์ž์ฒด๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ํŠนํžˆ Gemini๋Š” ๋„๊ตฌ ๋“ฑ๋ก ๊ณผ์ •์ด ๋‹ค์†Œ ๊นŒ๋‹ค๋กญ์Šต๋‹ˆ๋‹ค.

  • ๊ตฌ์กฐ์  ์ฐจ์ด: ๋‹จ์ˆœํžˆ JSON ์Šคํ‚ค๋งˆ๋ฅผ ๋˜์ ธ์ฃผ๋Š” OpenAI์™€ ๋‹ฌ๋ฆฌ, Gemini๋Š” function_declarations๋ฅผ ์ •์˜ํ•œ ํ›„ ์ด๋ฅผ ๋‹ค์‹œ types.Tool ๊ฐ์ฒด๋กœ ๋ž˜ํ•‘ํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์‹ค๋ฌด์  ํŒ: ๋„๊ตฌ๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก main ์ฝ”๋“œ๋Š” ์ง€์ €๋ถ„ํ•ด์ง‘๋‹ˆ๋‹ค. ์ €๋Š” ๋„๊ตฌ์˜ JSON ์Šคํ‚ค๋งˆ์™€ ์‹ค์ œ ํŒŒ์ด์ฌ ํ•จ์ˆ˜๋ฅผ ๋ณ„๋„์˜ ๋…๋ฆฝ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

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


 

๐Ÿงญ ๋งˆ์น˜๋ฉฐ: ๋ณต์žก์„ฑ์ด๋ผ๋Š” ํŒŒ๋„๋ฅผ ๋„˜์–ด์„œ

ํ…์ŠคํŠธ ์ƒ์„ฑ๋ถ€ํ„ฐ ์ด๋ฏธ์ง€ ์ดํ•ด, Function Calling๊นŒ์ง€ ๋’ค์„ž์ธ ๊ฑฐ๋Œ€ํ•œ ํ•จ์ˆ˜๊ฐ€ ์™„์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์€ ์ž ์‹œ ๋‚ด๋ ค๋†“์•˜์ง€๋งŒ, TradeNPU_AI์˜ ๋Šฅ๋ ฅ์€ ๋น„์•ฝ์ ์œผ๋กœ ์ƒ์Šนํ–ˆ์Šต๋‹ˆ๋‹ค.

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

 


๐Ÿ’ก ์•ˆ๋‚ด: ์ด ํฌ์ŠคํŒ…์€ ๊ธฐ์กด ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ์˜ 9~11ํšŒ์ฐจ ์—ฐ์žฌ๋ถ„์„ ํ†ตํ•ฉ ๋ฐ ์žฌ๊ตฌ์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. MCP ์„œ๋ฒ„ ๊ตฌ์ถ• ๊ณผ์ •์—์„œ์˜ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๋’ค๋กœํ•˜๊ณ , ์™œ ์ง€๊ธˆ 'Function Calling'์— ์ง‘์ค‘ํ•ด์•ผ ํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ณผ์ •์—์„œ ์–ป์€ ๊ธฐ์ˆ ์  ๊ตํ›ˆ์„ ๋‹ด์•˜์Šต๋‹ˆ๋‹ค.







๐Ÿ’ก TradeNPU|Knowledge Basket์—์„œ
์‚ฌ์•ˆ์— ๋Œ€ํ•œ ๋” ๊นŠ์ด ์žˆ๋Š” ๋ฒ•๋ฅ  ๋ถ„์„๊ณผ ์‹ค๋ฌด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•ด ๋ณด์„ธ์š”.