Skip to content

ืคื™ืชื•ื— ืขื ืžื•ื“ืœื™ ืฉืคื” ื’ื“ื•ืœื™ื (LLM) ืžืชื—ื™ืœ ื‘ื“ืจืš ื›ืœืœ ื‘ืœื•ืœืืช ื‘ืงืฉื”-ืชื’ื•ื‘ื” ืคืฉื•ื˜ื”. ืืš ื‘ืจื’ืข ืฉื”ืžืฉื™ืžื” ื—ื•ืจื’ืช ืžื’ื‘ื•ืœื•ืช ืฆ'ืื˜ื‘ื•ื˜ ืคืฉื•ื˜ ื•ื“ื•ืจืฉืช ืžื”ืžื•ื“ืœ ืœื‘ืฆืข ืคืขื•ืœื•ืช ืžืžืฉื™ื•ืช โ€” ื›ืžื• ืฉื™ืœื•ื‘ ื›ืœื™ื (tools) ื—ื™ืฆื•ื ื™ื™ื, ืขื‘ื•ื“ื” ืขื ืžืกื“ื™ ื ืชื•ื ื™ื ืื• ื’ื™ืฉื” ืœืžืขืจื›ืช ื”ืงื‘ืฆื™ื โ€” ืื ื• ื ืชืงืœื™ื ื‘ืืชื’ืจ ื™ืกื•ื“ื™. ื”-API ื”ืกื˜ื ื“ืจื˜ื™ ืฉืœ ื”ืžื•ื“ืœ ื”ื•ื ื—ืกืจ ืžืฆื‘ (stateless) ืžื˜ื‘ืขื• ื•ืื™ืŸ ืœื• ืžื ื’ื ื•ื ื™ื ืžื•ื‘ื ื™ื ืœื ื™ื”ื•ืœ ืœื•ื’ื™ืงื” ืžื•ืจื›ื‘ืช.

ืžืฉื™ืžื” ืฉื ืจืื™ืช ืคืฉื•ื˜ื”, ื›ืžื• "ื ืชื— ืืช ื”ืงื•ื‘ืฅ ื”ื–ื”, ืžืฆื ื ืชื•ื ื™ื ืจืœื•ื•ื ื˜ื™ื™ื ื‘ืื™ื ื˜ืจื ื˜ ื•ื”ืคืง ื“ื•ื—", ื”ื•ืคื›ืช ืœืืชื’ืจ ืชื–ืžื•ืจ (orchestration) ืžื•ืจื›ื‘:

  • ื›ื™ืฆื“ ืžื ื”ืœื™ื ืžืฆื‘ (state) ื•ืžืขื‘ื™ืจื™ื ื”ืงืฉืจ (context) ื‘ื™ืŸ ืงืจื™ืื•ืช ืžืจื•ื‘ื•ืช ืœ-LLM?
  • ื›ื™ืฆื“ ืžืžืžืฉื™ื ืœื•ื’ื™ืงื” ืžื—ื–ื•ืจื™ืช (cyclical), ืฉื‘ื” ืกื•ื›ืŸ ืžืงื™ื™ื ืื™ื ื˜ืจืืงืฆื™ื” ื—ื•ื–ืจืช ื•ื ืฉื ื™ืช ืขื ื›ืœื™ื ืขื“ ืœื”ืฉื’ืช ื”ืžื˜ืจื”?
  • ื›ื™ืฆื“ ืžืชืงื ื ื™ื ื—ื™ื‘ื•ืจื™ื ืœืžื•ื“ืœื™ื ืฉื•ื ื™ื (OpenAI, Gemini, ืžืงื•ืžื™ื™ื) ื•ืœื›ืœื™ื, ืžื‘ืœื™ ืœืฉื›ืชื‘ ืืช ื”ืงื•ื“ ื‘ื›ืœ ืคืขื?

