Содержание
- Агент нейросети: ИИ-агент как программа вокруг модели
- Чем ИИ-агент отличается от чат-бота и от одного запроса к модели
- Как работает ИИ-агент: цикл из четырёх действий и память
- Инструменты и function calling: чем действует ИИ-агент
- Сколько шагов и токенов уходит у ИИ-агента на одну задачу
- Какие бывают виды ИИ-агентов и где они работают сегодня
- Чего ИИ-агент не умеет и где ломается
- Как собрать простейшего ИИ-агента самому: пять шагов
- FAQ
Кто такой ИИ-агент и как он работает
Черновик готовит редакция с помощью ИИ. За стандарт издания отвечает главный редактор — Валерий Курземнек.
Материал редакции Зерокодера. Числа ниже сняты собственным прогоном 11 сентября 2026 года: агент написан нами, модель openai/gpt-4.1-mini вызывалась через OpenRouter. Обновлено: сентябрь 2026.
Кто такой ИИ-агент: это программа вокруг языковой модели, которая получает от человека цель, сама делит её на шаги, вызывает внешние инструменты — файлы, поиск, код, чужие API — читает результат каждого вызова и решает, что делать дальше, пока цель не достигнута или не исчерпан лимит шагов.
Главное:
- ИИ-агент складывается из четырёх частей: языковая модель, набор инструментов, цикл и память. Решение принимает модель, вызов исполняет ваш код.
- Чат-бот отдаёт текст и на этом заканчивает. ИИ-агент меняет состояние вещей: правит файлы, отправляет письма, заводит заявки.
- На задаче из трёх файлов наш агент прошёл 4 шага цикла и сделал 6 вызовов инструментов, потратив 828 токенов на вход и 168 на выход.
- Та же задача одним запросом к той же модели без инструментов закончилась отказом «Пожалуйста, загрузите файлы» на 47 токенах.
- Скрипт
mini_agent.pyна 51 строку, которым сняты эти числа, приведён здесь целиком.
Агент нейросети: ИИ-агент как программа вокруг модели
Агент нейросети — обычная программа, которая в цикле обращается к языковой модели. Отдельной «агентской» нейросети не существует: внутри агента работает та же модель, что отвечает в чате, и всё различие лежит в обвязке вокруг неё.
Обвязка добавляет к модели четыре вещи. Инструменты — функции, которые агенту разрешено вызывать. Цикл — повторение обращений к модели, пока задача не закрыта. Память — то, что агент помнит между шагами и между запусками. Права — то, что ему позволено делать без отдельного подтверждения человека.
Русская Википедия в статье «Интеллектуальный агент» (ревизия от 16 августа 2026 года) определяет агента как программу, самостоятельно выполняющую задание, указанное пользователем компьютера, в течение длительных промежутков времени; «интеллектуальность» здесь понимается как возможность обратной связи. Определение старше языковых моделей и описывает именно обвязку: длительную работу и обратную связь.
Anthropic в инженерном разборе «Building effective agents» проводит границу внутри агентных систем: workflow — система, где модель и инструменты выстроены заранее написанными путями в коде; агент — система, где модель сама направляет свой процесс и сама решает, какой инструмент вызвать. Разница практическая: в workflow порядок шагов задали вы, в агенте его выбирает модель.
Языковая модель, которая стоит внутри агента, устроена отдельно: как она предсказывает следующий кусок текста, разобрано в материале что такое LLM.
Чем ИИ-агент отличается от чат-бота и от одного запроса к модели
Один запрос к модели даёт один ответ и заканчивается. Чат-бот добавляет к этому историю переписки. ИИ-агент добавляет право действовать и повторять попытки, пока цель не достигнута.
Проверили это на одной задаче: в трёх файлах лежат расходы отделов за август, надо найти самый большой и посчитать, во сколько раз он больше самого маленького.
| Свойство | Один запрос к модели | Чат-бот | ИИ-агент |
|---|---|---|---|
| Что на входе | текст задачи | задача и история диалога | цель и список инструментов |
| Откуда данные | только из обучения | из обучения и переписки | вызывает инструменты и читает ответ |
| Обращений к модели | одно | по одному на реплику | столько, сколько потребует цикл |
| Чем заканчивает | текстом | текстом | изменением или собранным результатом |
| Наш прогон 11.09.2026 | отказ на 47 токенах | — | ответ за 4 шага и 6 вызовов |
Одному запросу без инструментов модель openai/gpt-4.1-mini ответила «Пожалуйста, загрузите файлы, чтобы я мог выполнить анализ» и потратила 47 токенов на вход и 16 на выход. Данных у неё не было, и она об этом сказала. Агенту на той же задаче данные добывать было чем, поэтому он их прочитал и посчитал.
Сбер на странице продукта «Гига Агент» проводит ту же границу построчно: ИИ-модель «работает в цикле „запрос — ответ“», агент «поддерживает непрерывный цикл выполнения задач»; модель «опирается на контекст только текущего диалога», агент «хранит память между сессиями и перезапусками»; модель «использует заранее подключённые инструменты», агент «подключает новые инструменты».
Как работает ИИ-агент: цикл из четырёх действий и память
ИИ-агент работает витками, и каждый виток состоит из четырёх действий: воспринять текущее состояние, выбрать следующий шаг, вызвать инструмент, прочитать результат вызова. После четвёртого действия виток повторяется — и так до готового ответа или до исчерпания лимита шагов.
Схема чередования рассуждения и действия называется ReAct и описана в статье «ReAct: Synergizing Reasoning and Acting in Language Models» (Yao и соавторы, arXiv:2210.03629, подана 6 октября 2022 года, ревизия v3 от 10 марта 2023 года). Суть в том, что рассуждение помогает модели строить и править план и обрабатывать исключения, а действия дают ей доступ к внешним источникам.
Память у ИИ-агента бывает двух видов. Короткая — контекст текущего запуска: все прошлые вызовы и их результаты складываются в одно растущее сообщение, которое уезжает к модели на каждом витке. Поэтому счёт токенов растёт от шага к шагу: 828 входных токенов нашего прогона накопились нарастающим хвостом, где каждый следующий виток тащит с собой все предыдущие.
Длинная память — внешнее хранилище, куда агент кладёт факты и откуда достаёт их поиском по смыслу. Работает оно на векторах: как устроены сами векторы и почему по ним ищется смысл, разобрано в материале что такое эмбеддинги.
Инструменты и function calling: чем действует ИИ-агент
Инструмент ИИ-агента — обычная функция в вашем коде, описанная схемой, которую понимает модель: имя, назначение, список аргументов и их типы. Сама модель не исполняет ничего: она возвращает намерение вызвать функцию, а запускает эту функцию ваша программа.
Документация OpenAI «Function calling» (снята 11 сентября 2026 года) описывает обмен как разговор из пяти шагов и формулирует ответственность прямо: «When the model calls a function, you must execute it and return the result» — когда модель вызывает функцию, исполнить её и вернуть результат обязаны вы. Ответ модели содержит массив tool_calls, у каждого элемента есть id и поле function с именем и JSON-аргументами. Результат уходит обратно отдельным сообщением с ролью tool и полем tool_call_id, по которому модель сопоставляет ответ со своим запросом.
Отсюда следствие для безопасности: ограничения ИИ-агента живут в вашем коде. Модель может попросить удалить файл, и файл удалится только в том случае, если такую функцию вы ей выдали и не потребовали подтверждения.
Чтобы не описывать одни и те же инструменты в каждом проекте заново, придуман Model Context Protocol — открытый протокол подключения внешних инструментов и данных к моделям. На сайте протокола 11 сентября 2026 года актуальной значится версия спецификации 2026-07-28. В прочитанном корпусе MCP упоминают 8 страниц из 20.
Сколько шагов и токенов уходит у ИИ-агента на одну задачу
На задаче из трёх файлов наш ИИ-агент прошёл 4 шага цикла, сделал 6 вызовов инструментов и потратил 828 токенов на вход и 168 на выход. Агент, задача и лог принадлежат нам: скрипт mini_agent.py написан редакцией Зерокодера, прогон сделан 11 сентября 2026 года на Windows Python 3.14.3, модель openai/gpt-4.1-mini вызывалась через OpenRouter при temperature=0.
Вот как это выглядит дословно:
ШАГ 1. вызов list_files({}) -> otdel_a.txt, otdel_b.txt, otdel_v.txt
ШАГ 2. вызов read_file({"name": "otdel_a.txt"}) -> Отдел A, расход за август: 128 400 руб.
ШАГ 2. вызов read_file({"name": "otdel_b.txt"}) -> Отдел B, расход за август: 96 750 руб.
ШАГ 2. вызов read_file({"name": "otdel_v.txt"}) -> Отдел V, расход за август: 213 900 руб.
ШАГ 3. вызов calc({"expression": "213900 / 96750"}) -> 2.2108527131782947
ШАГ 3. вызов calc({"expression": "213900 / 128400"}) -> 1.6658878504672898
ШАГ 4. ОТВЕТ: Отдел с самым большим расходом за август — отдел В, и его расход в 2.21 раза больше самого маленького расхода, который у отдела Б.
ИТОГО: шагов 4, вызовов инструментов 6, токенов на вход 828, на выход 168
В логе видно три вещи, которых не даёт описание цикла словами. Первое: шаг и вызов — разные единицы. На шаге 2 модель запросила три чтения сразу, на шаге 3 — два счёта, поэтому 4 шага дали 6 вызовов. Второе: один вызов оказался лишним — деление 213900 на 128400 для ответа не нужно, модель посчитала его про запас. Третье: бесплатных раздумий между шагами у агента нет, каждый виток — отдельный оплаченный запрос к модели с нарастающим хвостом истории.
Число шагов при этом плавает. Повторный прогон того же файла в тот же день дал 5 шагов и 1114 входных токенов при тех же 6 вызовах: модель развела два деления по разным виткам. Даже при temperature=0 одинакового маршрута ждать не стоит.
Мы проверили, показывает ли такие числа кто-нибудь ещё. Из 25 адресов топ-10 Яндекса по пяти запросам корзины текст отдали 22, читаемыми оказались 20: companies.rbc.ru ответил кодом 401, adlook.me и timeweb.com упали на SSL, serverspace.ru вернул 3 байта, yandex.cloud — 248. Оговорка про охват: pikabu.ru пришёл в битой кодировке без кириллицы, поэтому русские слова считаны по 19 страницам, латинские токены — по 20.
Результат счёта. По 20 страницам tool_calls, tool_call_id, max_steps, prompt_tokens и слово import не встречаются ни разу. По 19 русскоязычным, счёт по корню слова: «цикл» на 15 страницах, «памят» на 18, «чат-бот» на 16, «автоном» на 17; ограничитель по числу шагов назван на трёх (habr.com, skillbox.ru, vc.ru). Числа шагов или вызовов инструментов на реальной задаче нет ни на одной из 19 страниц, которые мы смогли прочитать по-русски.
Отдельная деталь. Страница vc.ru, которая сама учит требовать у вендора журнал работы — «В продукте нет журнала шагов. Если вы не видите, что агент делал на каждом такте, вы не сможете разобраться, где он свернул не туда», — своего журнала тоже не приводит.
Вот сам ИИ-агент целиком, 51 строка:
# mini_agent.py - минимальный ИИ-агент редакции Зерокодера.
# Цикл: модель решает -> зовёт инструмент -> читает результат -> решает снова.
import json, os, sys, urllib.request
KEY = os.environ["OPENROUTER_API_KEY"]
MODEL = "openai/gpt-4.1-mini"
MAX_STEPS = int(os.environ.get("MAX_STEPS", "8"))
FILES = {"otdel_a.txt": "Отдел A, расход за август: 128 400 руб.",
"otdel_b.txt": "Отдел B, расход за август: 96 750 руб.",
"otdel_v.txt": "Отдел V, расход за август: 213 900 руб."}
def list_files():
return ", ".join(sorted(FILES))
def read_file(name):
return FILES.get(name, "нет такого файла: " + name)
def calc(expression):
return str(eval(expression, {"__builtins__": {}})) # только для демонстрации
IMPL = {"list_files": list_files, "read_file": read_file, "calc": calc}
def decl(name, desc, props):
return {"type": "function", "function": {"name": name, "description": desc,
"parameters": {"type": "object", "properties": props, "required": list(props)}}}
TOOLS = [decl("list_files", "список доступных файлов", {}),
decl("read_file", "прочитать файл по имени", {"name": {"type": "string"}}),
decl("calc", "посчитать арифметическое выражение", {"expression": {"type": "string"}})]
TASK = ("Найди среди файлов отдел с самым большим расходом за август и посчитай, "
"во сколько раз он больше самого маленького. Ответь одним предложением, число округли до сотых.")
msgs = [{"role": "user", "content": TASK}]
calls = tin = tout = 0
for step in range(1, MAX_STEPS + 1):
body = json.dumps({"model": MODEL, "messages": msgs, "tools": TOOLS, "temperature": 0}).encode()
req = urllib.request.Request("https://openrouter.ai/api/v1/chat/completions", body,
{"Authorization": "Bearer " + KEY, "Content-Type": "application/json"})
ans = json.load(urllib.request.urlopen(req, timeout=90))
tin += ans["usage"]["prompt_tokens"]; tout += ans["usage"]["completion_tokens"]
m = ans["choices"][0]["message"]; msgs.append(m)
if not m.get("tool_calls"):
print("ШАГ %d. ОТВЕТ: %s" % (step, m["content"])); break
for tc in m["tool_calls"]:
args = json.loads(tc["function"]["arguments"] or "{}")
out = IMPL[tc["function"]["name"]](**args); calls += 1
print("ШАГ %d. вызов %s(%s) -> %s" % (step, tc["function"]["name"], json.dumps(args, ensure_ascii=False), out))
msgs.append({"role": "tool", "tool_call_id": tc["id"], "content": out})
else:
print("ШАГ %d. лимит шагов исчерпан, ответа нет" % MAX_STEPS)
print("ИТОГО: шагов %d, вызовов инструментов %d, токенов на вход %d, на выход %d" % (step, calls, tin, tout))
Функция calc использует eval, и это допустимо только в демонстрации на своих данных.
Какие бывают виды ИИ-агентов и где они работают сегодня
Виды ИИ-агентов различают по трём осям: по устройству, по числу участников и по степени свободы.
Классическое деление по устройству дано у Рассела и Норвига (2003) и изложено в английской Википедии в статье «Intelligent agent»: простые рефлекторные агенты, рефлекторные агенты с моделью мира, целевые агенты, агенты с функцией полезности и обучающиеся агенты. В корпусе это деление пересказывают частями: корни «реактивн» и «обучающ» — на 5 страницах из 19 каждый. Имена Рассела и Норвига не названы ни на одной, хотя vc.ru честно ссылается на публикацию AWS.
| Вид ИИ-агента | Что его отличает | Живой пример |
|---|---|---|
| Рефлекторный | правило «условие — действие», без модели мира | фильтр писем, автоответчик |
| Целевой | держит цель и планирует шаги к ней | кодовые агенты Aider, Cline, Claude Code |
| Мультиагентный | несколько ролей и общий план на всех | CrewAI, AutoGen, LangGraph |
| Сценарный (workflow) | порядок шагов задан человеком заранее | сценарии n8n и Make |
| Встроенный в продукт | работает внутри чужого интерфейса | «Гига Агент» Сбера, OpenAI Operator, Manus |
Задачи, которые ИИ-агенты закрывают сегодня, сводятся к четырём группам: работа с кодом, сборка сводки из разрозненных данных, ведение процесса с заявками и показателями, действия в чужом интерфейсе вместо пользователя. Первые две Сбер описывает на странице «Гига Агент» дословно: агент «пишет код, запускает тесты и исправляет ошибки вплоть до готового результата» и «находит главное, сравнивает факты и собирает понятную сводку».
Счёт по имени на странице: Claude Code — 8 страниц из 20, GigaChat — 6, n8n — 5. Все шесть вхождений GigaChat мы прочитали: в четырёх он назван моделью внутри агента. Как устроен агент в командной строке, разобрано в материале Aider CLI.
Чего ИИ-агент не умеет и где ломается
ИИ-агент ломается на лимите шагов, на лишних вызовах, на невозможности проверить его арифметику и на слишком широко выданных правах. Мы прогнали тот же агент в четырёх режимах и положили рядом один запрос без инструментов.
| Режим прогона | Шагов | Вызовов | Токенов вход/выход | Чем закончилось |
|---|---|---|---|---|
| Полный цикл, MAX_STEPS=8 | 4 | 6 | 828 / 168 | ответ «в 2.21 раза» |
| Лимит MAX_STEPS=2 | 2 | 4 | 256 / 79 | «лимит шагов исчерпан, ответа нет» |
Без инструмента calc |
3 | 4 | 445 / 125 | тот же ответ 2.21, посчитанный моделью |
| Данных нет в инструментах | 3 | 4 | 529 / 123 | отказ отвечать |
| Один запрос без инструментов | — | 0 | 47 / 16 | «Пожалуйста, загрузите файлы» |
Лимит шагов — самая дешёвая поломка. При MAX_STEPS=2 агент успел прочитать все три файла и остановился молча: пользователь оплатил 4 вызова и 335 токенов и не получил ничего.
Снятый калькулятор — поломка незаметная. Без инструмента calc модель посчитала деление сама, получила те же 2.21 и сэкономила 383 входных токена. Но проверить по логу, посчитала она или вспомнила похожее число, уже нельзя: в полном прогоне строка вызова calc с результатом 2.2108527131782947 стоит в логе и перепроверяется руками. Инструмент даёт агенту не только умение, но и след.
Выдумывания данных наш прогон не показал: на задаче про сентябрь, которого в файлах нет, агент прочитал все три файла и отказался отвечать. Это один прогон одной модели, и общего вывода о честности агентов из него не следует — разбор самой поломки лежит в материале галлюцинации нейросети.
Отдельный риск — права. ИИ-агент, которому разрешено выполнять команды в терминале без подтверждения, выполнит их молча. Как устроено такое авто-одобрение в редакторе кода, разобрано в материале Cline.
Как собрать простейшего ИИ-агента самому: пять шагов
Собрать работающего ИИ-агента можно в одном файле за вечер, если начинать без фреймворка. Пять шагов ниже повторяют mini_agent.py из этой статьи.
- Возьмите ключ к любому OpenAI-совместимому API. Подойдёт OpenAI, OpenRouter, GigaChat или локальная модель — формат запроса у них общий, меняется адрес и имя модели.
- Напишите инструменты обычными функциями. В нашем агенте их три:
list_filesотдаёт список файлов,read_fileвозвращает содержимое,calcсчитает выражение. Начинайте с двух-трёх: документация OpenAI прямо советует держать набор функций небольшим ради точности выбора. - Опишите функции схемой. Каждой нужны имя, человеческое описание и типы аргументов — по этому описанию модель решает, какую вызвать и что подставить.
- Заведите цикл. Отправили сообщения и список инструментов, получили ответ. Если в ответе есть
tool_calls— исполнили каждый вызов, добавили результат сообщением с рольюtoolи пошли на следующий виток. Еслиtool_callsнет, значит модель закончила и в ответе лежит текст. - Поставьте ограничители. Лимит шагов обязателен: без него агент, не нашедший решения, будет крутить цикл за ваши деньги. Всё необратимое — удаление, отправку, оплату — закрывайте подтверждением человека.
Дальше начинаются фреймворки: LangChain, LangGraph, CrewAI, конструкторы вроде n8n. Брать их стоит, когда собственный цикл упёрся в потолок: каждый прячет ту самую механику, что напечатана в логе выше.
FAQ
Кто такой ИИ-агент простыми словами?
Программа, которая получает от человека цель и сама выбирает шаги к ней. Она вызывает внешние инструменты, читает результат каждого вызова и продолжает работу, пока цель не будет достигнута.
Чем ИИ-агент отличается от нейросети?
Нейросеть — модель, которая по тексту предсказывает текст. ИИ-агент — программа вокруг такой модели, которая добавляет ей инструменты, цикл, память и права. Отдельной «агентской» нейросети не существует.
Как работает ИИ-агент по шагам?
Виток цикла: агент показывает модели задачу и доступные инструменты, модель возвращает вызов инструмента, программа исполняет вызов и отдаёт результат обратно модели, модель решает, нужен ли следующий виток. В нашем прогоне 11.09.2026 таких витков было 4 при 6 вызовах инструментов.
Сколько стоит работа ИИ-агента?
Считается токенами каждого витка, и история накапливается. Наш прогон на простой задаче из трёх файлов обошёлся в 828 входных и 168 выходных токенов против 47 и 16 у одного запроса к той же модели без инструментов.
Что такое function calling?
Механизм, которым модель сообщает программе, какую функцию и с какими аргументами следует вызвать. По документации OpenAI модель сама функцию не исполняет: она возвращает массив tool_calls, а исполняет вызов и возвращает результат ваше приложение.
Какие ИИ-агенты используются сегодня?
В корпусе выдачи Яндекса на 11.09.2026 чаще других названы кодовые агенты Claude Code и Cursor, конструктор сценариев n8n, российские GigaChat и YandexGPT, а также Replit, Manus и OpenAI Operator.
