LangChain протык LangGraph: ролі, корыстуначы і калі выбіраць адны з яных
Што належыць LangChain і што належыць LangGraph: ланцюгі проты стойкіх графаў, для каго насправды прызначаны кожны з бібліятэкаў, а таксама чарткі для выбору аднаго з іх.
У гэтым керавані практычна адбудуецца рабочы маршрут для кнігі «LangChain і LangGraph: што гэта, хто іх выкарыстоўвае і як ствараць агенты ШЫ з іх дапамогай». Акцэнт ставіцца на контракты, перакананняя і код, які можна падаць у рэпозытарый без неабяснення меты. Для адгледжэння спачатку неабясніце вхідныя даны, адпаведальную особу за крок і крытэрыя завершэння перш чым зменіце код. Апераракторы должны магчыма было перзапусціць крок з вядомага пункта контролю, не спрабоўваючы з’ясаваць схованы стан. Конфігурацыю трэба залічыць паза кодам прыкладнення. Файлы сераўіса, хранільнікі секрэтных даных і флагі функцый должны знаходзіцца ў аднам месцы, якое апераракторы можаць пераглядзець, не чытаючы весь граф.
llm = ChatOpenAI()
if (userAskedForFlights()) {
callFlightApi();
}
if (resultsAvailable()) {
summarizeResults();
}
User Question
↓
Reason
↓
Search Tool
↓
Analyze Result
↓
Answer
User Request
|
+---- Search
|
+---- Database
|
+---- Human Approval
|
v
Continue
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4o"
)
def get_weather(city):
return weather_api(city)
tools = [get_weather]
Need weather information
weather = get_weather("Bangalore")
{
"temperature": 34,
"condition": "Sunny"
}
The current temperature in Bangalore is 34°C and the weather is sunny.
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4o"
)
response = llm.invoke(
"Explain microservices in simple terms."
)
print(response.content)
User Request
|
v
Analyze Request
|
+---- Search Agent
|
+---- Database Agent
|
+---- Human Review
|
v
Generate Final Response
from langgraph.graph import StateGraph
builder = StateGraph(AgentState)
builder.add_node("search", search_node)
builder.add_node("answer", answer_node)
builder.set_entry_point("search")
builder.add_edge("search", "answer")
graph = builder.compile()
class AgentState(TypedDict):
question: str
search_result: str
answer: str
Example:
{
"question": "What is LangGraph?",
"search_result": "",
"answer": ""
}
def search_node(state):
...
builder.add_node("search", search_node)
builder.add_node("answer", answer_node)
builder.add_edge(
"search",
"answer"
)
builder.set_entry_point("search")
graph = builder.compile()
State
│
▼
┌─────────────┐
│ Search │ ← Node
└─────────────┘
│
│ ← Edge
▼
┌─────────────┐
│ Answer │ ← Node
└─────────────┘
│
▼
Updated State
Паведамленне ад AI Mind
Для праекту «Паведамленне ад AI Mind» неабяжна якісцька вказваць інпутаў, адпаведальнага за крок і крэтарыяў завершэння працы перад змінай коду. Аператары должны магчымае запускаць крок з вядомай точкі контролю, не падбіраючы скрытых станоў. Неабходна адзначыць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія перакрыцця і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не етапамі далейшай налады. Шэматы інструментаў трэба строго абмежыць. Шырокія параметры у віглядзе вольнага тэксту спрыяюць атакам з уведзенням вірусаў і робяць аўдыты даскладнымі.
Чэрніця кантролю эксплуатацыі
Для канцэларскага чак-лісту, пры змяне коду, неабходна ясная ваказка пра вхідныя даны, адміністратара практыкі і крэтыяры завершэння. Аперацыйныя працавнікі павінны магчымаць перзапуск практыкі з вядомага контрольнага пункту, не спрабоўваючы здогадвацца пра схованы стан.
Запісвайце час выканання і вітраты праза функцыйнае рэзультат. Відкрытыя даны з самага пачатку запобегаюць неспакоўным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спяльную.
Ствараць контрольны пункт пасля дорогіх вызоў модэлю, каб перапуск не веліў платы за тую ж работу знову.
Зберагаце стан графа ў простам і тыпаваным фармаце. Вярнутыя структуры дадзеных маскуюць інфармацыю пра тое, які вузел запісаў канкрэтны поле, і спакшваюць возобнавленне работы пасля перарываў.
Напісце короткі посібнік: як роцыяваць канты, як спрачыслаць чэргу, як анулюваць пасляпэльныя змяны.
Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі практыка не выйшла, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцоўкі задач.
Перш чым запускаць цэйтнейты, заморозьце версіі, зафіксавце «золаты» транскрыпты для крытычных лянцоў і паказваце спосабы атрыбуцыі. У спяльных срэдах неабходны ліміты частоты запуска, перакананне ў правільнасці належнасці рэсурсаў і чысткі власнік для змены секрэтных даных. Лепш выбіраць простую надзею на надзейнасць, чым хітрыя разовыя дэманстрацыі.
Для забезпечэння надзейнасці неабходна ўжо на пачатку адзначыць вхідныя даны, власніка кожнага крока і крытэрыяы завершэння перад зменай коду. Аперацыйныя працавнікі должны магчыма было перазапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан сістэмы.
Конфігурацыю трэба зберагаць праз аплікацыйны код. Файлы асяроддзя, хранальнікі секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое працавнікі можуць пераглядаць, не чытаючы весь код аплікацыі.
Раздзеляйце планаванне і выканання знарадзяў. Планавальнік прымечае можлівыя варыянты; выконавальнік іх рэалізуе; пераканальнік пераглядае рынкты выканання ў спаўнасці з цялевымі показнікамі.
Для пункта 1 пры зміцнэнні неабяжна практычна візначыць інпуты, адміністратара крока і крытэрыя завершэння пры зміне коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан.
Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшаў, прычына нехасабносты павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач.
Строга абмежыце схемы інструментаў. Шырокія параметры у віглядзе вольнага тэксту спрыяюць атакам і робяць аўдыты дорогімі.
Для пункта 2 пры зміцнэнні таксама неабяжна практычная візначыць інпуты, адміністратара крока і крытэрыя завершэння пры зміне коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан.
Запісвайце час выканання і вітраты разам з функцыйнальнымі рэзултатамі. Відкрыты доступ да гэтых даных запобегае неспакою, калі працэс пераходзіць з дэмовай асяроддзя ў спакульную.
Контрольныя точкі пасля дорогіх вызваў модэлей, каб перапрыцёк не практыкувалі новыя зборы за тую ж самую працу.
Для пункту 3 пра зміцненне захоўнасці неабходна прадзефінаваць вхідныя даны, адпаведальную особу за крок і крытэрыя завершэння пры зміне коду. Аперацыйныя працавнікі должны магчыма было перазапускаць крок з вядомай контрольнай точкі, не спрабоўваючы здогадвацца пра схованы стан.
Неабходна аддзеўнаваць дакументацыю пра успішны і варыянт вяснавання сітуацыі. Перапрыцёкі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
Аддзельнае планаванне і выканання за дапамою інструментаў. Планавальнік прымечвае варыянты; выконавальнік іх рэалізуе; пераканальнік пераглядае рынкі ў спадарожнечу з метай.