LangChain ื•-LangGraph ื ื•ืฆืจื• ื›ื“ื™ ืœืคืฉื˜ ืืช ื”ืคื™ืชื•ื— ืฉืœ ืžืขืจื›ื•ืช ื›ืืœื” ื•ืœืกืคืง ืœืžืคืชื—ื™ื ื’ื™ืฉื” ืกื˜ื ื“ืจื˜ื™ืช ืœืืชื’ืจ ื”ืชื–ืžื•ืจ ื”ื–ื”:

  • LangChain ืžืกืคืง ืขืจื›ืช ื›ืœื™ื ืžืื•ื—ื“ืช: ืžืžืฉืงื™ื ืกื˜ื ื“ืจื˜ื™ื™ื ืœืžื•ื“ืœื™ื, ืจื›ื™ื‘ื™ื ืœืคืจื•ืžืคื˜ื™ื ื•ื›ืœื™ื.
  • LangGraph ื”ื™ื ืžืกื’ืจืช ืคื™ืชื•ื— (framework) ื”ื‘ื ื•ื™ื” ืขืœ ื’ื‘ื™ LangChain, ื”ืžืืคืฉืจืช ืœื‘ื ื•ืช ืืช ืœื•ื’ื™ืงืช ืงื‘ืœืช ื”ื”ื—ืœื˜ื•ืช ืฉืœ ื”ืกื•ื›ืŸ ื›ื’ืจืฃ ืžืฆื‘ื™ื (state graph), ื•ื‘ื›ืš ืคื•ืชืจืช ื‘ืืœื’ื ื˜ื™ื•ืช ืืช ื‘ืขื™ื™ืช ื”ืœื•ืœืื•ืช ื•ื”ื”ืกืชืขืคื•ื™ื•ืช.

ื›ื“ื™ ืœื”ื‘ื™ืŸ ื˜ื•ื‘ ื™ื•ืชืจ ืืช ืชืคืงื™ื“ื™ื”ื, ื ืฉืชืžืฉ ื‘ืื ืœื•ื’ื™ื”.

ื“ืžื™ื™ื ื• ืฉืืชื ื‘ื•ื ื™ื ืžืฉื”ื• ืžืœื’ื•. ื™ืฉ ืœื›ื ืงื•ื‘ื™ื•ืช ื‘ื•ื“ื“ื•ืช (ืžื ื•ืขื™ื, ื’ืœื’ืœื™ื, ื‘ืœื•ืงื™ื), ืืš ื‘ืคื ื™ ืขืฆืžืŸ ื”ืŸ ืจืง ื—ืœืงื™ื. ื›ื“ื™ ืœื”ืจื›ื™ื‘ ืžื”ืŸ ืžื›ื•ื ื” ืขื•ื‘ื“ืช, ืืชื ืฆืจื™ื›ื™ื ื”ื•ืจืื•ืช ื•ื”ื‘ื ื” ื›ื™ืฆื“ ืœื—ื‘ืจ ืืช ื”ื—ืœืงื™ื ื”ืœืœื• ื™ื—ื“.

ื‘ืขื•ืœื ืฉืœ ืกื•ื›ื ื™ ื‘ื™ื ื” ืžืœืื›ื•ืชื™ืช:

  • LangChain ื”ื•ื ืขืจื›ืช ืงื•ื‘ื™ื•ืช ื”ืœื’ื• ื”ืžืชืงื“ืžืช ืฉืœื›ื.
  • LangGraph ื”ื•ื ืกืคืจ ื”ื”ื•ืจืื•ืช ื”ืžืฉื•ื›ืœืœ ื”ืžืืคืฉืจ ืœื›ื ืœื”ืจื›ื™ื‘ ืžื”ืงื•ื‘ื™ื•ืช ื”ืœืœื• ืœื ืจืง ืžื•ื“ืœื™ื ืกื˜ื˜ื™ื™ื, ืืœื ืžื ื’ื ื•ื ื™ื ื“ื™ื ืžื™ื™ื ื•'ื—ื›ืžื™ื' ื”ืžืกื•ื’ืœื™ื ืœืงื‘ืœ ื”ื—ืœื˜ื•ืช.

โ€ฆ

ื‘ื•ืื• ื ืคืจืง ื›ืœ ืื—ื“ ืžื”ื›ืœื™ื ื”ืœืœื• ื‘ื ืคืจื“.

ื—ืœืง 1: LangChain โ€” ืืจื’ื– ื”ื›ืœื™ื ืœืขื‘ื•ื“ื” ืขื LLMs

