AI agent

ํšŒ์‚ฌ์—์„œ ๋ฐ”๋กœ ์“ฐ๋Š” ์—…๋ฌด์ž๋™ํ™” AI ์—์ด์ „ํŠธ (w. n8n, LangGraph)arrow-up-right ๊ฐ•์˜๋ฅผ ์š”์•ฝํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

n8n

n8narrow-up-right

Flexible AI workflow automation

๋‹ค์–‘ํ•œ ์›น ์„œ๋น„์Šค, ์•ฑ, API๋“ค์„ ์—ฐ๊ฒฐํ•˜์—ฌ ์ž๋™ํ™” ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๋งŒ๋“œ๋Š” ์˜คํ”ˆ์†Œ์Šค ํ†ตํ•ฉ ํ”Œ๋žซํผ

n8n์€ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋…ธ๋“œ(Node)๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ฐ ๋…ธ๋“œ๋Š” ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘‰๐Ÿป n8n ์ปจํ…Œ์ด๋„ˆ ๊ตฌ๋™

docker volume create n8n_data

docker run -d -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

Email Agent

๐Ÿ‘‰๐Ÿป Gmail Actions

Gmail API ์‚ฌ์šฉํ•˜๊ธฐ

  • GCP consolearrow-up-right โ†’ API ๋ฐ ์„œ๋น„์Šค โ†’ API ๋ฐ ์„œ๋น„์Šค ์‚ฌ์šฉ ์„ค์ • โ†’ Gmail API -> ํ™œ์„ฑํ™”

  • ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋งŒ๋“ค๊ธฐ โ†’ OAuth ํด๋ผ์ด์–ธํŠธ ID ๋งŒ๋“ค๊ธฐ

Gmail API๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ action, trigger ๊ธฐ๋Šฅ์„ ์—ฐ๋™ ๊ฐ€๋Šฅ

๐Ÿ‘‰๐Ÿป Basic LLM Chain

๋‹ต์žฅ ์—ฌ๋ถ€ ํŒ๋‹จ

๋ชจ๋ธ ์—ฐ๊ฒฐ โ†’ Prompt โ†’

Chat Messages

Require Specific Output Format

์ด๋ฉ”์ผ ๋‹ต์žฅ ์ž‘์„ฑ

Prompt

Require Specific Output Format

์ด๋ฉ”์ผ ์ž‘์„ฑ ๋ด‡

System Messages

News Agent (Brave Search API)

๐Ÿ‘‰๐Ÿป Schedule Trigger

์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ํŠน์ • ์‹œ๊ฐ„์— ์ž๋™์œผ๋กœ ์‹œ์ž‘์‹œํ‚ค๋Š” ๋…ธ๋“œ

  • ์ง€์ •๋œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ(์˜ˆ: ๋งค์ผ ์˜ค์ „ 9์‹œ, ๋งค์ฃผ ์›”์š”์ผ, 15๋ถ„๋งˆ๋‹ค ๋“ฑ)์— ๋งž์ถฐ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋ฉฐ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์‹คํ–‰

  • America/New_York Timezone ์ด๋ฏ€๋กœ ํ•œ๊ตญ ์‹œ๊ฐ„๋Œ€ ๊ณ„์‚ฐ์ด ํ•„์š”

Brave Search ์—”์ง„์„ ์ด์šฉํ•ด ์›น ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ n8n ์›Œํฌํ”Œ๋กœ์šฐ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋…ธ๋“œ

  • ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ JSON ํ˜•ํƒœ๋กœ ๋ฐ›์•„์™€์„œ ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ํ™œ์šฉ

๐Ÿ‘‰๐Ÿป Code

