Skip to content

kyopark2014/langgraph-agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

1,071 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

LangGraph๋กœ ๊ตฌํ˜„ํ•˜๋Š” Agentic Workflow

License

LangGraph Agent

Agent๋ž€ ์ฃผ๋ณ€ ํ™˜๊ฒฝ์„ ํƒ์ง€ํ•˜์—ฌ ์ž์œจ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์žฅ์น˜ ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. agent์˜ ๋ผํ‹ด์–ด ์–ด์›์ธ agere์˜ ๋œป์€ to do ๋˜๋Š” to act์˜ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

LangGraph๋Š” agent๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์—ฌ๋Ÿฌ๊ฐœ์˜ agent๊ฐ€ ์žˆ์„๋•Œ์˜ ํ๋ฆ„์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ LangChain์˜ Extention์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด cycle flow๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‚ด์žฅ๋˜์–ด Agent๋ฅผ ์ƒ์„ฑ์— ๋„์›€์„ ์ค๋‹ˆ๋‹ค. ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ LangGraph guide์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด agent๋Š” serverless architecture๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์‚ฌ์šฉ์ž๊ธฐ ์งˆ๋ฌธ์„ ์ž…๋ ฅํ•˜๋ฉด webSocket ๋ฐฉ์‹์œผ๋กœ API Gateway๋กœ ์งˆ๋ฌธ์ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.
  2. Lambda์—์„œ๋Š” LangGraph ํ˜•ํƒœ๋กœ agent๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ๋Š” Corrective RAG, Self RAG, Self corrective RAG๋ฅผ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  3. ์งˆ๋ฌธ์— ๊ด€๋ จ๋œ ๋ฌธ์„œ๋ฅผ OpenSearch๋ฅผ ํ†ตํ•ด ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, child/parent chunking์„ ์ด์šฉํ•ด ์ž‘์€ ํฌ๊ธฐ์˜ chunk๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋ฉด์„œ๋„ Parent Chunk๋ฅผ ๋ฌธ์„œ๋กœ ํ™œ์šฉํ•˜์—ฌ ํ’๋ถ€ํ•œ context๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  4. OpenSearch๋กœ ์–ป์–ด์ง„ ๊ด€๋ จ๋œ ๋ฌธ์„œ๋Š” LLM Prompt๋ฅผ ์ด์šฉํ•ด ๊ด€๋ จ๋„๋ฅผ ํ‰๊ฐ€(grade) ํ•ฉ๋‹ˆ๋‹ค. ํ‰๊ฐ€ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์›น๊ฒ€์ƒ‰์„ ์ด์šฉํ•œ fallback ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. LLM์— ๊ด€๋ จ๋œ ๋ฌธ์„œ๋ฅผ context๋กœ ์ œ๊ณตํ•˜์—ฌ ์ ์ ˆํ•œ ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‹ต๋ณ€์ด ํ™˜๊ฐ(hallucination)์ธ์ง€, ์ ์ ˆํ•œ ๋‹ต๋ณ€์ด ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€๋ฅผ LLM prompt๋ฅผ ์ด์šฉํ•ด ํ‰๊ฐ€(grade)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
image

langgraph-agent.md์—์„œ๋Š” LangGraph Agent์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์„ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Agentic Workflow Design Patterns

์—ฌ๊ธฐ์„œ๋Š” ๋Œ€ํ‘œ์ ์ธ agentic workflow์˜ 4๊ฐ€์ง€ ํŒจํ„ด์ธ tool use, reflection, plan and execute, multi-agent collaboration์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Tool Use

agent-executor.md์—์„œ๋Š” LangGraph๋ฅผ ์ด์šฉํ•ด ๊ฐ์ข… Tool์„ ์‹คํ–‰ํ•˜๋Š” agent๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” agent executor์˜ activity diagram์ž…๋‹ˆ๋‹ค.

Reflection

Reflection์„ ํ†ตํ•ด LLM์˜ ์‘๋‹ต์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ์ถฉ๋ถ„ํ•œ ์ปจํ…์ธ ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. knowledge-guru.md์—์„œ๋Š” OpenSearch์™€ Tavily ๊ฒ€์ƒ‰์œผ๋กœ ์–ป์–ด์ง„ ์ •๋ณด๋กœ ์ดˆ์•ˆ(draft)๋ฅผ ๋งŒ๋“ค๊ณ , ๊ฒ€์ƒ‰์„ ์œ„ํ•œ keyword๋ฅผ ์ถ”์ถœํ•˜์—ฌ ๋‹ค์‹œ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹ต๋ณ€์„ ํ–ฅ์ƒ์‚ฌํ‚ค๋Š”(revise) ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

image

Plan and Execute

plan-and-execuite.md์—์„œ๋Š” Plan and Execute ๋ฐฉ์‹์˜ Agent๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

image

Multi-agent Collaboration