ื”ืžื˜ืจื” ื”ืขื™ืงืจื™ืช ืฉืœ LangChain: ืœืคืฉื˜ ื•ืœืชืงื ืŸ ืืช ื”ืื™ื ื˜ืจืืงืฆื™ื” ื‘ื™ืŸ ื”ืงื•ื“ ืฉืœื›ื ืœืžื•ื“ืœื™ ืฉืคื” ื’ื“ื•ืœื™ื (LLMs). ื”ื•ื ืžืกืคืง ืจื›ื™ื‘ื™ื ืžื•ื›ื ื™ื ืœืฉื™ืžื•ืฉ ("ืงื•ื‘ื™ื•ืช") ืœืคืชืจื•ืŸ ืžืฉื™ืžื•ืช ื ืคื•ืฆื•ืช.

ืจื›ื™ื‘ื™ ืžืคืชื— ื‘-LangChain (ื”"ืงื•ื‘ื™ื•ืช" ืฉืœื ื•):

1. ืžื•ื“ืœื™ื (Models)
ืืœื• ื”ืŸ "ืขื˜ื™ืคื•ืช" (wrappers) ืœืื™ื ื˜ืจืืงืฆื™ื” ื™ืฉื™ืจื” ืขื ืจืฉืชื•ืช ื ื•ื™ืจื•ื ื™ื. LangChain ืžื—ืœืง ืื•ืชื ืœืฉื ื™ ืกื•ื’ื™ื:

  • LLMs: ื”ืžืžืฉืง ื”ื™ืฉืŸ ื™ื•ืชืจ. ืžืงื‘ืœ ืžื—ืจื•ื–ืช ื˜ืงืกื˜ ื›ืงืœื˜, ื•ืžื—ื–ื™ืจ ืžื—ืจื•ื–ืช ื˜ืงืกื˜.
    • ื“ื•ื’ืžื”: llm.invoke("What color is the sky?") โ† "The sky is blue."
  • ChatModels: ื”ืžืžืฉืง ื”ืžื•ื“ืจื ื™ ื•ื”ื—ื–ืง ื™ื•ืชืจ. ืขื•ื‘ื“ ืขื ืจืฉื™ืžืช ื”ื•ื“ืขื•ืช (HumanMessage, AIMessage, SystemMessage). ื–ื” ืžืืคืฉืจ ืœืžื•ื“ืœ ืœื”ื‘ื™ืŸ ื˜ื•ื‘ ื™ื•ืชืจ ืืช ื”ื”ืงืฉืจ ืฉืœ ื”ืฉื™ื—ื”.
    • ื“ื•ื’ืžื”: chat.invoke([HumanMessage(content="What color is the sky?")]) โ† AIMessage(content="The sky is usually blue...")

LangChain ืžืื—ื“ ืืช ื”-API. ืืชื ืœื ืฆืจื™ื›ื™ื ืœืœืžื•ื“ ืื™ืš ืœืขื‘ื•ื“ ื‘ื ืคืจื“ ืขื OpenAI, Gemini ืื• Ollama ืžืงื•ืžื™. ืืชื ืคืฉื•ื˜ ืžื—ืœื™ืคื™ื ืื•ื‘ื™ื™ืงื˜ ืื—ื“ ื›ืžื• ChatOpenAI ื‘-ChatGoogleGenerativeAI ืื• ChatOllama, ื•ืฉืืจ ื”ืงื•ื“ ืฉืœื›ื ืžืžืฉื™ืš ืœืขื‘ื•ื“.

2. ืคืจื•ืžืคื˜ื™ื (Prompts)
ืืœื• ื”ืŸ ืชื‘ื ื™ื•ืช ืœื‘ืงืฉื•ืช ืฉืœื›ื ืœืžื•ื“ืœ. ื‘ืžืงื•ื ืœื”ืจื›ื™ื‘ ื™ื“ื ื™ืช ืืช ื˜ืงืกื˜ ื”ื‘ืงืฉื” ื‘ื›ืœ ืคืขื, ืืชื ื™ื•ืฆืจื™ื ืชื‘ื ื™ืช ืขื ืžืฉืชื ื™ื.

from langchain_core.prompts import ChatPromptTemplate

