Вопрос с собеса на NLP agents на 300к в Сбер - что такое tool use? когда его использовать?
Как вы и просили пост с разбором
анально/технических вопросов с собеов по агентам, сёдня разбираем базу, на которой которой видно, реально ли кандидат шарит 😱
Мой ученик сходил на собес и принёс много разных и интересных вопросов, сегодня разбираем один из них -
что такое tool use?
Что такое tool use? когда его использовать?Tool - это инструмент, через который агент взаимодействует с другими частями кода. У LLM нет рук, она сама по себе умеет только генерировать текст. Tools как раз добавляют ей эти самые руки, например: поиск в интернете, вызов API, калькулятор и т.д.
Как он работает?1⃣
Сначала мы передаем модели описание доступного инструмента. Туда идет название, что он делает, когда его использовать и JSON Schema с аргументами. Например, у нас есть tool для поиска по документам
{
"tool_name": "search_docs",
"description": "Ищет релевантные документы",
"arguments": {
"query": "string",
"top_k": "integer"
}
}
2⃣
Дальше пользователь задает вопрос: "Найди документы про штрафы за простой вагонов". Модель понимает, что нужен именно этот инструмент, потом возвращает structured output
(про структурированные ответы поговорим в следующей части поста) JSON с названием tool и аргументами
{
"tool_name": "search_docs",
"arguments": {
"query": "штрафы за простой вагонов",
"top_k": 5
}
}
3⃣
После этого в работу вступает приложение, то есть backend или код агента, который работает с LLM. Он берет параметры из сгенерированного JSON и отправляет их на вход функции, которая реально выполнит работу
search_docs(
query="штрафы за простой вагонов",
top_k=5
)
Итого мы дали нашей LLM руки, научили ее правильно вызывать инструмент, и теперь можно просто написать ей найди мне доки и модель сама пойдет вызывать код, который будет их искать 🐸