์›Œํฌํ”Œ๋กœ์šฐ ๋‚ด์—์„œ JavaScript ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋…ธ๋“œ

  • n8n์˜ ๊ธฐ๋ณธ ๋…ธ๋“œ๋งŒ์œผ๋กœ๋Š” ํ•ด๊ฒฐํ•˜๊ธฐ ์–ด๋ ค์šด ๋ณต์žกํ•œ ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ • ํ˜•ํƒœ๋กœ ๊ฐ€๊ณตํ•ด์•ผ ํ•  ๋•Œ ์œ ์šฉ

  • n8n์˜ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ์ „๋‹ฌ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ”๋“œ ๋…ธ๋“œ์—์„œ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

๐Ÿ‘‰๐Ÿป Loop Over Items

์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐฐ์—ด(๋ฆฌ์ŠคํŠธ) ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ์•„์ดํ…œ๋“ค์„ ํ•˜๋‚˜์”ฉ ์ˆœํšŒํ•˜๋ฉฐ ๋ฐ˜๋ณต ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๋…ธ๋“œ

  • ๊ฐ ์•„์ดํ…œ์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ผ๋ จ์˜ ์ž‘์—…์„ ์ ์šฉ ๊ฐ€๋Šฅ

  • Batch Size ์ง€์ •

๐Ÿ‘‰๐Ÿป Basic LLM Chain

LangChainJS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ LLM๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋…ธ๋“œ

  • ๋ณต์žกํ•œ ์ฝ”๋”ฉ ์—†์ด๋„ ํ”„๋กฌํ”„ํŠธ ํ…œํ”Œ๋ฆฟ๊ณผ LLM์„ ์—ฐ๊ฒฐํ•˜์—ฌ ํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜, ์งˆ๋ฌธ-๋‹ต๋ณ€ ๊ธฐ๋Šฅ์„ ์›Œํฌํ”Œ๋กœ์šฐ์— ํ†ตํ•ฉ ๊ฐ€๋Šฅ

Prompt

Chat Messages

Require Specific Output Format

๐Ÿ‘‰๐Ÿป Append row in sheet

Google Sheets, Excel ๋“ฑ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ์„œ๋น„์Šค์— ์ƒˆ๋กœ์šด ํ–‰์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋…ธ๋“œ

  • ์›Œํฌํ”Œ๋กœ์šฐ์—์„œ ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์ข…์ ์œผ๋กœ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์— ์ •๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ

Google Drive & Google Sheets API

  • GCP consolearrow-up-right โ†’ API ๋ฐ ์„œ๋น„์Šค โ†’ API ๋ฐ ์„œ๋น„์Šค ์‚ฌ์šฉ ์„ค์ •

    • Google Drive API

    • Google Sheets API

  • ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋งŒ๋“ค๊ธฐ โ†’ OAuth ํด๋ผ์ด์–ธํŠธ ID ๋งŒ๋“ค๊ธฐ (๊ธฐ์กด ID ์‚ฌ์šฉ ๊ฐ€๋Šฅ)

  • ์‹œํŠธ์— ํ—ค๋” ์ถ”๊ฐ€ โ†’ Document & Sheet ์„ ํƒ โ†’ ํ—ค๋” ์ •๋ณด ์ž…๋ ฅ

Result

  • Brave News ์ถ”์ถœ (Brave Search)

  • ์ถ”์ถœ๋œ ์ •๋ณด๋ฅผ JSON ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ (Code)

  • Loop Over Items

  • ๋‰ด์Šค ๊ฐ์ • ๋ถ„์„ (Basic LLM Chain)

  • ๊ฒฐ๊ณผ๋ฅผ ์‹œํŠธ์— ์ถ”๊ฐ€ (Sheets)

News Agent (Naver HTTP Request)

๐Ÿ‘‰๐Ÿป HTTP Request

์›น์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ๋ณด๋‚ด๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋…ธ๋“œ

  • ํŠน์ • URL๋กœ HTTP ์š”์ฒญ(GET, POST, PUT, DELETE ๋“ฑ)์„ ๋ณด๋‚ด๊ณ , ๊ทธ ์‘๋‹ต์„ ๋ฐ›์•„ ์›Œํฌํ”Œ๋กœ์šฐ์— ํ†ตํ•ฉ

  • API์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์€ ๋Œ€๋ถ€๋ถ„ ์ด ๋…ธ๋“œ๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง

๐Ÿ‘‰๐Ÿป HTML

HTML ๋ฌธ์„œ์—์„œ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ

  • ์›น ์Šคํฌ๋ž˜ํ•‘(Web Scraping)์˜ ํ•ต์‹ฌ ๋…ธ๋“œ

  • CSS ์…€๋ ‰ํ„ฐ(Selector)๋ฅผ ์ด์šฉํ•ด ์›ํ•˜๋Š” ํƒœ๊ทธ๋‚˜ ํด๋ž˜์Šค, ์•„์ด๋””๋ฅผ ๊ฐ€์ง„ ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๊ณ  ๊ทธ ์•ˆ์˜ ํ…์ŠคํŠธ๋‚˜ ์†์„ฑ ๊ฐ’์„ ์ถ”์ถœ

๐Ÿ‘‰๐Ÿป Filter

๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ฑธ๋Ÿฌ๋‚ด๋Š” ๋…ธ๋“œ

  • ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ์„ค์ •๋œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜์—ฌ, ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ์ „๋‹ฌ

  • ์กฐ๊ฑด์€ ๋“ฑํ˜ธ, ๋ถ€๋“ฑํ˜ธ, ํฌํ•จ ์—ฌ๋ถ€, ์ •๊ทœ์‹ ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ์„ค์ •

๐Ÿ‘‰๐Ÿป Notion

Notion ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋˜๋Š” ํŽ˜์ด์ง€์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋…ธ๋“œ

  • Notion ๊ณ„์ •๊ณผ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ƒˆ๋กœ์šด ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, ๊ธฐ์กด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜, ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰

Notion Credential

notion integrationarrow-up-right โ†’ View my integrations โ†’ New API integration โ†’ Notion ์˜ต์…˜ โ†’ ์—ฐ๊ฒฐ โ†’ API integration ์—ฐ๊ฒฐ

Result

  • ๊ธฐ์‚ฌ ๋ชฉ๋ก ์š”์ฒญ (HTTP Request)

  • Loop Over Items

  • ๊ธฐ์‚ฌ ์ œ๋ชฉ & URL ์ถ”์ถœ (HTML)

  • ์ถ”์ถœ๋œ ์ •๋ณด๋ฅผ JSON ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ (Code)

  • Loop Over Items

  • ๊ธฐ์‚ฌ URL ์š”์ฒญ (HTTP Request)

  • ๊ธฐ์‚ฌ ๋‚ด์šฉ ์ถ”์ถœ (HTML)

  • ์—ฐ๊ด€์„ฑ ํŒŒ์•… (Basic LLM Chain)

  • ์—ฐ๊ด€์„ฑ์ด ์žˆ๋Š”์ง€ ํ•„ํ„ฐ๋ง (Filter)

  • ๋‰ด์Šค ๊ฐ์ • ๋ถ„์„ (Basic LLM Chain)

  • ๋…ธ์…˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ถ”๊ฐ€ (Notion)

n8n์„ ํ™œ์šฉํ•œ ์‚ฌ๋‚ด QnA Bot

๋ฐ์ดํ„ฐ ์ €์žฅ

๐Ÿ‘‰๐Ÿป Get rows in sheet

Google Sheets, Excel ๋“ฑ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์—์„œ ํŠน์ • ํ–‰๋“ค์„ ์ฝ์–ด์˜ค๋Š” ๋…ธ๋“œ

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

  • ex) ํŒŒ์ผ ๋งํฌ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ

๐Ÿ‘‰๐Ÿป Download file