template = ChatPromptTemplate.from_messages([
    ("system", "You are a helpful assistant that translates text into {output_language}."),
    ("human", "{text_to_translate}")
])

prompt_value = template.invoke({"output_language": "French", "text_to_translate": "I love programming."})

ืคืจื•ืžืคื˜ื™ื ื”ื•ืคื›ื™ื ืืช ื”ื‘ืงืฉื•ืช ืฉืœื›ื ืœื ื™ืชื ื•ืช ืœืฉื—ื–ื•ืจ, ื‘ื˜ื•ื—ื•ืช ื•ืงืœื•ืช ืœืฉื™ื ื•ื™. ืืชื ืžืคืจื™ื“ื™ื ืืช ื”ืœื•ื’ื™ืงื” ืฉืœ ื™ืฆื™ืจืช ื”ื‘ืงืฉื” ืžื”ืœื•ื’ื™ืงื” ืฉืœ ืงืจื™ืื” ืœืžื•ื“ืœ.

3. ืฉืจืฉืจืื•ืช (Chains ื•ืฉืคืช LCEL)
ื–ื”ื• ื”ืœื‘ ืฉืœ LangChain ื”ืžื•ืงื“ื. ืฉืจืฉืจืช ื”ื™ื ื—ื™ื‘ื•ืจ ืจืฆื™ืฃ ืฉืœ ืžืกืคืจ ืจื›ื™ื‘ื™ื. ื›ื™ื•ื, ืžืฉืชืžืฉื™ื ืœืฉื ื›ืš ื‘-LangChain Expression Language (LCEL), ืฉื ืจืื” ื›ืžื• ืฆื™ื ื•ืจ (|).

ื”ืฉืจืฉืจืช ื”ืคืฉื•ื˜ื” ื‘ื™ื•ืชืจ: ืคืจื•ืžืคื˜ | ืžื•ื“ืœ.

chain = template | get_gemini_llm()
response = chain.invoke({"output_language": "German", "text_to_translate": "Hello, world!"})
# response.content ื™ื›ื™ืœ "Hallo, Welt!"

ืฉืจืฉืจืื•ืช ืžืืคืฉืจื•ืช ืœื›ื ืœื™ืฆื•ืจ ืชื”ืœื™ื›ื™ ืขื‘ื•ื“ื” ืคืฉื•ื˜ื™ื. ืœื“ื•ื’ืžื”, ืชื—ื™ืœื” ืœืงื‘ืœ ื ืชื•ื ื™ื ืžื”ืžืฉืชืžืฉ, ืื—ืจ ื›ืš ืœื™ืฆื•ืจ ืคืจื•ืžืคื˜, ืœืฉืœื•ื— ืื•ืชื• ืœืžื•ื“ืœ, ื•ืœื‘ืกื•ืฃ, ืœืขื‘ื“ ืืช ื”ืชื’ื•ื‘ื”.

4. ืžื ืชื—ื™ ืคืœื˜ (Output Parsers)
ืžื•ื“ืœื™ื ืžื—ื–ื™ืจื™ื ื˜ืงืกื˜, ืื‘ืœ ื‘ื™ื™ืฉื•ืžื™ื ืื ื—ื ื• ืœืขื™ืชื™ื ืงืจื•ื‘ื•ืช ืฆืจื™ื›ื™ื ื ืชื•ื ื™ื ืžื•ื‘ื ื™ื (JSON, ืจืฉื™ืžื”, ืžืกืคืจ). ืžื ืชื—ื™ ื”ืคืœื˜ ืžืžื™ืจื™ื ืืช ืชื’ื•ื‘ืช ื”ื˜ืงืกื˜ ื”"ื’ื•ืœืžื™ืช" ืฉืœ ื”ืžื•ื“ืœ ืœืคื•ืจืžื˜ ื”ืจืฆื•ื™.

from langchain_core.output_parsers import JsonOutputParser

# ... ื™ื•ืฆืจื™ื ืคืจื•ืžืคื˜ ืฉืžื‘ืงืฉ ืžื”ืžื•ื“ืœ ืœื”ืฉื™ื‘ ื‘ืคื•ืจืžื˜ JSON
parser = JsonOutputParser()
chain = template | get_openai_llm() | parser

