[LLM] LangGraph

๊ด๋ จ ์ ํ ํฌ์คํธ
https://blog.naver.com/sssang97/224080593051
https://blog.naver.com/sssang97/223884516216
langgraph๋ langchain์ด ํ์ฅ๋ ํํ์ ์์ด์ ํธ ๊ฐ๋ฐ์ฉ ํ๋ ์์ํฌ๋ค.
๊ตฌ์กฐํ๋ ์์ด์ ํธ๊ฐ ์ํธ์์ฉ์ ์ ์ง์ํ๊ธฐ ๋๋ฌธ์, ๋ฉํฐ์์ด์ ํธ ๊ธฐ๋ฐ์ ๋ณต์กํ ์๊ตฌ์ฌํญ์ด ํ์ํ ๊ฒฝ์ฐ๋ผ๋ฉด langchain๋ณด๋ค๋ langgraph๋ฅผ ์ ํํ๋ ๊ฒ์ด ๊ถ์ฅ๋๋ค.
์ฌ๊ธฐ์๋ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ ๊ตฌ์กฐ๋ง ๊ฐ๋จํ๊ฒ ๋ค๋ค๋ณธ๋ค.
์ข ์์ฑ ๊ตฌ์ฑ (with Gemini)
uv๋ฅผ ์ฐ๊ณ , gemini๋ฅผ ์ด๋ค๊ณ ๊ฐ์ ํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ํ ์ข ์์ฑ์ ์ด ์ ๋๋ค.
[project]
name = "langchain-test"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"langchain>=1.0.0",
"langchain-google-genai>=1.0.0",
"python-dotenv>=1.0.0",
"langgraph>=0.1.0",
]
langgraph๋ฅผ ์ด๋ค๊ณ ํด์ langchain์ ์ฐ์ง ์๊ฒ ๋๋ ๊ฒ์ ์๋๋ค.
ํฌํจ ํํ๋ก ํ์ฅ๋ ๊ฒ์ด๋ผ์ ๋ ๋ค ์จ์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋น์ฐํ gemini์ฉ llm driver๋ ํ์ํ๋ค.
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
์, ๊ทธ๋ผ langgraph๋ฅผ ๊ฐ์ ธ๋ค๊ฐ ๋ฉํฐ์์ด์ ํธ๋ฅผ ๊ตฌ์ฑํด๋ณด์.
์ด๋ค ์์ด์ ํธ๋ฅผ ํธ์ถํ ์ง ์ ํํ๋ intro ์์ด์ ํธ, ๊ทธ๋ฆฌ๊ณ ์ค์ง์ ์ธ ๋์์ ์ํํ๋ help, smalltalk ์์ด์ ํธ 2๊ฐ์ง๋ฅผ ๊ตฌ์ฑํด๋ณด๊ฒ ๋ค.
์ผ๋จ ์ํ์ ๋ํ ์ ์๊ฐ ํ์ํ๋ค.
์ด๊ฑด ์์ด์ ํธ ๊ฐ ์ํ, ๋ํ ๊ณต์ ๋ฑ์ ์ฌ์ฉ๋ ๊ฒ์ด๋ค. ์ด๊ฒ ํต์ฌ ๊ตฌ์ฑ ์์ ์ค ํ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋จผ์ intro ์์ด์ ํธ์ ํ๋กฌํํธ๋ฅผ ๊ตฌ์ฑํ๋ค.
์ด ์์ด์ ํธ๋ ๋ํ๋ฅผ ๋ถ์ํด์ ์ด๋ค ์์ด์ ํธ์๊ฒ ์ฒ๋ฆฌ๋ฅผ ์์ํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฐ๋จํ ์์ด์ ํธ๋ค.
๊ทธ๋์ ํด๋น ๋ํ๋ฅผ "๋ถ๋ฅ"ํ ๋ค์์, ์ด๋ค ์์ด์ ํธ๋ก ๋ณด๋ผ์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
๋๋จธ์ง 2๊ฐ ์์ด์ ํธ๋ intro๊ฐ ๋์ง ์ํ๊ฐ์ ํ ๋๋ก ์ต์ข ๋์์ ์ํํ๋ ์์ด์ ํธ๋ค.

