Галоўная / Артыкулы

LangChain протык LangGraph: ролі, корыстуначы і калі выбіраць адны з яных

Што належыць LangChain і што належыць LangGraph: ланцюгі проты стойкіх графаў, для каго насправды прызначаны кожны з бібліятэкаў, а таксама чарткі для выбору аднаго з іх.

Выдавец: REACTAPP.TOP4 хв чытання965 слоў

Крыніцы: LangChain and LangGraph Explained: What They Are, Who Uses Them, and How to Build AI Agents with Them

У гэтым керавані практычна адбудуецца рабочы маршрут для кнігі «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 пра зміцненне захоўнасці неабходна прадзефінаваць вхідныя даны, адпаведальную особу за крок і крытэрыя завершэння пры зміне коду. Аперацыйныя працавнікі должны магчыма было перазапускаць крок з вядомай контрольнай точкі, не спрабоўваючы здогадвацца пра схованы стан.

Неабходна аддзеўнаваць дакументацыю пра успішны і варыянт вяснавання сітуацыі. Перапрыцёкі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.

Аддзельнае планаванне і выканання за дапамою інструментаў. Планавальнік прымечвае варыянты; выконавальнік іх рэалізуе; пераканальнік пераглядае рынкі ў спадарожнечу з метай.