# ื›ืขืช chain.invoke(...) ืœื ื™ื—ื–ื™ืจ ืื•ื‘ื™ื™ืงื˜ ื˜ืงืกื˜, ืืœื ืžื™ืœื•ืŸ ืคื™ื™ืชื•ืŸ (dict)

ื›ื“ื™ ืฉื”ืงื•ื“ ืฉืœื›ื ื™ื•ื›ืœ ืœืขื‘ื•ื“ ืขื ื”ืชื•ืฆืื” ื‘ืื•ืคืŸ ืคืจื•ื’ืจืžื˜ื™. ื‘ืžืงื•ื ืœื ืกื•ืช ืœื—ืœืฅ ืืช ื”ื ืชื•ื ื™ื ื”ื“ืจื•ืฉื™ื ืžืžื—ืจื•ื–ืช ื˜ืงืกื˜, ืืชื ืžืงื‘ืœื™ื ืื•ื‘ื™ื™ืงื˜ ืžื•ื›ืŸ ืœืฉื™ืžื•ืฉ.

5. ื›ืœื™ื (Tools)
ื–ื” ืžื” ืฉื ื•ืชืŸ ืœืžื•ื“ืœ "ื™ื“ื™ื™ื". ื›ืœื™ ื”ื•ื ื›ืœ ืคื•ื ืงืฆื™ื” ืฉืกื•ื›ืŸ ื™ื›ื•ืœ ืœื”ืคืขื™ืœ. ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช:

  • ื—ื™ืคื•ืฉ ื‘ืื™ื ื˜ืจื ื˜ (TavilySearch, BraveSearch).
  • ืžื—ืฉื‘ื•ืŸ.
  • ืคื•ื ืงืฆื™ื” ืœืงืจื™ืืช ืงื•ื‘ืฅ ืžื”ื“ื™ืกืง.
  • ืงืจื™ืื” ืœ-API ื”ืคื ื™ืžื™ ืฉืœื›ื.

ืžื•ื“ืœ ื‘ืคื ื™ ืขืฆืžื• ืœื ื™ื•ื“ืข ืžื” ืžื–ื’ ื”ืื•ื•ื™ืจ ื”ื™ื•ื ืื• ืžื” ื›ืชื•ื‘ ื‘ืงื•ื‘ืฅ report.docx ืฉืœื›ื. ื›ืœื™ื ื”ื ื”ื“ืจืš ื”ื™ื—ื™ื“ื” ืขื‘ื•ืจื• ืœื’ืฉืช ืœืžื™ื“ืข ื—ื™ืฆื•ื ื™ ื•ืœื‘ืฆืข ืคืขื•ืœื•ืช ื‘ืขื•ืœื ื”ืืžื™ืชื™.


ื—ืœืง 2: LangGraph โ€” ื”ืžื ืฆื— (Orchestrator) ืœื™ืฆื™ืจืช ืกื•ื›ื ื™ื

ืื LangChain ื”ื•ื ืขืจื›ืช ื”ื—ืœืงื™ื, ืื– LangGraph ื”ื•ื ืžืขืจื›ืช ื”ื‘ืงืจื” ืฉืžื—ืœื™ื˜ื” ื‘ืื™ื–ื” ื—ืœืง ืœื”ืฉืชืžืฉ ื•ืžืชื™.

ื”ื‘ืขื™ื” ืฉ-LangGraph ืคื•ืชืจ: ืฉืจืฉืจืื•ืช ืงืœืืกื™ื•ืช ื‘-LangChain ื”ืŸ ืœื™ื ืืจื™ื•ืช. ื”ืŸ ื”ื•ืœื›ื•ืช ืžื ืงื•ื“ื” ื' ืœื ืงื•ื“ื” ื‘'. ืื‘ืœ ืžืฉื™ืžื•ืช ืืžื™ืชื™ื•ืช ืื™ื ืŸ ืœื™ื ืืจื™ื•ืช. ื”ืŸ ื“ื•ืจืฉื•ืช ืœื•ืœืื•ืช, ื”ืกืชืขืคื•ื™ื•ืช ื•ืงื‘ืœืช ื”ื—ืœื˜ื•ืช.