๊ตฌํ ์์ฒด๋ ๋งค์ฐ ๋จ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ 3๊ฐ์ง ์์ด์ ํธ๋ฅผ ๊ฐ์ ธ๋ค๊ฐ ๊ทธ๋ํ ๊ตฌ์กฐ๋ฅผ ์ ์ํด์ผ ํ๋ค.
๊ฐ ์์ด์ ํธ๋ฅผ "๋
ธ๋"๋ก ๋ฑ๋กํ๊ณ , ์ด๋์์ ์ด๋ค ๋
ธ๋๋ก ์ด๋ํ ์ ์๋์ง๋ฅผ ๊ทธ๋ํ ๊ตฌ์กฐ๋ก ์ ์ธํ๋ค.
์ด๋ ๊ฒ ์ ์๋ ํ๋ฆ์ ๋ฐ๋ผ์ ์์ด์ ํธ๊ฐ ์คํ๋๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ route_to_agent๋ ์ํ๊ฐ์ intent ๊ฐ์ ํ ๋๋ก ์ด๋ค ๋
ธ๋๋ฅผ ๋ณด๋ผ์ง๋ฅผ ๊ณจ๋ผ์ค๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๊ทธ๋ํ๋ฅผ ํ ๋๋ก "์ปดํ์ผ"์ ์คํํ๋ฉด, ์ต์ข
์ ์ผ๋ก ํธ์ถํ ์ ์๋ ์์ด์ ํธ flow๊ฐ ์์ฑ๋๋ค.
์ค์ ๋ก ์คํํ ๋๋ ์ปดํ์ผ๋ app์ผ๋ก invoke๋ฅผ ํธ์ถํ๋ฉด ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ต์ด state๋ฅผ ์ฃผ์
ํด์ค์ผ ํ๋ค.
์, ๊ทธ๋ฌ๋ฉด ์คํํด๋ณด์.
์ฌ์ํ ์๋ค๋ฅผ ๋์ง๋ฉด smalltalk ์์ด์ ํธ๋ก ๋ผ์ฐํ
ํด์ฃผ๊ณ
์ข ์ ๋๋ก ๋ ์ง๋ฌธ์ ๋์ง๋ฉด help agent๋ก ๋๊ฒจ์ ๋ตํด์ค๋ค.
๊ทผ๋ฐ ์ง์ ์์ค์ด ๊ตฌ๋ฆฌ๊ธด ํ๋๋ผ. ์ ๊ฑด ๋ค ์ ๋ช
ํ ๋ธ๋๋์ง, ๊ฐ์ฑ๋น ๋์๊ณ ๋น์ผ ๋ธ๋๋๋ค.
์ ์ฒด ์ฝ๋๋ github์ ์ฐธ์กฐํ๊ธธ ๋ฐ๋๋ค.
https://github.com/myyrakle/oddments/tree/master/Python_Example/agent/langgraph_basic
์ด๋ฐ ๊ฒ๋ค ์ธ์๋ ๋ณด์กฐ์ ์ธ ๊ธฐ๋ฅ๋ค์ด ๋ง๋ค.
Tools, MCP ๋ฑ ์์ด์ ํธ ๊ฐ๋ฐ์ ํ์ํ ๊ฒ๋ค์ ์ฌ๋งํด์๋ ๋ค ์๋ค.
๋ ์์ธํ ๋ด์ฉ๋ค์ ๋ณ๋ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ๊ธธ ๋ฐ๋๋ค.
https://langchain-ai.github.io/langgraph/guides/
์ฐธ์กฐ
https://wikidocs.net/261577
https://langchain-ai.github.io/langgraph/concepts/why-langgraph/
https://github.com/langchain-ai/langgraph