ํŠน์ • URL์—์„œ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์›Œํฌํ”Œ๋กœ์šฐ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋…ธ๋“œ

  • ๋‹ค์šด๋กœ๋“œ๋œ ํŒŒ์ผ์€ ๋‹ค์Œ ๋…ธ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜

  • ex) ์ถ”์ถœ๋œ ํŒŒ์ผ ๋งํฌ๋ฅผ ์ฝ๊ณ  ํ•ด๋‹น ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ

๐Ÿ‘‰๐Ÿป Pinecone Vector Store

์ „๋ฌธ ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰

  • LLM ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ

Gemini

  • Pinecone Vector Store ๋…ธ๋“œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” Gemini ๋…ธ๋“œ๋Š” Google์˜ Gemini AI ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์—ญํ• ์„

  • ๋ฒกํ„ฐํ™”๋œ ๋ฐ์ดํ„ฐ๋Š” Pinecone ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜์–ด ์œ ์‚ฌ๋„ ๊ฒ€์ƒ‰์— ์‚ฌ์šฉ

Default Data Loader

  • ๋‹ค์–‘ํ•œ ์†Œ์Šค(์›น์‚ฌ์ดํŠธ, PDF, CSV ํŒŒ์ผ ๋“ฑ)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์—ญํ• 

  • ์ด ๋…ธ๋“œ๋Š” ํŠนํžˆ LLM ์›Œํฌํ”Œ๋กœ์šฐ์—์„œ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋ธ์— ์ž…๋ ฅํ•˜๊ธฐ ์ „์— ์ „์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ

  • Recursive Character Text Splitter

    • ๊ธธ๊ณ  ๋ณต์žกํ•œ ํ…์ŠคํŠธ๋ฅผ LLM์ด ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ ํ•ฉํ•œ ํฌ๊ธฐ์˜ '๋ฉ์–ด๋ฆฌ(chunk)'๋กœ ๋‚˜๋ˆ„๋Š” ์—ญํ• 

    • ํŠน์ • ๋ฌธ์ž(์˜ˆ: '\n\n', '\n', '.' ๋“ฑ)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ…์ŠคํŠธ๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ๋ถ„ํ• ํ•˜์—ฌ, ์˜๋ฏธ ์žˆ๋Š” ๋‹จ์œ„๊ฐ€ ์†์ƒ๋˜์ง€ ์•Š๋„๋ก ํ•จ

Bot using LLM Chain

๐Ÿ‘‰๐Ÿป When Chat message received

  • ํ…”๋ ˆ๊ทธ๋žจ, ์Šฌ๋ž™ ๋“ฑ ํŠน์ • ๋ฉ”์‹ ์ € ์ฑ„๋„์—์„œ ์ƒˆ๋กœ์šด ๋ฉ”์‹œ์ง€๊ฐ€ ์ˆ˜์‹ ๋˜์—ˆ์„ ๋•Œ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ž๋™์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ํŠธ๋ฆฌ๊ฑฐ ๋…ธ๋“œ

  • ์ฑ„ํŒ… ๊ธฐ๋ฐ˜์˜ ์ž๋™ํ™” ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ 

๐Ÿ‘‰๐Ÿป Basic LLM Chain

  • ๋ณต์žกํ•œ ๋ฌธ์„œ๋‚˜ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•˜๋Š” ๊ณ ๊ธ‰ ๋…ธ๋“œ

  • ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„, ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ ์†Œ์Šค์—์„œ ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ฐพ์•„๋‚ด๊ณ , ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ LLM์ด ์ž์—ฐ์–ด ๋‹ต๋ณ€์„ ์ƒ์„ฑ

  • RAG(Retrieval Augmented Generation) ๊ธฐ์ˆ ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ

Vector Store Retriever

  • ์งˆ๋ฌธ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํšจ์œจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ์—ญํ• 

  • ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ์„ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„, ์ด ๋ฒกํ„ฐ์™€ ์œ ์‚ฌํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„ ๊ธฐ์กด ๋ฌธ์„œ ๋ฒกํ„ฐ๋“ค์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํƒ์ƒ‰

  • ์ด ๋…ธ๋“œ๋ฅผ ํ†ตํ•ด LLM์€ ๋ฐฉ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์†์—์„œ ํ•„์š”ํ•œ ์ •๋ณด๋งŒ '๊ฒ€์ƒ‰'

Pinecone Vector Store

  • ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ•œ ์ข…๋ฅ˜๋กœ, Vector Store Retriever ๋…ธ๋“œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ

  • ์ด๊ณณ์— ์ €์žฅ๋œ ๋ฌธ์„œ ๋ฒกํ„ฐ๋“ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒ€์ƒ‰

  • LLM์ด ํ•™์Šตํ•˜์ง€ ์•Š์€ ์ตœ์‹  ๋ฐ์ดํ„ฐ๋‚˜ ์ „๋ฌธ ๋ฌธ์„œ์— ๋Œ€ํ•œ ์งˆ์˜์‘๋‹ต ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๋•Œ ์ฃผ๋กœ ํ™œ์šฉ

Embeddings Google Gemini

  • ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๊ธ€์˜ Gemini AI ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์—ญํ• 

  • ์งˆ๋ฌธ๊ณผ ๋ฌธ์„œ ๋ชจ๋‘ ์ด ๋…ธ๋“œ๋ฅผ ๊ฑฐ์ณ ๋ฒกํ„ฐํ™”๋˜๋ฉฐ, ์ด ๋ฒกํ„ฐ๋Š” Vector Store Retriever ๋…ธ๋“œ๋ฅผ ํ†ตํ•ด Pinecone ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰์— ์‚ฌ์šฉ

Bot using AI Agent

๐Ÿ‘‰๐Ÿป AI Agent

LLM์„ ์ด์šฉํ•ด ๋ณต์žกํ•œ ์ž‘์—…์„ ์Šค์Šค๋กœ ๊ณ„ํšํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ฒŒ ํ•˜๋Š” ๊ณ ๊ธ‰ ๋…ธ๋“œ

  • ๋‹จ์ˆœํžˆ ํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด, ์—ฌ๋Ÿฌ ๋„๊ตฌ๋ฅผ ์กฐํ•ฉํ•˜๊ณ  ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ํ•˜์—ฌ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑ

System Message

Pinecone Vector Store tool

  • AI Agent๊ฐ€ Pinecone ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ '๋„๊ตฌ'๋กœ ์‚ฌ์šฉ

  • AI Agent๋Š” ์ด ๋„๊ตฌ๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํŠน์ • ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜, ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์›Œํฌํ”Œ๋กœ์šฐ ๋‚ด์—์„œ ์ˆ˜ํ–‰

tool Description

Text-to-SQL

Text-to-SQL

  • ์ž์—ฐ์–ด(์˜์–ด๋‚˜ ํ•œ๊ตญ์–ด)๋ฅผ SQL๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ 

  • AI๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ

๐Ÿ‘‰๐Ÿป When chat message received

๐Ÿ‘‰๐Ÿป ํ…Œ์ด๋ธ” ์ด๋ฆ„ ๊ฐ€์ ธ์˜ค๊ธฐ

Postgres Execute a SQL query

๐Ÿ‘‰๐Ÿป ํ…Œ์ด๋ธ” ์ •๋ณด ํ•ฉ์น˜๊ธฐ

Code

๐Ÿ‘‰๐Ÿป ํ…Œ์ด๋ธ” ๋ฆฌ์ŠคํŠธ ์ถ”์ถœ

Basic LLM Chain

Prompt

System Message

structured Output Parser

๐Ÿ‘‰๐Ÿป ์Šคํ‚ค๋งˆ ์กฐํšŒ

Postgres Execute a SQL query

๐Ÿ‘‰๐Ÿป ์Šคํ‚ค๋งˆ ์ •๋ณด ํ•ฉ์น˜๊ธฐ