ืœื“ื•ื’ืžื”, ืกื•ื›ืŸ-ื—ื•ืงืจ ื—ื™ื™ื‘:

  1. ืœื”ื‘ื™ืŸ ืืช ื”ื‘ืงืฉื”.
  2. ืœื”ื—ืœื™ื˜: ื”ืื ื™ืฉ ืฆื•ืจืš ื‘ื—ื™ืคื•ืฉ ื‘ืื™ื ื˜ืจื ื˜?
  3. ืื ื›ืŸ โ† ืœื”ืฉืชืžืฉ ื‘ื›ืœื™ ื”ื—ื™ืคื•ืฉ.
  4. ืœื ืชื— ืืช ื”ืชื•ืฆืื•ืช.
  5. ืœื”ื—ืœื™ื˜: ื”ืื ื”ืžื™ื“ืข ืžืกืคื™ืง?
  6. ืื ืœื โ† ืœื—ื–ื•ืจ ืœืฉืœื‘ 3 ืขื ืฉืื™ืœืชื” ืžื“ื•ื™ืงืช ื™ื•ืชืจ (ื–ื• ืœื•ืœืื”).
  7. ืื ื›ืŸ โ† ืœื™ื™ืฆืจ ืืช ื”ืชืฉื•ื‘ื” ื”ืกื•ืคื™ืช.

ืœื•ื’ื™ืงื” ืžื•ืจื›ื‘ืช ื›ื–ื• ืœื ื ื™ืชื ืช ืœืชื™ืื•ืจ ื‘ืืžืฆืขื•ืช ืฉืจืฉืจืช ืคืฉื•ื˜ื”.

ื”ืจืขื™ื•ืŸ ื”ืžืจื›ื–ื™ ืฉืœ LangGraph: ืœื”ืฆื™ื’ ืืช ืคืขื•ืœืช ื”ืกื•ื›ืŸ ื›ื’ืจืฃ ืžืฆื‘ื™ื (ืื• ืชืจืฉื™ื ื–ืจื™ืžื”).

ืจื›ื™ื‘ื™ ืžืคืชื— ื‘-LangGraph (ืจื›ื™ื‘ื™ ืชืจืฉื™ื ื”ื–ืจื™ืžื”):

1. ืžืฆื‘ (State)
ื–ื”ื• ื”ื–ื™ื›ืจื•ืŸ ื”ืžืจื›ื–ื™ ืฉืœ ื›ืœ ื”ืชื”ืœื™ืš. ื‘ื“ืจืš ื›ืœืœ ื–ื”ื• ืžื™ืœื•ืŸ ืคื™ื™ืชื•ืŸ (TypedDict) ื”ืžื•ืขื‘ืจ ืžืฉืœื‘ ืื—ื“ ืœืฉื ื™. ื›ืœ ืฉืœื‘ ื™ื›ื•ืœ ืœืงืจื•ื ืžืžื ื• ื ืชื•ื ื™ื ื•ืœื›ืชื•ื‘ ืืœื™ื• ื ืชื•ื ื™ื ื—ื“ืฉื™ื.

ื“ื•ื’ืžื” ืœืžืฆื‘: {"user_request": "...", "search_results": [], "final_answer": None}.

2. ืฆืžืชื™ื (Nodes)
ืืœื• ื”ื ื‘ืœื•ืงื™ ื”ืคืขื•ืœื” ื‘ืชืจืฉื™ื ื”ื–ืจื™ืžื” ืฉืœื›ื. ื›ืœ ืฆื•ืžืช ื”ื•ื ืคื•ื ืงืฆื™ื™ืช ืคื™ื™ืชื•ืŸ ืืฉืจ:

  • ืžืงื‘ืœืช ืืช ื”ืžืฆื‘ ื”ื ื•ื›ื—ื™ ื›ืงืœื˜.
  • ืžื‘ืฆืขืช ืคืขื•ืœื” ื›ืœืฉื”ื™ (ืงื•ืจืืช ืœ-LLM, ืžืฉืชืžืฉืช ื‘ื›ืœื™).
  • ืžื—ื–ื™ืจื” ืืช ื”ืžืฆื‘ ื”ืžืขื•ื“ื›ืŸ.