long-form-writing.md์—์„œ๋Š” plan and execute ํŒจํ„ด์„ ๊ฐ€์ง€๋Š” agent์™€ reflection์„ ์ˆ˜ํ–‰ํ•˜๋Š” agent๋ฅผ ์ด์šฉํ•˜์—ฌ instruction์œผ๋กœ ์žฅ๋ฌธ์˜ ๊ธ€์“ฐ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. Multi agent ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ•จ์œผ๋กœ์จ ๋ณต์žกํ•œ workflow๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Case Studies

Reflection

reflection-agent.md์—์„œ๋Š” LangGraph๋ฅผ ์ด์šฉํ•ด Reflection์„ ๋ฐ˜์˜ํ•˜๋Š” Agent๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Agentic RAG

Agentic RAG๋Š” tool_condition์„ ํ†ตํ•ด RAG์— retrival์„ ์„ ํƒํ•˜๊ณ , ๋ฌธ์„œ๋ฅผ ํ‰๊ฐ€(grade)ํ•˜์—ฌ, ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ๋งŒ์กฑ์Šค๋Ÿฝ์ง€ ์•Š๋‹ค๋ฉด re-write๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ์งˆ๋ฌธ(better question)์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ agentic-rag.md์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

image

Corrective RAG

corrective-rag-agent.md์—์„œ๋Š” Corrective RAG์„ ์ด์šฉํ•œ RAG ์„ฑ๋Šฅ ๊ฐ•ํ™”์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. Corrective RAG๋Š” Vector Store์—์„œ ๊ฐ€์ ธ์˜จ ๋ฌธ์„œ๋ฅผ Refineํ•˜๊ณ  ๊ด€๋ จ์„ฑ์ด ์ ์€ ๋ฌธ์„œ๋Š” ์ œ์™ธํ•˜๊ณ , ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋‚˜ Web ๊ฒ€์ƒ‰์„ ํ†ตํ•ด RAG์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์€ Corrective RAG์— ๋Œ€ํ•œ activity diagram์ž…๋‹ˆ๋‹ค.

  1. "retrieve"๋Š” ์งˆ๋ฌธ(Question)์„ ์ด์šฉํ•˜์—ฌ, RAG์˜ Vector Store๋กœ ์กฐํšŒ(retrieve) ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ k๊ฐœ์˜ ๊ด€๋ จ๋œ ๋ฌธ์„œ(relevant docuements)์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  2. "grade_documents"๋Š” LLM prompt๋ฅผ ์ด์šฉํ•˜์—ฌ Vector Store์—์„œ ๊ฐ€์ ธ์˜จ ๋ฌธ์„œ๊ฐ€ ์‹ค์ œ๋กœ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ จ์ด ์žˆ์œผ๋ฉด "yes", ์—†์œผ๋ฉด "no"๋ฅผ ํŒ๋ณ„(grade)ํ•˜๋Š”๋ฐ, "no"์ธ ๊ฒฝ์šฐ์— ๊ด€๋ จ๋œ ๋ฌธ์„œ์—์„œ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ด€๋ จ๋œ ๋ฌธ์„œ๊ฐ€ ๊ด€๋ จ์„ฑ์ด ์—†์–ด ์ œ์™ธ๋˜๋ฉด, "web_search"๋ฅผ True๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  3. "decide_to_generate"๋Š” Vector Store์—์„œ ๊ฐ€์ ธ์˜จ ๋ชจ๋“  ๋ฌธ์„œ๊ฐ€ ๊ด€๋ จ์ด ์žˆ๋‹ค๋ฉด, "web_search"๋ฅผ "yes"๋กœ ์„ค์ •ํ•˜๊ณ , ์•„๋‹ˆ๋ผ๋ฉด "no๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด์™€๊ฐ™์ด ๊ด€๋ จ๋œ ๋ฌธ์„œ์ค‘์— ์ผ๋ถ€๋ผ๋„ ๊ด€๋ จ์ด ์ ๋‹ค๊ณ  ํŒ์ •๋˜๋ฉด, ์›น ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ด€๋ จ๋œ ๋ฌธ์„œ๋ฅผ ๋ณด๊ฐ•ํ•ฉ๋‹ˆ๋‹ค.
  4. "web_search"๊ฐ€ "yes"๋ผ๋ฉด (์›น ๊ฒ€์ƒ‰์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ), ๊ธฐ์กด ์งˆ๋ฌธ์œผ๋กœ ๋ถ€ํ„ฐ ํ–ฅ์ƒ๋œ ์งˆ๋ฌธ(better_question)์„ ์ƒ์„ฑํ•˜๋Š” re-write๋ฅผ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด "rewrite"๋Š” LLM Prompt๋ฅผ ์ด์šฉํ•˜์—ฌ, ์ถฉ๋ถ„ํžˆ ์˜๋„(sementic intent)์™€ ์˜๋ฏธ(meaning)์„ ๊ฐ€์ง€๋„๋ก ํ–ฅ์ƒ๋œ ์งˆ๋ฌธ(better_question)์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  5. "web search"๋Š” ๊ธฐ์กด ๋ฌธ์„œ(filtered_document)์— ์›น ๊ฒ€์ƒ‰์œผ๋กœ ์–ป์–ด์ง„ ์ƒˆ๋กœ์šด ๊ด€๋ จ๋œ ๋ฌธ์„œ๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ๋ฌธ์„œ(documents)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  6. "generate"์—์„œ๋Š” ๊ด€๋ จ๋œ ๋ฌธ์„œ(documents)๋ฅผ context๋กœ ํ™œ์šฉํ•˜์—ฌ ์ ์ ˆํ•œ ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Self RAG

