Инструменты
Инструменты - это очень нужная агенту вещь. По факту - это произвольные куски кода, которые LLM может запускать по своему усмотрению
С точки зрения модели, Tool - это просто JSON (снова), котороый мы подложили в контекст
Выглядит он следующим образом:
{ "name": "get_weekday", "description": "Call this tool each time you want to know current weekday", "arguments": JSONSchema }
• Название инстремента - это уникальный айдишник, по которому модель будет его вызывать. • Описание - наша попытка объяснить модели, для чего этот инструмент нужен и когда его стоит дергать • Аргументы - это JSONSchema с описанием того, как вообще вызывать этот инструмент. Мы просто надеемся, что модель сможет отдать нужный JSON
Теперь, если мы спросим модель о текущем дне недели, последовательность запросов будет выглядеть примерно следующим образом:
User -- { "role": "user", "content": "Привет, чем займемся сегодня?" } --> LLM
LLM -- { "role": "assistant", "tool_calls": [{ "call_id": "...", "name": "get_weekday", "arguments": "{}" // JSON string }] } --> Agentic Framework
LLM <-- { "role": "tool", "content": "Friday" } -- Agentic Framework
User <-- { "role": "assistant", "content": "Friday! It's the time to drink beer!" } -- LLM
И контекст выполнения будет выглядеть следующим образом:
| assistant | | tool result | | tool call | | user | | tools definitions | | system |
С точки зрения кода, инструмент - это просто функция
from autogen.beta import Agent, config
agent = Agent("my-lovely-agent", config=config.OpenAIConfig("gpt-5"))
@agent.tool def get_weekday() -> str: return "Friday" # всегда пятница, всегда пьем пиво
С тем, чтобы распарсить название, описание, аргументы и подложить их в контекст, фреймворки справляются как-то сами. Чтобы вызвать и отдать результат выполнения в модель - тоже.
Основная проблема инструментов в том, что их может быть МНОГО. Если ваш контекст на 95% состоит из описания инструментов и пользовательский запрос просто теряется на их фоне - не удивляйтесь, если модель творит дичь. О способах борьбы с этим мы поговорим чуть позже. Пока - просто старайтесь не включать инструменты, которые вам не нужны
К слову об MCP (я уже писал пост про них) - это те же инструменты, только раздаются по HTTP / сокету. С точки зрения модели и контекста - это то же самое
Собственно, на этом все. Контекст + Инструменты - это два кита, на которых плывут агенты. Все остальное реализовано поверх них.
В этом посте были ссылки, но мы их удалили по правилам Сетки