ื“ื•ื’ืžืื•ืช ืœืฆืžืชื™ื: call_model_node, execute_tool_node, analyze_results_node.

3. ืงืฉืชื•ืช (Edges)
ืืœื• ื”ื ื”ื—ื™ืฆื™ื ื”ืžื—ื‘ืจื™ื ื‘ื™ืŸ ื”ืฆืžืชื™ื. ื”ื ืงื•ื‘ืขื™ื ืื™ื–ื” ืฆื•ืžืช ื™ื•ืคืขืœ ื”ื‘ื. ื™ืฉื ื ืฉื ื™ ืกื•ื’ื™ื ืฉืœ ืงืฉืชื•ืช:

  • ืงืฉืชื•ืช ืจื’ื™ืœื•ืช: ืคืฉื•ื˜ ืžื—ื‘ืจื•ืช ืฆื•ืžืช ื' ืœืฆื•ืžืช ื‘'. ืœืื—ืจ ืกื™ื•ื ื', ืชืžื™ื“ ื™ื•ืคืขืœ ื‘'.
  • ืงืฉืชื•ืช ืžื•ืชื ื•ืช (Conditional Edges): ื–ื”ื• ื”ื—ืœืง ื”ื—ืฉื•ื‘ ื‘ื™ื•ืชืจ. ืœืื—ืจ ืฆื•ืžืช ื', ืžื•ืคืขืœืช ืคื•ื ืงืฆื™ื™ืช "ื ืชื‘" ืžื™ื•ื—ื“ืช, ืืฉืจ ื‘ื•ื—ื ืช ืืช ื”ืžืฆื‘ ื”ื ื•ื›ื—ื™ ื•ืžื—ืœื™ื˜ื” ืœืืŸ ืœื”ืžืฉื™ืš: ืœืฆื•ืžืช ื‘', ื’' ืื• ื“'.

ื“ื•ื’ืžื” ืœืงืฉืช ืžื•ืชื ื™ืช:

  • ืœืื—ืจ ืงืจื™ืื” ืœืžื•ื“ืœ (ื‘ืฆื•ืžืช agent_node), ืื ื• ื‘ื•ื“ืงื™ื ืืช ื”ืžืฆื‘.
  • ืื ื‘ืชื’ื•ื‘ืช ื”ืžื•ื“ืœ ื™ืฉ ืงืจื™ืื” ืœื›ืœื™ โ† ืื ื• ื”ื•ืœื›ื™ื ืœืฆื•ืžืช execute_tool_node.
  • ืื ืื™ืŸ ืงืจื™ืื” ืœื›ืœื™ โ† ืื ื• ื”ื•ืœื›ื™ื ืœืฆื•ืžืช ื”ืกื•ืคื™ END.

LangChain ืžื•ืœ LangGraph: ืžืชื™ ืœื”ืฉืชืžืฉ ื‘ืžื”?