Self RAG๋Š” RAG์˜ vector store์—์„œ ์–ป์–ด์ง„ ๋ฌธ์„œ๋“ค์˜ ๊ด€๋ จ์„ฑ์„ ํ™•์ธ(Grade)ํ•˜์—ฌ ๊ด€๋ จ์„ฑ์ด ์ ์€ ๋ฌธ์„œ๋ฅผ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์–ป์–ด์ง„ ๋‹ต๋ณ€์ด ํ™˜๊ฐ(hallucination)์ธ์ง€, ์ถฉ๋ถ„ํ•œ ์ž˜ ์ž‘์„ฑ๋œ ๋‹ต๋ณ€์ธ์ง€ ํ™•์ธํ•˜์—ฌ, ๋‹ต๋ณ€์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฉด ์งˆ๋ฌธ์„ re-writeํ•˜์—ฌ RAG ๋™์ž‘์„ ์žฌ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด RAG์˜ ๊ฒฐ๊ณผ๋ฅผ ํ–ฅ์ƒ ์‹œํ‚ฌ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ Self RAG์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” Self RAG์— ๋Œ€ํ•œ activity diagram์ž…๋‹ˆ๋‹ค.

  1. "retrive"๋Š” ์งˆ๋ฌธ(question)์„ ์ด์šฉํ•˜์—ฌ Vector Store์— ๊ด€๋ จ๋œ ๋ฌธ์„œ๋ฅผ ์กฐํšŒ(retrieve)ํ•ฉ๋‹ˆ๋‹ค.
  2. "grade_documents"๋Š” LLM Prompt๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์„œ(documents)์˜ ๊ด€๋ จ์„ฑ์„ ํ™•์ธ(grade)ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ จ์ด ์—†๋Š” ๋ฌธ์„œ๋Š” ์ œ์™ธํ•˜์—ฌ "filtered documents"๋กœ ์ œ์กฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  3. "decide_to_generate"๋Š” "filtered document"๋ฅผ "generate"๋กœ ๋ณด๋‚ด์„œ ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. "filtered document"๊ฐ€ ์—†๋‹ค๋ฉด ์ƒˆ๋กœ์šด ์งˆ๋ฌธ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด "rewrite" ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  4. "rewrite"๋Š” ๊ธฐ์กด ์งˆ๋ฌธ(question)์„ ์ด์šฉํ•˜์—ฌ LLM Prompt๋กœ ์ƒˆ๋กœ์šด ์งˆ๋ฌธ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์งˆ๋ฌธ(better question)์€ "retrieve"์— ์ „๋‹ฌ๋˜์–ด, ์ƒˆ๋กœ์šด ์งˆ๋ฌธ์œผ๋กœ RAG ๋™์ž‘์„ ์žฌ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. "generate"๋Š” "filtered documents"๋ฅผ ์ด์šฉํ•˜์—ฌ ์ ์ ˆํ•œ ๋‹ต๋ณ€(generation)์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  6. "grade_generation"์€ ์ƒ์„ฑ๋œ ๋‹ต๋ณ€์ด ํ™˜๊ฐ(hallucination)์ธ์ง€ ํ™•์ธํ•˜์—ฌ, ๋งŒ์•ฝ ํ™˜๊ฐ์ด๋ผ๋ฉด "generator"์— ๋ณด๋‚ด ๋‹ค์‹œ ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•˜๊ณ , ํ™˜๊ฐ์ด ์•„๋‹ˆ๋ผ๋ฉด ๋‹ต๋ณ€์ด ์ ์ ˆํ•œ์ง€ "answer_question"๋กœ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ๋‹ต๋ณ€์ด ์ ์ ˆํ•˜๋‹ค๋ฉด(useful) ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์ „๋‹ฌํ•˜๊ณ , ์ ์ ˆํ•˜์ง€ ์•Š๋‹ค๋ฉด(not_useful) ์งˆ๋ฌธ์„ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด "rewrite"ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„๋กœ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ์งˆ๋ฌธ์€ "retrieve"์— ์ „๋‹ฌ๋˜์–ด RAG ์กฐํšŒ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

image

Self-Corrective RAG

