728x90
๋ฐ์ํ
๐ฏ ๋ฌธ์ ์ํฉ (๊ณตํต)
์๊ตฌ์ฌํญ
- ์ฌ์ฉ์๊ฐ ์ง๋ฌธํจ
- SQL ์์ฑ
- ์คํ
- โ ์๋ฌ ๋๋ฉด ๋ค์ SQL ์์ฑ
- โ ์ฑ๊ณตํ๋ฉด ๊ฒฐ๊ณผ ์ค๋ช
๐ ์ด ์๊ฐ๋ถํฐ LangChain์ด ๋ฒ๊ฑฐ์์ง
1๏ธโฃ LangChain ๋ฐฉ์ (์ฒ์์ ์ด๋ ๊ฒ ์์ํจ)


๊ตฌ์กฐ
์ง๋ฌธ → SQL ์์ฑ → ์คํ → ๋ต๋ณ
์ฝ๋ (๊ฐ๋ ์์)
from langchain.chains import LLMChain
sql_chain = LLMChain(
llm=llm,
prompt=sql_prompt
)
answer_chain = LLMChain(
llm=llm,
prompt=answer_prompt
)
sql = sql_chain.run(question)
result = run_sql(sql) # โ ์ฌ๊ธฐ์ ์๋ฌ ๋๋ฉด ๋
answer = answer_chain.run(result)
โ ๋ฌธ์ ์
- SQL ์๋ฌ ๋๋ฉด?
- try/except๋ก ๊ฐ์ธ์ผ ํจ
- ๋ค์ SQL ๋ง๋ค๊ณ ์ถ์ผ๋ฉด?
- ์ฝ๋๊ฐ ์ ์ ์ง์ ๋ถ
- ์ฌ์๋ ๋ก์ง?
- ์ฒด์ธ ๋ฐ๊นฅ์์ ์๋ ์ฒ๋ฆฌ
๐ “ํ๋ฆ์ด LLM ๋ฐ์ ์์”
๐จ ๋ฆฌํฉํ ๋ง ์ ํธ
์ด ์ฝ๋๊ฐ ๋์ค๊ธฐ ์์ํ๋ฉด ๐
for i in range(3):
try:
sql = sql_chain.run(question)
result = run_sql(sql)
break
except:
question = fix_question(question)
๐ LangGraph๋ก ๋์ด๊ฐ์ผ ํ ํ์ด๋ฐ
2๏ธโฃ LangGraph ๋ฐฉ์ (๋ฆฌํฉํ ๋ง ํ)


ํต์ฌ ๋ณํ
- ํ๋ฆ์ ์ฝ๋ if/for๋ก ์ ์ด โ
- ํ๋ฆ์ ๊ทธ๋ํ ๊ตฌ์กฐ๋ก ์ ์ธ โญ
๐ง State ์ ์ (๊ณต์ ์ํ)
from typing import TypedDict
class State(TypedDict):
question: str
sql: str
result: str
error: str
๐งฉ Node ์ ์
SQL ์์ฑ ๋ ธ๋
def generate_sql(state):
sql = llm.invoke(f"SQL ๋ง๋ค์ด์ค: {state['question']}")
return {"sql": sql}
SQL ์คํ ๋ ธ๋
def execute_sql(state):
try:
result = run_sql(state["sql"])
return {"result": result, "error": None}
except Exception as e:
return {"error": str(e)}
์๋ฌ ํ๋จ ๋ ธ๋
def check_error(state):
if state["error"]:
return "retry"
return "success"
๐ธ๏ธ Graph ๊ตฌ์ฑ
from langgraph.graph import StateGraph
graph = StateGraph(State)
graph.add_node("generate_sql", generate_sql)
graph.add_node("execute_sql", execute_sql)
graph.set_entry_point("generate_sql")
graph.add_edge("generate_sql", "execute_sql")
graph.add_conditional_edges(
"execute_sql",
check_error,
{
"retry": "generate_sql",
"success": graph.END
}
)
โถ ์คํ
graph.invoke({
"question": "์ง๋๋ฌ ๋งค์ถ ์๋ ค์ค"
})
๐ ๋ฆฌํฉํ ๋ง ํต์ฌ ์์ฝ
ํญ๋ชฉLangChainLangGraph
| ํ๋ฆ ์ ์ด | ์ฝ๋(if/for) | ๊ทธ๋ํ |
| ์ฌ์๋ | ์๋ | ์๋ |
| ์ํ ๊ด๋ฆฌ | ๋ณ์ | State |
| ํ์ฅ | ์ด๋ ค์ | ์ฌ์ |
| ์์ด์ ํธํ | โ | โญ |
๐ง ๊ตฌ์กฐ ๋น๊ต ํ ๋์
LangChain
Python ์ฝ๋๊ฐ ํ๋ฆ ๊ด๋ฆฌ
LLM์ ์ค๊ฐ ๋ถํ
LangGraph
LLM + ํ๋ฆ ์์ฒด๊ฐ ์์คํ
AI๊ฐ ์ผํจ
๐ฏ ๋ฉด์ ์์ ์ด๋ ๊ฒ ๋งํ๋ฉด ์ข๋ค
LangChain์ผ๋ก ๋จ์ ํ์ดํ๋ผ์ธ์ ๋ง๋ค๊ณ ,
SQL ๊ฒ์ฆ·์ฌ์๋·ํ๋จ ๋ก์ง์ด ์ถ๊ฐ๋๋ฉด์
LangGraph๋ก ๋ฆฌํฉํ ๋งํด ์์ด์ ํธ ํํ๋ก ํ์ฅํ์ต๋๋ค.
๐ฅ DE ๊ด์ ํ ์ค ์ ๋ฆฌ
LangChain → PoC
LangGraph → ์ด์ ๊ฐ๋ฅํ LLM ์์คํ
728x90
๋ฐ์ํ
'๐ค AI > LLM' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| LangChain โ LangGraph๋ก ์ธ์ ๋์ด๊ฐ์ผ ํ๋ (0) | 2026.01.30 |
|---|---|
| ๐งญ LangGraph๋? (0) | 2026.01.30 |
| ๐ LangChain ์ด๋? (0) | 2026.01.30 |
| LLM์ด๋? (0) | 2026.01.30 |