ืงืจื™ื˜ืจื™ื•ืŸLangChain (ืฉืจืฉืจืื•ืช LCEL)LangGraph
ืฉื™ืžื•ืฉ ืขื™ืงืจื™ืžืฉื™ืžื•ืช ืคืฉื•ื˜ื•ืช ื•ืœื™ื ืืจื™ื•ืชืžืฉื™ืžื•ืช ืžื•ืจื›ื‘ื•ืช ื•ืฆื™ืงืœื™ื•ืช (ืกื•ื›ื ื™ื)
ืžื‘ื ื”ืฆื™ื ื•ืจ (ื' โ† ื‘' โ† ื’')ื’ืจืฃ (ืชืจืฉื™ื ื–ืจื™ืžื” ืขื ื”ืกืชืขืคื•ื™ื•ืช ื•ืœื•ืœืื•ืช)
ื‘ืงืจืช ื–ืจื™ืžื”ื“ื˜ืจืžื™ื ื™ืกื˜ื™ืช, ืžื•ื’ื“ืจืช ืžืจืืฉื“ื™ื ืžื™ืช, ื ืงื‘ืขืช ื‘ื–ืžืŸ ืจื™ืฆื”
ื“ื•ื’ืžืช ืžืฉื™ืžื”1. ืœืงื—ืช ื˜ืงืกื˜.
2. ืœืกื›ื ืื•ืชื•.
3. ืœืชืจื’ื ืื•ืชื• ืœืฉืคื” ืื—ืจืช.
1. ืœืงื‘ืœ ืฉืืœื”.
2. ืœื—ืคืฉ ื‘ืื™ื ื˜ืจื ื˜ ืขื“ ืœืžืฆื™ืืช ืชืฉื•ื‘ื”.
3. ืœืกื›ื ืืช ื”ืžืžืฆืื™ื ื•ืœื”ืฉื™ื‘.
ืื ืœื•ื’ื™ื”ืคืก ื™ื™ืฆื•ืจ ื‘ืžืคืขืœืฆื•ื•ืช ืฉืœ ืื ืฉื™ื ืฉืžืชื™ื™ืขืฅ ื•ืžืงื‘ืœ ื”ื—ืœื˜ื•ืช

ื—ื™ื‘ื•ืจ ื›ืœ ื”ื—ืœืงื™ื

  1. ืงืœื˜ ื”ืžืฉืชืžืฉ ื ื›ื ืก ืœืžืฆื‘ ื”ื”ืชื—ืœืชื™ ืฉืœ LangGraph.
  2. ื”ืฆื•ืžืช "ืกื•ื›ืŸ" ืžืงื‘ืœ ืืช ื”ืžืฆื‘. ื‘ืชื•ืš ืฆื•ืžืช ื–ื” ื ืžืฆืืช ืฉืจืฉืจืช LangChain (ืคืจื•ืžืคื˜ | ืžื•ื“ืœ | ืžื ืชื— ืคืœื˜). ื”ืžื•ื“ืœ, ื‘ืืžืฆืขื•ืช ื›ืœื™ื ืž-LangChain, ืžื—ืœื™ื˜ ืžื” ืœืขืฉื•ืช ื”ืœืื” (ืœืžืฉืœ, "ืœื”ืคืขื™ืœ ื—ื™ืคื•ืฉ"). ื”ื—ืœื˜ืชื• ื ื›ืชื‘ืช ืœืžืฆื‘.
  3. ืงืฉืช ืžื•ืชื ื™ืช ืžื ืชื—ืช ืืช ื”ืžืฆื‘ ื•ืžื›ื•ื•ื ืช ืืช ื”ื–ืจื™ืžื” ืœืฆื•ืžืช "ืžืคืขื™ืœ ื›ืœื™ื".
  4. ืฆื•ืžืช ื–ื” ืžื‘ืฆืข ืืช ื”ืงืจื™ืื” ื”ืืžื™ืชื™ืช ืœื›ืœื™ (ืœืžืฉืœ, ืžื‘ืฆืข ื—ื™ืคื•ืฉ ื‘ืื™ื ื˜ืจื ื˜) ื•ื›ื•ืชื‘ ืืช ื”ืชื•ืฆืื” ื‘ื—ื–ืจื” ืœืžืฆื‘.
  5. ื”ื–ืจื™ืžื” ื—ื•ื–ืจืช ืœืฆื•ืžืช "ืกื•ื›ืŸ" (ื–ื• ืœื•ืœืื”). ื›ืขืช ื”ืžื•ื“ืœ ืจื•ืื” ืืช ืชื•ืฆืืช ื”ื—ื™ืคื•ืฉ ื•ืžืงื‘ืœ ื”ื—ืœื˜ื” ื—ื“ืฉื”.
  6. ื”ืœื•ืœืื” ื—ื•ื–ืจืช ืขืœ ืขืฆืžื” ืขื“ ืฉื”ืžื•ื“ืœ ืžื—ืœื™ื˜ ืฉื”ืžืฉื™ืžื” ื”ื•ืฉืœืžื”. ืื–, ื”ืงืฉืช ื”ืžื•ืชื ื™ืช ืชื›ื•ื•ืŸ ืืช ื”ื–ืจื™ืžื” ืœืกื™ื•ื.

ื›ืชื™ื‘ืช ืชื’ื•ื‘ื”

ื”ืื™ืžื™ื™ืœ ืœื ื™ื•ืฆื’ ื‘ืืชืจ. ืฉื“ื•ืช ื”ื—ื•ื‘ื” ืžืกื•ืžื ื™ื *