Self-Corrective RAG๋Š” Corrective RAG์ฒ˜๋Ÿผ vector store๋กœ ๋ถ€ํ„ฐ ์–ป์–ด์ง„ ๋ฌธ์„œ์˜ ๊ด€๋ จ์„ฑ์„ ํ™•์ธํ•˜์—ฌ ๊ด€๋ จ์„ฑ์ด ์—†๋Š” ๋ฌธ์„œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์›น ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ฐ•ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, Self RAG์ฒ˜๋Ÿผ RAG์˜ ๊ฒฐ๊ณผ๊ฐ€ ํ™˜๊ฐ(hallucination)์ธ์ง€, ์ ์ ˆํ•œ ๋‹ต๋ณ€์ธ์ง€ ๊ฒ€์ฆํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ self-corrective-rag.md์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” Self-Corrective RAG์— ๋Œ€ํ•œ acitivity diagram์ž…๋‹ˆ๋‹ค.

  1. "retrieve"๋Š” ์งˆ๋ฌธ(question)๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์„œ๋ฅผ Vector Store๋ฅผ ํ†ตํ•ด ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, "grade_generation" ๋™์ž‘์„ ์œ„ํ•ด "web_fallback"์„ True๋กœ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  2. "generator"๋Š” Vector Store์—์„œ ์–ป์–ด์ง„ ๊ด€๋ จ๋œ ๋ฌธ์„œ(documents)๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ต๋ณ€(generation)์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, retries count๋ฅผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
  3. "grade_generation"์€ "web_fallback"์ด True์ด๋ผ๋ฉด, "hallucination"๊ณผ "answer_question"์—์„œ ํ™˜๊ฐ ๋ฐ ๋‹ต๋ณ€์˜ ์ ์ ˆ์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํ™˜๊ฐ์ผ ๊ฒฝ์šฐ์—, ๋ฐ˜๋ณต ํšŸ์ˆ˜(retries)๊ฐ€ "max_retries"์— ๋„๋‹ฌํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด "generate"๋ณด๋‚ด์„œ ๋‹ต๋ณ€์„ ๋‹ค์‹œ ์ƒ์„ฑํ•˜๊ณ , "max_retires"์— ๋„๋‹ฌํ–ˆ๋‹ค๋ฉด "websearch"๋กœ ๋ณด๋‚ด์„œ ์›น ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹ต๋ณ€์ด ์ ์ ˆํ•˜์ง€ ์•Š๋‹ค๋ฉด, ๋ฐ˜๋ณต ํšŸ์ˆ˜๊ฐ€ "max_reties"์— ๋„๋‹ฌํ•˜๊ธฐ ์•Š์•˜๋‹ค๋ฉด, "rewrite"๋กœ ๋ณด๋‚ด์„œ ํ–ฅ์ƒ๋œ ์งˆ๋ฌธ(better question)์„ ์ƒ์„ฑํ•˜๊ณ , ๋„๋‹ฌํ•˜์˜€๋‹ค๋ฉด "websearch"๋กœ ๋ณด๋‚ด์„œ ์›น ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  4. "websearch"๋Š” ์›น ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ๋ฌธ์„œ๋ฅผ ๋ณด๊ฐ•ํ•˜๊ณ , "generate"์— ๋ณด๋‚ด์„œ ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, "web_fallback"์„ False๋กœ ์„ค์ •ํ•˜์—ฌ "grade_generation"์—์„œ "finalized_response"๋กœ ๋ณด๋‚ด๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  5. "rewrite"๋Š” ์ƒˆ๋กœ์šด ์งˆ๋ฌธ(better question)์„ ์ƒ์„ฑํ•˜์—ฌ, "retrieve"์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์งˆ๋ฌธ์œผ๋กœ ์ „์ฒด RAG ๋™์ž‘์„ ์žฌ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด RAG ๋™์ž‘์€ ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ, "max_retries"๋งŒํผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  6. "finalize_response"๋Š” ์ตœ์ข… ๋‹ต๋ณ€์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

image

Human-in-the-loop (HIL)

Workflow์—์„œ Human์˜ interation์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ checkpoint๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. Human-in-the-loop (HIL)์—์„œ๋Š” Human-in-the-loop (HIL)์„ ๊ตฌํ˜„ํ•˜๋Š”๊ฒƒ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. Plan and Execute๋Š” Plan-and-Solve์™€ ๊ฐ™์ด CoT ๋ฐฉ์‹์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

Easy Writer

Essay Writer์—์„œ๋Š” essay๋ฅผ ์ž‘์„ฑํ•˜๋Š” Agent๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

image

AgentWrite

AgentWrite LangGraph๋Š” Agent๋ฅผ ์ด์šฉํ•œ Write ๊ณผ์ •์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ธํ•œ ์„ค๋ช…์€ AgentWrite with LangGraph - Youtube๋ฅผ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

ย ย 

Multi Agent

multi-agent.md์—์„œ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ Agent๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

image

Map Reduce

Map Reduce์—์„œ๋Š” Map Reduce ํŒจํ„ด์˜ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

RAG with Reflection

RAG with Reflection์—์„œ๋Š” Reflection์œผ๋กœ RAG์˜ ์„ฑ๋Šฅ์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

RAG with Query Transformation

RAG with Query Transformation์—์„œ๋Š” RAG์˜ ์ „์ฒ˜๋ฆฌ๋กœ rewrite์™€ decompse๋ฅผ ์ˆ˜ํ–‰ํ•จ์œผ๋กœ์จ RAG์˜ ์„ฑ๋Šฅ์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

Data Enrichment

