Инструменты

Инструменты - это очень нужная агенту вещь. По факту - это произвольные куски кода, которые 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 / сокету. С точки зрения модели и контекста - это то же самое

Собственно, на этом все. Контекст + Инструменты - это два кита, на которых плывут агенты. Все остальное реализовано поверх них.

#Agents #MCP


В этом посте были ссылки, но мы их удалили по правилам Сетки