LangChain протык LangGraph: Выбір между ланцюгамі та графамі з станамі
LangChain дае лінейныя ланцюгі; LangGraph дадзе можлівасць выконвання роботы з станамі та розгалужэннямі. Практычныя прыклады кожнага з іх і просты спосаб прымэркавання, калі які з іх патрэбны вашам прыкладку.
Якща вы пачаткаеце ў розрабоце ШІ, два назвы сталківаюцца з вамі практычна ў всім:
LangChain і LangGraph.
На першы погляд можа здавацца, што яны можна заменіць адным. Чы ўсё ж яны — гэта та самая адна засоба? Чы трэба вучыцца і таму, і іншаму? І як выбраць тое, што падходзіць вашам проекту?
Разберёмся на простым прыкладзе.
Што такое LangChain?
Уявіце LangChain як набор засобаў для стварэння аплікацый на базе ШІ.
У ёму є готовыя элементы, якія дазволяюць працаваць з LLM-амі та праўяць іх да іншых ресурсоў, такіх як:
- Prompts
- LLMs
- Засобы
- API-і
- Дакументы
- Базы дадзеных у вектарнай форме
- Системы адзыскання інфармацыі
Сказаўм, вы хочаце стварыць простага наставніка на базе ШІ.
Процес можа выглядаць так:
Student Question
↓
Prompt
↓
LLM
↓
Answer
LangChain значна спрыяе стварэнню такіх пайплайнаў без большых трудоў.
Просты прыклад LangChain
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
llm = ChatOpenAI(model="gpt-4o-mini")prompt = ChatPromptTemplate.from_messages([
("system", "You are a helpful programming teacher."),
("human", "{question}")
])chain = prompt | llmresponse = chain.invoke({
"question": "What is recursion?"
})print(response.content)
Логіка тут простая і лінейная:
Запит → Прыказ → LLM → Адпаведзь
Такі просты пайплайн — гэта самэ тое, у чаму LangChain выказвае сябе адзінакова.
Што такое LangGraph?
Тепер заўважкім, што ваш ай-ті наставник павінен обрабоцваць больш чым адна пасэўка.
У замест на тое, каб проста датыць адпаведзь, вы хочаце, каб ён:
- Адпаведзе на запыт учня.
- Ацэніў, чы рэальна адпаведзь ёсць хорашая.
- Якщо ён хорашы, то зупініцца тут.
- Якщо няхорашы, то яе парадактураваў.
- Па-новамы пераглядзіў парадактураваную адпаведзь.
Тепер прабег выглядае так:
Student Question
↓
Generate Answer
↓
Check Answer
↙ ↘
Good Bad
↓ ↓
Finish Improve
↓
Check Again
Гэта самэ та сітуацыя, для якой быў створаны LangGraph.
LangGraph дазваляе ствараць рабочыя практыкі, якія можу прымкнуць:
- Калькі крокаў
- Умовныя галузі
- Петлі
- Аднародны стан
- Точкі прыняцтва рашэння
- Апраўленне з участю чалавека
- Больш разнарадная праця агента
Просты прыклад LangGraph
Ёсць канец, вы визначаеце стан, які ваша прыкладка павінна стежыць.
from typing import TypedDict
class State(TypedDict):
question: str
answer: str
good: bool
Этот стан стежыць за трома рэчамі:
question
answer
good
Пасля чаго вы ствараеце адзінаковыя крокі, якія называюцца вузламі, усередине вашага графа.
Стварыць адпаведны адказ
def generate_answer(state):
response = llm.invoke(
f"Answer this question simply:\n{state['question']}"
) return {
"answer": response.content
}
Пераканацца ў адказе
def check_answer(state):
response = llm.invoke(
f"""
Is this answer good? Question:
{state['question']} Answer:
{state['answer']} Reply only YES or NO.
"""
) return {
"good": response.content.strip().upper() == "YES"
}
Далей вы визначаеце функцыю прыняцтва рашэння:
def decision(state):
if state["good"]:
return "finish" return "improve"
Гэтае важнае — LangGraph яўляецца тым, хто з’яеднае гэтыя вузлы і вяршыць, кой вузел будзе выкананы далей.
Якщо перакрант не выйшаў, граф можа вернуцца да вузла паслябоджэння і зноў запрацаваць перакрант пасля таго.
Тады якая галоўная разліка?
Найпростыя спосабы адзначыць гэтую разліку — гэта:
LangChain = Камені будавання
LangChain супляўае адзінаковыя складовыя, з якіх вы складаеце прыемнік AI.
Напрыклад:
LLM
Prompt
Retriever
Tool
Vector Database
↓
LangChain
LangGraph = Рабочы процес
LangGraph керуе тым, як гэтыя складовыя взаімаюцца і ў якой спраўе.
Start
↓
Generate
↓
Check
↙ ↘
Good Bad
↓ ↓
Finish Improve
↓
Check
Чы ёсць LangChain і LangGraph канкурэнты?
Не зовсім.
Оони створаны для саўместнага вжывання.
Напрыклад:
LangGraph
↓
┌──────────┴──────────┐
↓ ↓
LangChain LangChain
Retriever Tools
↓ ↓
└──────────┬──────────┘
↓
LLM
LangChain супляўае камені будавання і інструменты, тады як LangGraph організуе большы рабочы процес навакола іх.
Калі трэба вжываць LangChain?
LangChain — гэта правы выбар, калі ваша прыкладка выконваецца па досыта лінейным шляху.
Тыповыя прыклады включаюць:
- Базовы чат-бот
- Прывітаная прыкладка на адной з тэхналогій RAG
- Адказ на запыткі з PDF-файлаў
- Пошук у дакументах
- Простая прыкладка, якая выкарыстоўвае тэхналогію LLM
- Выклік простых інструментаў
Базовы прайсупутак тут можа выглядаць так:
User
↓
Retrieve Information
↓
LLM
↓
Answer
Для такіх налаштаванняў стварэнне цэлай графічной структуры зазвычай ёсць перадмернае.
Калі трэба вжываць LangGraph?
LangGraph становіць сэрцаўы калі ваша прыкладка выклеквае розгалужаную логіку і рашэнні, а не проста фіксаваную последоўнасць крокаў.
Да гэтага належаць такія ситуацыі:
- Аўтонамныя AI-агенты
- Рабочыя прайсупуткі, якія включаюць калькі крокаў
- Сістэмы з калькама саўместна працуючых агентаў
- Процесы з участю чалавека
Як прыклад, уявіце AI-наставніка, структураванага такім чынам:
Student asks question
↓
Analyze level
↓
Generate explanation
↓
Give quiz
↓
Check answer
↓
Correct?
↙ ↘
YES NO
↓ ↓
Next topic Explain again
Самэўсёлкаванае, станообразнае падзея ёсць самэй там, дзе ЛангГраф выказвае сваія перавагі.
Найпростейшая аналогія
Уявіце будову дома.
ЛангЧейн выступае як ваш інструментарый набор.
Ён дае вам такія рэчы:
Цеглы, інструменты, матэрыялы і компаненты.
ЛангГраф выступае як план будовы.
Ён визначае последоўнасць:
Заложыце фундамент → падніміце стэны → дадзіце дах → пераканацеся ў роботе → якщо чагосьці не так, верніцеся і выправіце.
Корача:
ЛангЧейн дапамагае вам склadaць этыя элементы.
LangGraph памагаець вам карманаваць гэтым процесам.
Заключныя выводы
У працоўнай супэрвізі LangChain і LangGraph як незалежных інструментаў, адносна точней супрацаваць з імі як з двумя слоямі адной і той жа структуры.
AI Application
↓
LangGraph
(Workflow / Logic)
↓
LangChain
(Tools / Components)
↓
LLM
Якщо ваша справа простая, LangChain сама паверхне падпірнуць вашыя патрабаванні.
Калі ваша прыкладна програма выказвае патрабаванні ў трыманні стану, умовнай логіцы, циклах аб складнае поведэнне агента, LangGraph становіць лепшы выбар.
У багатых системах прыменнення, аднак, этыя два інструмента сумашчаны.
Правіло, якое варта запамятаць:
LangChain стварае складовыя. LangGraph спаявае і кантролюее тэкст працы.