data-enrichment-agent.md์—์„œ๋Š” schema๋ฅผ ์ด์šฉํ•ด ์›น์—์„œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” agent์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

noname

Reference

  • reflexion-agent.md์—์„œ๋Š” Reflexion๋ฐฉ์‹์˜ Agent์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • persistence-agent.md์—์„œ๋Š” checkpoint๋ฅผ ์ด์šฉํ•ด ์ด์ „ state๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  • olympiad-agent.md์—์„œ๋Š” Reflection, Retrieval, Human-in-the-loop๋ฅผ ์ด์šฉํ•ด Olympiad ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๊ฒƒ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • code-agent.md์—์„œ๋Š” LangGraph๋ฅผ ์ด์šฉํ•ด code๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

  • email-agent.md์—์„œ๋Š” LangGraph๋ฅผ ์ด์šฉํ•ด email์„ ์ƒ์„ฑํ•˜๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

  • support-bot-agent.md์—์„œ๋Š” ๊ณ ๊ฐ ์ง€์›ํ•˜๋Š” Bot์„ Agent๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • language-agent-tree-search.md์—์„œ๋Š” Tree Search ๋ฐฉ์‹์˜ Agent๋ฅผ ๋งŒ๋“œ๋Š”๊ฒƒ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • rewoo.md์—์„œ๋Š” Reasoning without Observation ๋ฐฉ์‹์˜ Agent์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • llm-compiler.md์—์„œ๋Š” "An LLM Compiler for Parallel Function Calling"์„ ๊ตฌํ˜„ํ•˜๋Š”๊ฒƒ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • stome-agent.md์—์„œ๋Š” ํ’๋ถ€ํ•œ ๊ธฐ์‚ฌ๋ฅผ ์ƒ์„ฑ(richer article generation) Storm Agent์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • GPT Newspape์—์„œ๋Š” ์‹ ๋ฌธ์š”์•ฝ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. (github ๋งํฌ)

์ง์ ‘ ์‹ค์Šต ํ•ด๋ณด๊ธฐ

์‚ฌ์ „ ์ค€๋น„ ์‚ฌํ•ญ

์ด ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์‚ฌ์ „์— ์•„๋ž˜์™€ ๊ฐ™์€ ์ค€๋น„๊ฐ€ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

CDK๋ฅผ ์ด์šฉํ•œ ์ธํ”„๋ผ ์„ค์น˜

๋ณธ ์‹ค์Šต์—์„œ๋Š” us-west-2 ๋ฆฌ์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ธํ”„๋ผ ์„ค์น˜์— ๋”ฐ๋ผ CDK๋กœ ์ธํ”„๋ผ ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰๊ฒฐ๊ณผ

์ฑ„ํŒ… ๋ฉ”๋‰ด์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด agent์˜ ๋™์ž‘๋ฐฉ์‹์„ ์„ ํƒํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

book_SMMDINLM239.pdf ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ•œ ํ›„์— ์ฑ„ํŒ…์ฐฝ ํ•˜๋‹จ์˜ ํŒŒ์ผ ์•„์ด์ฝ˜์„ ์ด์šฉํ•˜์—ฌ ์—…๋กœ๋“œ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋Ÿ‰์˜ ๋ฌธ์„œ ํŒŒ์ผ์„ ์—…๋กœ๋“œ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” S3๋กœ ์ง์ ‘ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์„œ์—์„œ ๊ทธ๋ฆผํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์— ๊ฒ€์ƒ‰์˜ ์ •ํ™•๋„๋ฅผ ์œ„ํ•ด ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ์š”์•ฝ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ํŒŒ์ผ ์—…๋กœ๋“œํ›„์— SQS์— ์ ‘์†ํ•ด์„œ ์—…๋กœ๋“œ ์ƒํ™ฉ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ํŒŒ์ผ์ด S3๋กœ ์—…๋กœ๋“œ๋˜๋ฉด, ํŒŒ์ผ ์—…๋กœ๋“œ ์ด๋ฒคํŠธ๋ฅผ SQS์— ์ €์žฅํ›„ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ, Mulimodal์ธ Claude Sonnet์„ ์ด์šฉํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

image

LangGraph Agent

๋ฉ”๋‰ด์—์„œ "Agent Executor (LangGraph)"๋ฅผ ์„ ํƒํ•˜์—ฌ "๊ต๋ณด ๋‹ค์ด๋ ‰ํŠธ ๋ณดํ—˜์˜ ์žฅ๋‹จ์ ์„ ๋น„๊ตํ•˜์—ฌ ์„ค๋ช…ํ•˜์„ธ์š”."๋ผ๊ณ  ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. Agent Executor์˜ Tools์— OpenSearch๊ฐ€ Tool๋กœ ๋“ฑ๋ก๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ RAG ๋™์ž‘์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

