Agent๋ ์ฃผ๋ณ ํ๊ฒฝ์ ํ์งํ์ฌ ์์จ์ ์ผ๋ก ๋์ํ๋ ์ฅ์น ๋๋ ํ๋ก๊ทธ๋จ์ ์๋ฏธํฉ๋๋ค. agent์ ๋ผํด์ด ์ด์์ธ agere์ ๋ป์ to do ๋๋ to act์ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
LangGraph๋ agent๋ฅผ ์์ฑํ๊ณ ์ฌ๋ฌ๊ฐ์ agent๊ฐ ์์๋์ ํ๋ฆ์ ๊ด๋ฆฌํ๊ธฐ ์ํ LangChain์ Extention์ ๋๋ค. ์ด๋ฅผ ํตํด cycle flow๋ฅผ ์์ฑํ ์ ์์ผ๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ด์ฅ๋์ด Agent๋ฅผ ์์ฑ์ ๋์์ ์ค๋๋ค. ์์ธํ ๋ด์ฉ์ LangGraph guide์ ์ฐธ์กฐํฉ๋๋ค.
์๋์ ๊ฐ์ด agent๋ serverless architecture๋ก ๊ตฌํํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์๊ธฐ ์ง๋ฌธ์ ์ ๋ ฅํ๋ฉด webSocket ๋ฐฉ์์ผ๋ก API Gateway๋ก ์ง๋ฌธ์ด ์ ๋ฌ๋ฉ๋๋ค.
- Lambda์์๋ LangGraph ํํ๋ก agent๋ฅผ ์ ์ํฉ๋๋ค. ์ฌ๊ธฐ์์๋ Corrective RAG, Self RAG, Self corrective RAG๋ฅผ ๊ตฌํํ์์ต๋๋ค.
- ์ง๋ฌธ์ ๊ด๋ จ๋ ๋ฌธ์๋ฅผ OpenSearch๋ฅผ ํตํด ๊ฒ์ํฉ๋๋ค. ์ด๋, child/parent chunking์ ์ด์ฉํด ์์ ํฌ๊ธฐ์ chunk๋ฅผ ๊ฒ์ํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํค๋ฉด์๋ Parent Chunk๋ฅผ ๋ฌธ์๋ก ํ์ฉํ์ฌ ํ๋ถํ context๋ฅผ ์ ๊ณตํฉ๋๋ค.
- OpenSearch๋ก ์ป์ด์ง ๊ด๋ จ๋ ๋ฌธ์๋ LLM Prompt๋ฅผ ์ด์ฉํด ๊ด๋ จ๋๋ฅผ ํ๊ฐ(grade) ํฉ๋๋ค. ํ๊ฐ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์น๊ฒ์์ ์ด์ฉํ fallback ๋์์ ์ํํ ์ ์์ต๋๋ค.
- LLM์ ๊ด๋ จ๋ ๋ฌธ์๋ฅผ context๋ก ์ ๊ณตํ์ฌ ์ ์ ํ ๋ต๋ณ์ ์์ฑํฉ๋๋ค. ๋ต๋ณ์ด ํ๊ฐ(hallucination)์ธ์ง, ์ ์ ํ ๋ต๋ณ์ด ์์ฑ๋์๋์ง๋ฅผ LLM prompt๋ฅผ ์ด์ฉํด ํ๊ฐ(grade)ํ ์ ์์ต๋๋ค.
langgraph-agent.md์์๋ LangGraph Agent์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ์ค๋ช ํ๊ณ ์์ต๋๋ค.
์ฌ๊ธฐ์๋ ๋ํ์ ์ธ agentic workflow์ 4๊ฐ์ง ํจํด์ธ tool use, reflection, plan and execute, multi-agent collaboration์ ๋ํด ์ค๋ช ํฉ๋๋ค.
agent-executor.md์์๋ LangGraph๋ฅผ ์ด์ฉํด ๊ฐ์ข Tool์ ์คํํ๋ agent๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ณ ์์ต๋๋ค. ์๋๋ agent executor์ activity diagram์ ๋๋ค.
Reflection์ ํตํด LLM์ ์๋ต์ ํฅ์์ํค๊ณ ์ถฉ๋ถํ ์ปจํ ์ธ ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. knowledge-guru.md์์๋ OpenSearch์ Tavily ๊ฒ์์ผ๋ก ์ป์ด์ง ์ ๋ณด๋ก ์ด์(draft)๋ฅผ ๋ง๋ค๊ณ , ๊ฒ์์ ์ํ keyword๋ฅผ ์ถ์ถํ์ฌ ๋ค์ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ต๋ณ์ ํฅ์์ฌํค๋(revise) ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
plan-and-execuite.md์์๋ Plan and Execute ๋ฐฉ์์ Agent๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
long-form-writing.md์์๋ plan and execute ํจํด์ ๊ฐ์ง๋ agent์ reflection์ ์ํํ๋ agent๋ฅผ ์ด์ฉํ์ฌ instruction์ผ๋ก ์ฅ๋ฌธ์ ๊ธ์ฐ๊ธฐ๋ฅผ ์ํํฉ๋๋ค. Multi agent ๊ตฌ์กฐ๋ก ๊ตฌ์ฑํจ์ผ๋ก์จ ๋ณต์กํ workflow๋ฅผ ๋จ์ํ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
reflection-agent.md์์๋ LangGraph๋ฅผ ์ด์ฉํด Reflection์ ๋ฐ์ํ๋ Agent๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ณ ์์ต๋๋ค.
Agentic RAG๋ tool_condition์ ํตํด RAG์ retrival์ ์ ํํ๊ณ , ๋ฌธ์๋ฅผ ํ๊ฐ(grade)ํ์ฌ, ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ๋ง์กฑ์ค๋ฝ์ง ์๋ค๋ฉด re-write๋ฅผ ํตํด ์๋ก์ด ์ง๋ฌธ(better question)์ ์์ฑํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ agentic-rag.md์ ์ฐธ์กฐํฉ๋๋ค.
corrective-rag-agent.md์์๋ Corrective RAG์ ์ด์ฉํ RAG ์ฑ๋ฅ ๊ฐํ์ ๋ํด ์ค๋ช ํฉ๋๋ค. Corrective RAG๋ Vector Store์์ ๊ฐ์ ธ์จ ๋ฌธ์๋ฅผ Refineํ๊ณ ๊ด๋ จ์ฑ์ด ์ ์ ๋ฌธ์๋ ์ ์ธํ๊ณ , ๋ค๋ฅธ ๋ฐ์ดํฐ ์์ค๋ Web ๊ฒ์์ ํตํด RAG์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์๋ ๊ทธ๋ฆผ์ Corrective RAG์ ๋ํ activity diagram์ ๋๋ค.
- "retrieve"๋ ์ง๋ฌธ(Question)์ ์ด์ฉํ์ฌ, RAG์ Vector Store๋ก ์กฐํ(retrieve) ๋์์ ์ํํฉ๋๋ค. ์ด๋ k๊ฐ์ ๊ด๋ จ๋ ๋ฌธ์(relevant docuements)์ ๊ฐ์ ธ์ต๋๋ค.
- "grade_documents"๋ LLM prompt๋ฅผ ์ด์ฉํ์ฌ Vector Store์์ ๊ฐ์ ธ์จ ๋ฌธ์๊ฐ ์ค์ ๋ก ๊ด๋ จ์ด ์๋์ง ํ์ธํฉ๋๋ค. ๊ด๋ จ์ด ์์ผ๋ฉด "yes", ์์ผ๋ฉด "no"๋ฅผ ํ๋ณ(grade)ํ๋๋ฐ, "no"์ธ ๊ฒฝ์ฐ์ ๊ด๋ จ๋ ๋ฌธ์์์ ์ ์ธํฉ๋๋ค. ๋ง์ฝ ๊ด๋ จ๋ ๋ฌธ์๊ฐ ๊ด๋ จ์ฑ์ด ์์ด ์ ์ธ๋๋ฉด, "web_search"๋ฅผ True๋ก ์ค์ ํฉ๋๋ค.
- "decide_to_generate"๋ Vector Store์์ ๊ฐ์ ธ์จ ๋ชจ๋ ๋ฌธ์๊ฐ ๊ด๋ จ์ด ์๋ค๋ฉด, "web_search"๋ฅผ "yes"๋ก ์ค์ ํ๊ณ , ์๋๋ผ๋ฉด "no๋ก ์ค์ ํฉ๋๋ค. ์ด์๊ฐ์ด ๊ด๋ จ๋ ๋ฌธ์์ค์ ์ผ๋ถ๋ผ๋ ๊ด๋ จ์ด ์ ๋ค๊ณ ํ์ ๋๋ฉด, ์น ๊ฒ์์ ์ํํ์ฌ ๊ด๋ จ๋ ๋ฌธ์๋ฅผ ๋ณด๊ฐํฉ๋๋ค.
- "web_search"๊ฐ "yes"๋ผ๋ฉด (์น ๊ฒ์์ด ํ์ํ ๊ฒฝ์ฐ), ๊ธฐ์กด ์ง๋ฌธ์ผ๋ก ๋ถํฐ ํฅ์๋ ์ง๋ฌธ(better_question)์ ์์ฑํ๋ re-write๋ฅผ ๋์์ ์ํํฉ๋๋ค. ์ด๋ฅผ ์ํด "rewrite"๋ LLM Prompt๋ฅผ ์ด์ฉํ์ฌ, ์ถฉ๋ถํ ์๋(sementic intent)์ ์๋ฏธ(meaning)์ ๊ฐ์ง๋๋ก ํฅ์๋ ์ง๋ฌธ(better_question)์ ์์ฑํฉ๋๋ค.
- "web search"๋ ๊ธฐ์กด ๋ฌธ์(filtered_document)์ ์น ๊ฒ์์ผ๋ก ์ป์ด์ง ์๋ก์ด ๊ด๋ จ๋ ๋ฌธ์๋ฅผ ์ถ๊ฐํด์ ๋ฌธ์(documents)๋ฅผ ์์ฑํฉ๋๋ค.
- "generate"์์๋ ๊ด๋ จ๋ ๋ฌธ์(documents)๋ฅผ context๋ก ํ์ฉํ์ฌ ์ ์ ํ ๋ต๋ณ์ ์์ฑํฉ๋๋ค.
Self RAG๋ RAG์ vector store์์ ์ป์ด์ง ๋ฌธ์๋ค์ ๊ด๋ จ์ฑ์ ํ์ธ(Grade)ํ์ฌ ๊ด๋ จ์ฑ์ด ์ ์ ๋ฌธ์๋ฅผ ์ ์ธํฉ๋๋ค. ๋ํ ์ป์ด์ง ๋ต๋ณ์ด ํ๊ฐ(hallucination)์ธ์ง, ์ถฉ๋ถํ ์ ์์ฑ๋ ๋ต๋ณ์ธ์ง ํ์ธํ์ฌ, ๋ต๋ณ์ด ์ถฉ๋ถํ์ง ์์ผ๋ฉด ์ง๋ฌธ์ re-writeํ์ฌ RAG ๋์์ ์ฌ์ํํฉ๋๋ค. ์ด๋ฅผ ํตํด RAG์ ๊ฒฐ๊ณผ๋ฅผ ํฅ์ ์ํฌ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Self RAG์์ ์ค๋ช ํฉ๋๋ค. ์๋๋ Self RAG์ ๋ํ activity diagram์ ๋๋ค.
- "retrive"๋ ์ง๋ฌธ(question)์ ์ด์ฉํ์ฌ Vector Store์ ๊ด๋ จ๋ ๋ฌธ์๋ฅผ ์กฐํ(retrieve)ํฉ๋๋ค.
- "grade_documents"๋ LLM Prompt๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์(documents)์ ๊ด๋ จ์ฑ์ ํ์ธ(grade)ํฉ๋๋ค. ๊ด๋ จ์ด ์๋ ๋ฌธ์๋ ์ ์ธํ์ฌ "filtered documents"๋ก ์ ์กฐํฉํฉ๋๋ค.
- "decide_to_generate"๋ "filtered document"๋ฅผ "generate"๋ก ๋ณด๋ด์ ๋ต๋ณ์ ์์ฑํ๋๋ก ํฉ๋๋ค. "filtered document"๊ฐ ์๋ค๋ฉด ์๋ก์ด ์ง๋ฌธ์ ์์ฑํ๊ธฐ ์ํด "rewrite" ๋์์ ์ํํ๋๋ก ์์ฒญํฉ๋๋ค.
- "rewrite"๋ ๊ธฐ์กด ์ง๋ฌธ(question)์ ์ด์ฉํ์ฌ LLM Prompt๋ก ์๋ก์ด ์ง๋ฌธ์ ์์ฑํฉ๋๋ค. ์๋ก์ด ์ง๋ฌธ(better question)์ "retrieve"์ ์ ๋ฌ๋์ด, ์๋ก์ด ์ง๋ฌธ์ผ๋ก RAG ๋์์ ์ฌ์ํํ ์ ์์ต๋๋ค.
- "generate"๋ "filtered documents"๋ฅผ ์ด์ฉํ์ฌ ์ ์ ํ ๋ต๋ณ(generation)์ ์์ฑํฉ๋๋ค.
- "grade_generation"์ ์์ฑ๋ ๋ต๋ณ์ด ํ๊ฐ(hallucination)์ธ์ง ํ์ธํ์ฌ, ๋ง์ฝ ํ๊ฐ์ด๋ผ๋ฉด "generator"์ ๋ณด๋ด ๋ค์ ๋ต๋ณ์ ์์ฑํ๊ณ , ํ๊ฐ์ด ์๋๋ผ๋ฉด ๋ต๋ณ์ด ์ ์ ํ์ง "answer_question"๋ก ๊ฒ์ฆํฉ๋๋ค. ์ด๋, ๋ต๋ณ์ด ์ ์ ํ๋ค๋ฉด(useful) ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฌํ๊ณ , ์ ์ ํ์ง ์๋ค๋ฉด(not_useful) ์ง๋ฌธ์ ์๋ก ์์ฑํ๊ธฐ ์ํด "rewrite"ํฉ๋๋ค. ์ดํ๋ก ์๋ก ์์ฑ๋ ์ง๋ฌธ์ "retrieve"์ ์ ๋ฌ๋์ด RAG ์กฐํ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค.
Self-Corrective RAG๋ Corrective RAG์ฒ๋ผ vector store๋ก ๋ถํฐ ์ป์ด์ง ๋ฌธ์์ ๊ด๋ จ์ฑ์ ํ์ธํ์ฌ ๊ด๋ จ์ฑ์ด ์๋ ๋ฌธ์๋ฅผ ์ ์ธํ๊ณ ์น ๊ฒ์์ ํตํด ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ฐํฉ๋๋ค. ๋ํ, Self RAG์ฒ๋ผ RAG์ ๊ฒฐ๊ณผ๊ฐ ํ๊ฐ(hallucination)์ธ์ง, ์ ์ ํ ๋ต๋ณ์ธ์ง ๊ฒ์ฆํ๋ ์ ์ฐจ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ self-corrective-rag.md์์ ์ค๋ช ํฉ๋๋ค. ์๋๋ Self-Corrective RAG์ ๋ํ acitivity diagram์ ๋๋ค.
- "retrieve"๋ ์ง๋ฌธ(question)๊ณผ ๊ด๋ จ๋ ๋ฌธ์๋ฅผ Vector Store๋ฅผ ํตํด ์กฐํํฉ๋๋ค. ์ด๋, "grade_generation" ๋์์ ์ํด "web_fallback"์ True๋ก ์ด๊ธฐํํฉ๋๋ค.
- "generator"๋ Vector Store์์ ์ป์ด์ง ๊ด๋ จ๋ ๋ฌธ์(documents)๋ฅผ ์ด์ฉํ์ฌ ๋ต๋ณ(generation)์ ์์ฑํฉ๋๋ค. ์ด๋, retries count๋ฅผ ์ฆ๊ฐ์ํต๋๋ค.
- "grade_generation"์ "web_fallback"์ด True์ด๋ผ๋ฉด, "hallucination"๊ณผ "answer_question"์์ ํ๊ฐ ๋ฐ ๋ต๋ณ์ ์ ์ ์ฑ์ ํ์ธํฉ๋๋ค. ํ๊ฐ์ผ ๊ฒฝ์ฐ์, ๋ฐ๋ณต ํ์(retries)๊ฐ "max_retries"์ ๋๋ฌํ์ง ์์๋ค๋ฉด "generate"๋ณด๋ด์ ๋ต๋ณ์ ๋ค์ ์์ฑํ๊ณ , "max_retires"์ ๋๋ฌํ๋ค๋ฉด "websearch"๋ก ๋ณด๋ด์ ์น ๊ฒ์์ ์ํํฉ๋๋ค. ๋ํ ๋ต๋ณ์ด ์ ์ ํ์ง ์๋ค๋ฉด, ๋ฐ๋ณต ํ์๊ฐ "max_reties"์ ๋๋ฌํ๊ธฐ ์์๋ค๋ฉด, "rewrite"๋ก ๋ณด๋ด์ ํฅ์๋ ์ง๋ฌธ(better question)์ ์์ฑํ๊ณ , ๋๋ฌํ์๋ค๋ฉด "websearch"๋ก ๋ณด๋ด์ ์น ๊ฒ์์ ์ํํฉ๋๋ค.
- "websearch"๋ ์น ๊ฒ์์ ํตํด ๋ฌธ์๋ฅผ ๋ณด๊ฐํ๊ณ , "generate"์ ๋ณด๋ด์ ๋ต๋ณ์ ์์ฑํฉ๋๋ค. ์ด๋, "web_fallback"์ False๋ก ์ค์ ํ์ฌ "grade_generation"์์ "finalized_response"๋ก ๋ณด๋ด๋๋ก ํฉ๋๋ค.
- "rewrite"๋ ์๋ก์ด ์ง๋ฌธ(better question)์ ์์ฑํ์ฌ, "retrieve"์ ์ ๋ฌํฉ๋๋ค. ์๋ก์ด ์ง๋ฌธ์ผ๋ก ์ ์ฒด RAG ๋์์ ์ฌ์ํํฉ๋๋ค. ์ ์ฒด RAG ๋์์ ๋ฌดํ ๋ฃจํ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ์ฌ, "max_retries"๋งํผ ์ํํ ์ ์์ต๋๋ค.
- "finalize_response"๋ ์ต์ข ๋ต๋ณ์ ์ ๋ฌํฉ๋๋ค.
Workflow์์ Human์ interation์ ๊ตฌํํ๊ธฐ ์ํ checkpoint๋ฅผ ํ์ฉํฉ๋๋ค. Human-in-the-loop (HIL)์์๋ Human-in-the-loop (HIL)์ ๊ตฌํํ๋๊ฒ์ ์ค๋ช ํฉ๋๋ค. Plan and Execute๋ Plan-and-Solve์ ๊ฐ์ด CoT ๋ฐฉ์์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐฉ๋ฒ์ ๋๋ค.
Essay Writer์์๋ essay๋ฅผ ์์ฑํ๋ Agent๋ฅผ ์์ฑํฉ๋๋ค.
AgentWrite LangGraph๋ Agent๋ฅผ ์ด์ฉํ Write ๊ณผ์ ์ ๋ํด ์ค๋ช ํ๊ณ ์์ต๋๋ค. ์์ธํ ์ค๋ช ์ AgentWrite with LangGraph - Youtube๋ฅผ ์ฐธ๊ณ ํฉ๋๋ค.
ย ย
multi-agent.md์์๋ ์ฌ๋ฌ๊ฐ์ Agent๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
Map Reduce์์๋ Map Reduce ํจํด์ ๋ณ๋ ฌ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํ๊ณ ์์ต๋๋ค.
RAG with Reflection์์๋ Reflection์ผ๋ก RAG์ ์ฑ๋ฅ์ ๊ฐํํฉ๋๋ค.
RAG with Query Transformation์์๋ RAG์ ์ ์ฒ๋ฆฌ๋ก rewrite์ decompse๋ฅผ ์ํํจ์ผ๋ก์จ RAG์ ์ฑ๋ฅ์ ๊ฐํํฉ๋๋ค.
data-enrichment-agent.md์์๋ schema๋ฅผ ์ด์ฉํด ์น์์ ํ์ํ ์ ๋ณด๋ฅผ ์์งํ๋ agent์ ๋ํด ์ค๋ช ํฉ๋๋ค.
-
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 ๋งํฌ)
์ด ์๋ฃจ์ ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ฌ์ ์ ์๋์ ๊ฐ์ ์ค๋น๊ฐ ๋์ด์ผ ํฉ๋๋ค.
- AWS Account ์์ฑ์ ๋ฐ๋ผ ๊ณ์ ์ ์ค๋นํฉ๋๋ค.
๋ณธ ์ค์ต์์๋ us-west-2 ๋ฆฌ์ ์ ์ฌ์ฉํฉ๋๋ค. ์ธํ๋ผ ์ค์น์ ๋ฐ๋ผ CDK๋ก ์ธํ๋ผ ์ค์น๋ฅผ ์งํํฉ๋๋ค.
์ฑํ ๋ฉ๋ด์์ ์๋์ ๊ฐ์ด agent์ ๋์๋ฐฉ์์ ์ ํํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
book_SMMDINLM239.pdf ํ์ผ์ ๋ค์ด๋ก๋ ํ ํ์ ์ฑํ ์ฐฝ ํ๋จ์ ํ์ผ ์์ด์ฝ์ ์ด์ฉํ์ฌ ์ ๋ก๋ ํฉ๋๋ค. ๋ค๋์ ๋ฌธ์ ํ์ผ์ ์ ๋ก๋ ํ๋ ๊ฒฝ์ฐ์๋ S3๋ก ์ง์ ์ ๋ก๋ํฉ๋๋ค.
๋ฌธ์์์ ๊ทธ๋ฆผํ์ผ์ด ์๋ ๊ฒฝ์ฐ์ ๊ฒ์์ ์ ํ๋๋ฅผ ์ํด ํ์ด์ง ๋จ์๋ก ์์ฝ์ ์ํํฉ๋๋ค. ๋ฐ๋ผ์, ํ์ผ ์ ๋ก๋ํ์ SQS์ ์ ์ํด์ ์ ๋ก๋ ์ํฉ์ ํ์ธํฉ๋๋ค. ์๋์ ๊ฐ์ด ํ์ผ์ด S3๋ก ์ ๋ก๋๋๋ฉด, ํ์ผ ์ ๋ก๋ ์ด๋ฒคํธ๋ฅผ SQS์ ์ ์ฅํ ํ๋์ฉ ๊บผ๋ด์, Mulimodal์ธ Claude Sonnet์ ์ด์ฉํด ์ด๋ฏธ์ง๋ฅผ ๋ถ์ํฉ๋๋ค.
๋ฉ๋ด์์ "Agent Executor (LangGraph)"๋ฅผ ์ ํํ์ฌ "๊ต๋ณด ๋ค์ด๋ ํธ ๋ณดํ์ ์ฅ๋จ์ ์ ๋น๊ตํ์ฌ ์ค๋ช ํ์ธ์."๋ผ๊ณ ์ ๋ ฅํฉ๋๋ค. Agent Executor์ Tools์ OpenSearch๊ฐ Tool๋ก ๋ฑ๋ก๋์ด ์์ผ๋ฏ๋ก RAG ๋์์ ํ์ธํ ์ ์์ต๋๋ค.
28์ด๊ฐ ์์๊ฐ ์์๋์๋๋ฐ, "๊ต๋ณด ๋ค์ด๋ ํธ ๋ณดํ ์ฅ๋จ์ "์ ๋ํด tavily์ OpenSearch๋ฅผ ๊ฒ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํด ์๋ต์ ์ป์์ต๋๋ค. ์ด๋ OpenSearch์์ ์ป์ด์ง ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ด LLM์ ์ด์ฉํด ๊ด๋ จ๋ ๊ฒ์ฌ๋ฅผ ํ ํ์ ํ์ฉํฉ๋๋ค.
๋ฉ๋ด์์ "Corrective RAG"๋ฅผ ์ ํํ์ฌ "๊ต๋ณด ๋ค์ด๋ ํธ ๋ณดํ์ ์ฅ๋จ์ ์ ๋น๊ตํ์ฌ ์ค๋ช ํ์ธ์."๋ผ๊ณ ์ ๋ ฅํฉ๋๋ค. ๊ฒฐ๊ณผ๋ LangGraph Agent์ ์ ์ฌํ์ง๋ง, ๋ฏธ๋ฆฌ ์ง์ ๋ Workflow์ ๋ฐ๋ผ ์ํ๋ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
์ ์ฒด 25์ด๊ฐ ์์๋์๊ณ , retrieve๋ก ์ป์ด์ง ๋ฌธ์์ ๋ํ ํ๊ฐ(grade)๋ฅผ ํ๊ณ , ์กฐ๊ฑด์ ๋ฐ๋ผ ์น๊ฒ์์ ์ํํ ์ ์์ต๋๋ค.
๋ฉ๋ด์์ "Self RAG"๋ฅผ ์ ํํ์ฌ "๊ต๋ณด ๋ค์ด๋ ํธ ๋ณดํ์ ์ฅ๋จ์ ์ ๋น๊ตํ์ฌ ์ค๋ช ํ์ธ์."๋ผ๊ณ ์ ๋ ฅํฉ๋๋ค.
์ ์ฒด 22์ด๊ฐ ์์๋์๊ณ ๊ด๋ จ๋ ๋ฌธ์์ ๋ํ ํ๊ฐํ์ ํ๊ฐ ๋ฐ ๋ต๋ณ์ ์ ์ฉ์ฑ์ ํ๊ฐํ๊ณ ์์ต๋๋ค.
๋ฉ๋ด์์ "Self-Corrective RAG"๋ฅผ ์ ํํ์ฌ "๊ต๋ณด ๋ค์ด๋ ํธ ๋ณดํ์ ์ฅ๋จ์ ์ ๋น๊ตํ์ฌ ์ค๋ช ํ์ธ์."๋ผ๊ณ ์ ๋ ฅํฉ๋๋ค.
์ ์ฒด 16์ด๊ฐ ์์๋์๊ณ , ์์ฑ๋ ๋ต๋ณ์ ๋ํ ํ๊ฐ(Hallucination)๊ณผ ๋ต๋ณ์ ์ ์ฉ์ฑ์ ํ๊ฐํฉ๋๋ค.
"๊ต๋ณด ๋ค์ด๋ ํธ ์๋์ฐจ ๋ณดํ์ ์ฅ๋จ์ ์ ๋น๊ตํ์ฌ ์ค๋ช ํ์ธ์."๋ผ๊ณ ์ ๋ ฅํฉ๋๋ค.
๋ฉ๋ด์์ "Reflection Agent"๋ฅผ ์ ํํ๊ณ , "์์ฑํ AI ๊ธฐ์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์."๋ผ๊ณ ์ ๋ ฅํฉ๋๋ค. ์ด๋, ์๋์ ๊ฐ์ด 90์ด ์๊ฐ์ด ์์๋์์ต๋๋ค.
๋จผ์ 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"๋ฅผ ์ ํํ๊ณ ๋์, "์ฆ๊ฒ๊ฒ ์ฌ๋ ๋ฐฉ๋ฒ"์ ๊ฐ์ด ์ ๋ ฅํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค. ์๋์ ๊ฒฝ์ฐ์๋ 138์ด๊ฐ ์์๋์์ต๋๋ค.
๋ฉ๋ด์์ "Knowledge Guru"๋ฅผ ์ ํํ๊ณ ์์ฑํ AI๋ฅผ ์ํด์๋ ๋ฐ์ดํฐ๊ฐ ์ค์ํ๋ฐ์. ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๊ฐ๊ณตํ ์ ์๋์ง ์๋ ค์ฃผ์ธ์."์ ๊ฐ์ด ๊ฒ์ํฉ๋๋ค. ์ด๋ OpenSearch์ ์์ฑํ AI์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ค์ด ์์ด์ผ ํฉ๋๋ค. "Knowledge Guru"์ ๊ฒฝ์ฐ์ OpenSearch์ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ LLM์ผ๋ก ํ๊ฐํ์ฌ ๊ด๋ จ๋ ๋ฌธ์๋ง์ ์ถ์ถํ์ฌ ๋ต๋ณ์ ์์ฑํฉ๋๋ค. ๋ํ ์ถ์ถ๋ ๋ต๋ณ์ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ์ฌ ์ค์ ํค์๋๋ฅผ ์ถ์ถํ ํ์ OpenSearch๋ฅผ ์ด์ฉํด ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์์งํ์ฌ ๋ต๋ณ์ ํฅ์(Revise)ํฉ๋๋ค.
์ฌ๋ฌ ๋ฐฉ์์ 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๋ฅผ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋์ด์ ์ธํ๋ผ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ์ ์๋์ฒ๋ผ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค.
-
API Gateway Console๋ก ์ ์ํ์ฌ "rest-api-for-langgraph-agent", "ws-api-for-langgraph-agent"์ ์ญ์ ํฉ๋๋ค.
-
Cloud9 Console์ ์ ์ํ์ฌ ์๋์ ๋ช ๋ น์ด๋ก ์ ์ฒด ์ญ์ ๋ฅผ ํฉ๋๋ค.
cd ~/environment/langgraph-agent/cdk-langgraph-agent/ && cdk destroy --all





