Code

๐Ÿ‘‰๐Ÿป ์ฟผ๋ฆฌ ์ƒ์„ฑ

Basic LLM Chain

Prompt

System message

Structured Output Parser

๐Ÿ‘‰๐Ÿป ์ฟผ๋ฆฌ ์‹คํ–‰

Postgres Execute a SQL query

๐Ÿ‘‰๐Ÿป ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ๋‹ค๋“ฌ๊ธฐ

Basic LLM Chain

Prompt

System Message

MCP

Introducing the Model Context Protocolarrow-up-right

MCP Doc.arrow-up-right

MCP ์šฉ์–ด

Protocol

  • ํ†ต์‹  ๊ณ„์•ฝ์„œ

  • ์›น ๊ฐœ๋ฐœ์˜ HTTP ํ†ต์‹ ๊ณผ ์œ ์‚ฌ

  • HTTP = Hypertext Transfer Protocol (์›น ํ†ต์‹  ๊ณ„์•ฝ)

  • MCP = ๋ชจ๋ธ๊ณผ ์ปจํ…์ŠคํŠธ ๊ฐ„์˜ ํ†ต์‹  ๊ณ„์•ฝ

Model

  • LLM ๋ชจ๋ธ์„ ์˜๋ฏธ

  • GPT, Anthropic์˜ Claude, Gemini ๋“ฑ

  • ํ•œ๊ตญ์˜ Upstage Solar ๋ชจ๋ธ ๋“ฑ ํฌํ•จ

Context

  • LLM์— ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ์ž˜ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” ์ •๋ณด

  • MCP๋ฅผ ํ†ตํ•ด ํ”„๋กฌํ”„ํŠธ์™€ ํˆด ๊ด€๋ฆฌ ๊ฐ€๋Šฅ

  • ํ•œ๊ตญ์–ด๋กœ๋Š” "AI์—๊ฒŒ ์ปจํ…์ŠคํŠธ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ํ”„๋กœํ† ์ฝœ"

MCP์˜ ์žฅ์ 

ํ”„๋กœํ† ์ฝœ์˜ ๋ฒ”์šฉ์„ฑ

  • HTTP ํ†ต์‹ ์ฒ˜๋Ÿผ ์„œ๋ฒ„ ์–ธ์–ด(Java, Python, Node)์— ๊ด€๊ณ„์—†์ด ํ†ต์‹  ๊ฐ€๋Šฅ

  • ๋‹ค์–‘ํ•œ ๋ชจ๋ธ ์ง€์› ๊ฐ€๋Šฅ

USB-C ํฌํŠธ ๋น„์œ 

  • ๊ณต์‹ ๋ฌธ์„œ์—์„œ "AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ USB-C ํฌํŠธ"๋กœ ํ‘œํ˜„

  • ์–ด๋Œ‘ํ„ฐ๋ฅผ ํ†ตํ•ด ๋ชจ๋“  MCP ์„œ๋ฒ„์™€ ๋ชจ๋“  MCP ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ

Code Review Agent with MCP

github-mcp-serverarrow-up-right

Slack MCP Serverarrow-up-right

ref. MCP๋ฅผ ํ™œ์šฉํ•œ ์ฝ”๋“œ๋ฆฌ๋ทฐ ์—์ด์ „ํŠธ ์ƒ์„ฑํ•˜๊ธฐarrow-up-right

Video Summary Agent

OpenAI Whisper๋ฅผ ํ™œ์šฉํ•œ ์˜์ƒ ์š”์•ฝarrow-up-right

Reference

uv Libearyarrow-up-right

  • An extremely fast Python package and project manager, written in Rust.

zeroxarrow-up-right

  • A dead simple way of OCR-ing a document for AI ingestion. Documents are meant to be a visual representation after all. With weird layouts, tables, charts, etc. The vision models just make sense!

Lecture Materials

Last updated