28์ดˆ๊ฐ€ ์†Œ์š”๊ฐ€ ์†Œ์š”๋˜์—ˆ๋Š”๋ฐ, "๊ต๋ณด ๋‹ค์ด๋ ‰ํŠธ ๋ณดํ—˜ ์žฅ๋‹จ์ "์— ๋Œ€ํ•ด tavily์™€ OpenSearch๋ฅผ ๊ฒ€์ƒ‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ด์šฉํ•ด ์‘๋‹ต์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ OpenSearch์—์„œ ์–ป์–ด์ง„ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด LLM์„ ์ด์šฉํ•ด ๊ด€๋ จ๋„ ๊ฒ€์‚ฌ๋ฅผ ํ•œ ํ›„์— ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

image

Corrective RAG ์‚ฌ์šฉ์‹œ

๋ฉ”๋‰ด์—์„œ "Corrective RAG"๋ฅผ ์„ ํƒํ•˜์—ฌ "๊ต๋ณด ๋‹ค์ด๋ ‰ํŠธ ๋ณดํ—˜์˜ ์žฅ๋‹จ์ ์„ ๋น„๊ตํ•˜์—ฌ ์„ค๋ช…ํ•˜์„ธ์š”."๋ผ๊ณ  ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” LangGraph Agent์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ๋ฏธ๋ฆฌ ์ง€์ •๋œ Workflow์— ๋”ฐ๋ผ ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

์ „์ฒด 25์ดˆ๊ฐ€ ์†Œ์š”๋˜์—ˆ๊ณ , retrieve๋กœ ์–ป์–ด์ง„ ๋ฌธ์„œ์— ๋Œ€ํ•œ ํ‰๊ฐ€(grade)๋ฅผ ํ•˜๊ณ , ์กฐ๊ฑด์— ๋”ฐ๋ผ ์›น๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

Self RAG ์‚ฌ์šฉ์‹œ

๋ฉ”๋‰ด์—์„œ "Self RAG"๋ฅผ ์„ ํƒํ•˜์—ฌ "๊ต๋ณด ๋‹ค์ด๋ ‰ํŠธ ๋ณดํ—˜์˜ ์žฅ๋‹จ์ ์„ ๋น„๊ตํ•˜์—ฌ ์„ค๋ช…ํ•˜์„ธ์š”."๋ผ๊ณ  ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

image

์ „์ฒด 22์ดˆ๊ฐ€ ์†Œ์š”๋˜์—ˆ๊ณ  ๊ด€๋ จ๋œ ๋ฌธ์„œ์— ๋Œ€ํ•œ ํ‰๊ฐ€ํ›„์— ํ™˜๊ฐ ๋ฐ ๋‹ต๋ณ€์˜ ์œ ์šฉ์„ฑ์„ ํ‰๊ฐ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

image

Self Corrective RAG ์‚ฌ์šฉ์‹œ

๋ฉ”๋‰ด์—์„œ "Self-Corrective RAG"๋ฅผ ์„ ํƒํ•˜์—ฌ "๊ต๋ณด ๋‹ค์ด๋ ‰ํŠธ ๋ณดํ—˜์˜ ์žฅ๋‹จ์ ์„ ๋น„๊ตํ•˜์—ฌ ์„ค๋ช…ํ•˜์„ธ์š”."๋ผ๊ณ  ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

image

์ „์ฒด 16์ดˆ๊ฐ€ ์†Œ์š”๋˜์—ˆ๊ณ , ์ƒ์„ฑ๋œ ๋‹ต๋ณ€์— ๋Œ€ํ•œ ํ™˜๊ฐ(Hallucination)๊ณผ ๋‹ต๋ณ€์˜ ์œ ์šฉ์„ฑ์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

image

"๊ต๋ณด ๋‹ค์ด๋ ‰ํŠธ ์ž๋™์ฐจ ๋ณดํ—˜์˜ ์žฅ๋‹จ์ ์„ ๋น„๊ตํ•˜์—ฌ ์„ค๋ช…ํ•˜์„ธ์š”."๋ผ๊ณ  ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

image

Reflection Agent

๋ฉ”๋‰ด์—์„œ "Reflection Agent"๋ฅผ ์„ ํƒํ•˜๊ณ , "์ƒ์„ฑํ˜• AI ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”."๋ผ๊ณ  ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ์•„๋ž˜์™€ ๊ฐ™์ด 90์ดˆ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

image

๋จผ์ € LLM์ด ์ƒ์„ฑํ•œ ์ดˆ์•ˆ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ์ƒ์„ฑํ˜• AI ๊ธฐ์ˆ ์— ๋Œ€ํ•œ 5๋ฌธ๋‹จ ์—์„ธ์ด ์ดˆ์•ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค:

1๋ฌธ๋‹จ: ์ƒ์„ฑํ˜• AI(Generative AI)๋Š” ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ธ๊ณต์ง€๋Šฅ ๊ธฐ์ˆ ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ์˜ค๋””์˜ค, ์ฝ”๋“œ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ์ฝ˜ํ…์ธ  ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑํ˜• AI๋Š” ๊ธฐ๊ณ„ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ์—์„œ ํŒจํ„ด์„ ํ•™์Šตํ•˜๊ณ  ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ƒˆ๋กœ์šด ์ฝ˜ํ…์ธ ๋ฅผ ๋งŒ๋“ค์–ด๋ƒ…๋‹ˆ๋‹ค.

