๋ฐ˜์‘ํ˜•
kkh1902
Steadily
kkh1902
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (178)
    • DataEngineering (20)
      • Spark (7)
      • Airflow (2)
      • DBT (2)
      • Architecture (3)
      • Data Quality (5)
      • Infra (1)
    • ๐Ÿค– AI (12)
      • ML (7)
      • DL (0)
      • LLM (5)
    • ๐Ÿ“š Study (74)
      • DataEngineering (0)
      • Spring (9)
      • Java (2)
      • Html, css (10)
      • JS, JQuery (29)
      • DB (5)
      • DevOps (13)
      • roadmap (2)
      • Architecture (1)
      • Flutter (2)
    • ๐Ÿ’ป Computer Science (28)
      • Datastructure (0)
      • Algorithm (2)
      • Design pattern (0)
      • Network (1)
      • DB (13)
      • Operating System (0)
      • Software Engineering (4)
      • CS interview (5)
      • topcit (3)
    • โš’๏ธ Etc (6)
      • Error (3)
      • Trouble_Shooting (2)
      • Dev_environment (1)
    • ๐Ÿ“ฐ News (24)
      • daily (7)
      • think (17)
    • ๐Ÿ“˜ Hobby (13)
      • English (13)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿ“‹ ์ด๋ ฅ์„œ
  • โšก๏ธ ๊นƒํ—ˆ๋ธŒ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • React JS # 2 The Basic of React
  • db
  • React # JSX
  • sourcetreee
  • ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ # chapter1
  • git stash
  • React๋ฅผ ๋ฐฐ์›Œ์•ผํ•˜๋Š” ์ด์œ 
  • React JS #์ž์Šต์„œ
  • think #bootstrap์„ ์จ์•ผํ•˜๋Š” ์ด์œ 
  • Wonder # word
  • SpringBootTest
  • gitaction
  • Flutter
  • ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ #project๋งŒ๋“ค๋•Œ ์ค‘์š”
  • junit5
  • git
  • testcode
  • Qr_payment project # CSS ํ•ด์„ # Basic ๋งจ์œ„ ํ•ด์„
  • Linear Regression
  • React JS # ์ž์Šต์„œ # Component์™€ Props

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.
๊ธ€์“ฐ๊ธฐ / ๊ด€๋ฆฌ์ž
kkh1902

Steadily

๐Ÿค– AI/LLM

๊ฐ™์€ ๋ฌธ์ œ๋ฅผ LangChain → LangGraph๋กœ ๋ฐ”๊พธ๋Š” ์˜ˆ์‹œ

2026. 1. 30. 20:34
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
    '๐Ÿค– AI/LLM' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • LangChain → LangGraph๋กœ ์–ธ์ œ ๋„˜์–ด๊ฐ€์•ผ ํ•˜๋‚˜
    • ๐Ÿงญ LangGraph๋ž€?
    • ๐Ÿ”— LangChain ์ด๋ž€?
    • LLM์ด๋ž€?
    kkh1902
    kkh1902
    1Day 1 Commit ๋ชฉํ‘œ ๊ณต๋ถ€ํ•œ๊ฒƒ๋“ค ๋งค์ผ ๊ธฐ๋กํ•˜๊ธฐ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”