Што на самай працо дае LangChain параза ўсуненню простаг вызову інструментаў
Ручна нарабатка ціклам апаратацыі дапамагае ў навучэнні машынаў; LangChain перамешчае схемы, історыю та коардынацію агентаў за абстракціямі, тады логіка продукту застаецца ў цэнтры увагі.
Програмы на базе AI можаць безпасяродна вызваць API LLM і контролаваць кожную деталь. У такім падзе ёсць сэрйозныя прынады: логіка кантролю є видна. Але ёсць і выкладкі. Калі продукт пераходзіць за межы аднаго розмовнага цыклу, з’яўляецца вельмі больша колькасць коду, які на самай працэ не ўзначае логіку продукту.
Тыповыя элементы такой структуры включаюць:
- Апісаванне інструментаў і схем
- Адправка інструментаў да модэлю
- Обработка адпаведзей на вызовы інструментаў
- Выкананне запрошаных функцый
- Прааднае вярненне рэзультатаў інструментаў
- Зберагчыце історыю розмов
- Коордынацыя кальколькіх вызонаў інструментаў
- Кераванне цыклам модэль↔інструмент
Этыя крокі чымала корыстны для навучэння. У дзеянні пра доставку пакетаў ўсё гэта даводзіцца робіць вручную, і гэта стае основной часткай работы.
Фрэймворкі, такія як LangChain, ствараны для таго, каб практычна усунуць такую павтаральнасць.
Выкладкі ад ведэння всьго вручную
Уявіце сабе маленькі калькулятор. Без фрэймворка шлях выглядае прыблізна так:
User
↓
LLM API
↓
LLM requests calculator
↓
Our code detects the request
↓
Our code executes calculator()
↓
Our code sends the result back
↓
LLM generates the final answer
Адна засоба залишаецца прыемнай для керавання. Двадцать засобаў, калькі модэляў, стойкае стан чату, павторныя спробы і робочыя процесы агента ператвараюць «простую логіку продукту» на проект аранжырацыі.
Абстракцыі існуюць таму, што гэты механізм расте быстрей, чым спіс функцый.
Што даўае LangChain
LangChain забезпечвае спакойныя форматы для модэляў, засобаў, паведамленняў і часоў выканання агентаў. Уместа таго, каб підключаць кожны элемент, достатня апісацыі можлівасцей, і фрэймворк сам выканае большую частку базовых задач.
Стварэнне засоба
Звычная функцыя на Python стае засобам:
from langchain.tools import tool
def calculator(a: float, b: float, operation: str):
"""Perform a mathematical calculation."""
if operation == "add":
return a + b
elif operation == "subtract":
return a - b
elif operation == "multiply":
return a * b
elif operation == "divide":
if b == 0:
return "Cannot divide by zero."
return a / b
return "Unknown operation."
Тэла калькулятора застаецца часткай логіки прыемлена. LangChain толькі ўпаковвае яе, каб LLM могла яе запрашаць.
Падключэнне засоба да модэля
from langchain_google_genai import ChatGoogleGenerativeAI
model = ChatGoogleGenerativeAI(
model="gemini-3.5-flash-lite"
)
model_with_tools = model.bind_tools([calculator])
Потым выканаецца вызов:
response = model_with_tools.invoke(
"What is 2 + 6?"
)
Модель можа адказаць структураваным запитам да інструментоў, напрыклад:
calculator(
a=2,
b=6,
operation="add"
)
bind_tools() не запускае калькулятор. Ён толькі паведамляе пра наявнасць: модель можа запрашаць інструмент, калі гэта неабходна.
Дзе праблектуецца абстракцыя
У ручным режыме інжынер керуе дужа дзялёным процесам:
Create function
↓
Create tool schema
↓
Send schema to LLM
↓
Receive tool call
↓
Extract arguments
↓
Execute function
↓
Create tool result
↓
Send result back to LLM
↓
Check if another tool call is needed
↓
Repeat
За дапамою LangChain большая частка гэтых процесаў знаходзіцца ў часе выканання агента. Увага пераключаецца на:
What capability does my application need?
↓
Define the tool
↓
Give it to the model
↓
Build the application
Складнасць не знікла — яна перайшла за межу.
Што на самай працы адбываецца
LangChain не стварае механізмаў вызову інструментоў; сырые API вже яго падтрымляюць. Корыста заключаецца не у перзастраўцы схем, ціклоў і методаў керування історыяй для кожнай функцыі. Время выкорыстоўваецца для рашэння праблем продукту:
- Што должен умець асістэнт?
- Калкі інструментоў палягаюць у межах задачы?
- Што адбываецца, калі інструмент не работае?
Чы гэты прыкладнення павінна викорыстоўваць фрэймворк?
Не завжды. Выварка вызоўаіння інструментаў вручную застаецца найлепшым спосабам навучэння. Адварот адно раза:
LLM
↓
Tool call
↓
Application
↓
Tool execution
↓
Tool result
↓
LLM
раней чыніць парадксы працы фрэймворка менш таінственнымі. Выварка абстракцый без разумеў, якія проблемы яны рашаюць, ускладнюе адлагоджэнне.
Стойкія прычына: спачатку выучыце саму тэхніку, а потам прыемліце абстракцый, каб не пісаць тэхніку занова для кожнага завдання. Команды, якія прыхоўдзяюць першы крок, часта ставяцца да LangChain як да магіі і застойваюцца, калі схема інструмента або політыка павторных спроб працюе некоректна. Команды, якія зберагаюць обе навыки, працуюць быстрей і не втрачаюць можлівасці перайсці да базовага коду, калі цього трэбуе інцыдент у працоўным сераверы.