2๋ฌธ๋‹จ: ๋Œ€ํ‘œ์ ์ธ ์ƒ์„ฑํ˜• AI ๊ธฐ์ˆ ๋กœ๋Š” GPT-3, DALL-E, ๋ฎค์ง ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. GPT-3๋Š” OpenAI์—์„œ ๊ฐœ๋ฐœํ•œ ๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ๋กœ, ์ฃผ์–ด์ง„ ํ…์ŠคํŠธ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์–‘ํ•œ ํ˜•์‹์˜ ํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DALL-E๋Š” OpenAI์˜ ์ด๋ฏธ์ง€ ์ƒ์„ฑ AI๋กœ, ํ…์ŠคํŠธ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹นํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ด๋ƒ…๋‹ˆ๋‹ค. ๋ฎค์ง ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋Š” ๊ธฐ์กด ์Œ์› ๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šตํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฉœ๋กœ๋””์™€ ๊ฐ€์‚ฌ๋ฅผ ๋งŒ๋“ค์–ด๋ƒ…๋‹ˆ๋‹ค.

์ƒ์„ฑ๋œ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ํ‰๊ฐ€๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐœ์„ ์‚ฌํ•ญ:

1. ๊ฐ ๋ฌธ๋‹จ์˜ ๊ธธ์ด๋ฅผ 200์ž ์ด์ƒ์œผ๋กœ ๋Š˜๋ฆฌ๊ณ , ๊ด€๋ จ ์˜ˆ์‹œ์™€ ๊ตฌ์ฒด์ ์ธ ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

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

3. 3๋ฌธ๋‹จ์—์„œ ์ƒ์„ฑํ˜• AI์˜ ํ™œ์šฉ ๋ถ„์•ผ๋ฅผ ์„ค๋ช…ํ•  ๋•Œ ์‹ค์ œ ์‚ฌ๋ก€๋‚˜ ๊ตฌ์ฒด์ ์ธ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ž‘๊ฐ€์˜ ๊ฒฝ์šฐ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ AI๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ๋งˆ์ผ€ํŒ… ๋ถ„์•ผ์—์„œ๋Š” ์–ด๋–ค ๊ฐœ์ธํ™” ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋“ฑ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

4. ์ „์ฒด์ ์œผ๋กœ ๋ฌธ์žฅ ๊ตฌ์กฐ์™€ ์—ฐ๊ฒฐ์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ•˜๊ณ , ์ „๋ฌธ ์šฉ์–ด์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.

์ด 3ํšŒ ์ˆ˜์ •ํ•˜์—ฌ ์–ป์–ด์ง„ ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ดˆ์•ˆ๋ณด๋‹ค ๋” ํ’๋ถ€ํ•˜๊ณ  ์ถฉ๋ถ„ํ•œ ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ˜์˜ํ•˜์—ฌ ์—์„ธ์ด๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ๋ณด์™„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1๋ฌธ๋‹จ: ์ƒ์„ฑํ˜• AI(Generative AI)๋Š” ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ธ๊ณต์ง€๋Šฅ ๊ธฐ์ˆ ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ์˜ค๋””์˜ค, ์ฝ”๋“œ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ์ฝ˜ํ…์ธ  ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑํ˜• AI๋Š” ๊ธฐ๊ณ„ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜, ํŠนํžˆ ์ˆœํ™˜ ์‹ ๊ฒฝ๋ง(Recurrent Neural Network)์ด๋‚˜ ๋ณ€๋ถ„ ์ž๊ธฐ๋ถ€ํ˜ธ๊ธฐ(Variational Autoencoder) ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ์—์„œ ํŒจํ„ด์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ํ•™์Šต๋œ ๋ชจ๋ธ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ƒˆ๋กœ์šด ์ฝ˜ํ…์ธ ๋ฅผ ๋งŒ๋“ค์–ด๋ƒ…๋‹ˆ๋‹ค.

2๋ฌธ๋‹จ: ๋Œ€ํ‘œ์ ์ธ ์ƒ์„ฑํ˜• AI ๊ธฐ์ˆ ๋กœ๋Š” GPT-3, DALL-E, ๋ฎค์ง ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. GPT-3๋Š” OpenAI์—์„œ ๊ฐœ๋ฐœํ•œ ๊ฑฐ๋Œ€ํ•œ ์–ธ์–ด ๋ชจ๋ธ๋กœ, 175์–ต ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง„ ์ˆœํ™˜ ์‹ ๊ฒฝ๋ง ๊ธฐ๋ฐ˜์˜ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์€ ์ฃผ์–ด์ง„ ํ…์ŠคํŠธ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์–‘ํ•œ ํ˜•์‹์˜ ํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DALL-E๋Š” OpenAI์˜ ์ด๋ฏธ์ง€ ์ƒ์„ฑ AI๋กœ, ๋ณ€๋ถ„ ์ž๊ธฐ๋ถ€ํ˜ธ๊ธฐ ๊ธฐ๋ฐ˜์˜ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์€ ํ…์ŠคํŠธ ์„ค๋ช…์„ ์ž…๋ ฅ๋ฐ›์•„ ํ•ด๋‹นํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ด๋ƒ…๋‹ˆ๋‹ค. ๋ฎค์ง ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋Š” ๊ธฐ์กด ์Œ์› ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœํ™˜ ์‹ ๊ฒฝ๋ง์œผ๋กœ ํ•™์Šตํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฉœ๋กœ๋””์™€ ๊ฐ€์‚ฌ๋ฅผ ๋งŒ๋“ค์–ด๋ƒ…๋‹ˆ๋‹ค.

Easy Writer

๋ฉ”๋‰ด์—์„œ "Easy Writer"๋ฅผ ์„ ํƒํ•˜๊ณ  ๋‚˜์„œ, "์ฆ๊ฒ๊ฒŒ ์‚ฌ๋Š” ๋ฐฉ๋ฒ•"์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ๊ฒฝ์šฐ์—๋Š” 138์ดˆ๊ฐ€ ์†Œ์š”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

easy-writer

Knowledge Guru

๋ฉ”๋‰ด์—์„œ "Knowledge Guru"๋ฅผ ์„ ํƒํ•˜๊ณ  ์ƒ์„ฑํ˜• AI๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘์š”ํ•œ๋ฐ์š”. ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฐ€๊ณตํ• ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”."์™€ ๊ฐ™์ด ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ OpenSearch์— ์ƒ์„ฑํ˜• AI์™€ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋“ค์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. "Knowledge Guru"์˜ ๊ฒฝ์šฐ์— OpenSearch์˜ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ LLM์œผ๋กœ ํ‰๊ฐ€ํ•˜์—ฌ ๊ด€๋ จ๋œ ๋ฌธ์„œ๋งŒ์„ ์ถ”์ถœํ•˜์—ฌ ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ถ”์ถœ๋œ ๋‹ต๋ณ€์— ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์ค‘์š” ํ‚ค์›Œ๋“œ๋ฅผ ์ถ”์ถœํ•œ ํ›„์— OpenSearch๋ฅผ ์ด์šฉํ•ด ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ๋‹ต๋ณ€์„ ํ–ฅ์ƒ(Revise)ํ•ฉ๋‹ˆ๋‹ค.

noname

๊ฒฐ๋ก 

์—ฌ๋Ÿฌ ๋ฐฉ์‹์˜ agent๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๋™์ž‘ ๋ฐฉ์‹์„ ์„ ํƒํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. Agent์˜ ํ™œ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ์„œ ๊ฒฐ๊ณผ์™€ ์‹คํ–‰ ์‹œ๊ฐ„์˜ trade off๋ฅผ ๊ณ ๋ คํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • RAG ๊ฒ€์ƒ‰์„ Tool๋กœ ๋“ฑ๋กํ•˜๊ณ  LangGraph Agent๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ReAct ๋ฐฉ์‹์œผ๋กœ ์งˆ๋ฌธ์„ ํ‰๊ฐ€ํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ๋ฒˆ ์งˆ์˜๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Reflection Agent ๋ฐฉ์‹์€ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ์†Œ์š”๊ฐ€ ๋˜์ง€๋งŒ ๊ฐ€์žฅ ํ’๋ถ€ํ•œ ๋‹ต๋ณ€์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • Corrective RAG๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ์‹œ๊ฐ„์ด ์ ๊ฒŒ ์†Œ์š”๊ฐ€ ๋˜์ง€๋งŒ RAG์˜ Vector Search์—์„œ ์–ป์–ด์ง„ ๋ฌธ์„œ๋ฅผ ํ‰๊ฐ€ํ•˜์—ฌ ์ ์ ˆํ•œ ๋ฌธ์„œ๋ฅผ ๊ณ ๋ฅด๊ณ  ๊ฒ€์ƒ‰์œผ๋กœ ์–ป์–ด์ง„ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์•„์„œ RAG๋งŒ ๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ๋ณด๋‹ค ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Self RAG์™€ Corrective Self RAG๋Š” ๊ด€๋ จ๋œ ๋ฌธ์„œ์˜ ํ‰๊ฐ€๋ฟ ์•„๋‹ˆ๋ผ, ํ™˜๊ฐ๊ณผ ๋‹ต๋ณ€์˜ ์ ์ ˆ์„ฑ์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น๊ฒ€์ƒ‰ ํ•„์š”์— ๋”ฐ๋ผ์„œ Self RAG์™€ Self Corrective RAG๋ฅผ ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌ์†Œ์Šค ์ •๋ฆฌํ•˜๊ธฐ

๋”์ด์ƒ ์ธํ”„๋ผ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์— ์•„๋ž˜์ฒ˜๋Ÿผ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. API Gateway Console๋กœ ์ ‘์†ํ•˜์—ฌ "rest-api-for-langgraph-agent", "ws-api-for-langgraph-agent"์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

  2. Cloud9 Console์— ์ ‘์†ํ•˜์—ฌ ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋กœ ์ „์ฒด ์‚ญ์ œ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

cd ~/environment/langgraph-agent/cdk-langgraph-agent/ && cdk destroy --all

About

It shows case studies of the LangGraph agent.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors