Что нужно чтобы создать ИИ-агента
Прежде чем писать код, давайте определимся с терминами. ИИ-агент - это не чат-бот и не скрипт с вызовом GPT. Это автономная программа, которая принимает решения, вызывает инструменты и доводит задачу до результата.
Минимальный набор для рабочего агента:
- LLM с поддержкой tool calling (Claude, GPT-4, Gemini)
- Набор инструментов (функций), которые агент может вызывать
- Цикл: задача → размышление → действие → оценка → следующее действие
- Условие остановки (чтобы агент не крутился вечно)
Всё остальное - память, планирование, мультиагентность - надстройки над этим ядром.
Способ 1: no-code платформы
Самый быстрый старт и возможность создать ИИ-агента бесплатно. Платформы вроде Dify, n8n или Zapier AI позволяют собрать агента из блоков в визуальном интерфейсе. По сути это пошаговая инструкция в визуальном виде.
Что вы делаете:
- Выбираете LLM - GPT-4o, Claude, DeepSeek или другую модель (обычно через API-ключ)
- Описываете промпт
- Подключаете инструменты (HTTP-запросы, базы данных, почта)
- Настраиваете триггеры (расписание, вебхук, ручной запуск)
Плюсы: быстро, не нужен код, визуальная отладка. n8n бесплатен при self-hosted, Dify тоже имеет open-source версию.
Минусы: ограниченные возможности. Когда нужно нестандартное поведение, кастомная логика ошибок или сложный branching, вы упираетесь в потолок платформы. Для прототипа подходит, для прода - редко.
Способ 2: фреймворки
LangChain, CrewAI, AutoGen - Python-фреймворки, которые берут на себя рутину: цикл агента, парсинг tool calls, управление памятью.
Вот минимальный агент на LangChain:
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_anthropic import ChatAnthropic
from langchain_core.tools import tool
@tool
def search_web(query: str) -> str:
"""Поиск в интернете"""
# тут вызов поисковой API
return f"Результаты по запросу: {query}"
@tool
def save_file(filename: str, content: str) -> str:
"""Сохранить файл"""
with open(filename, 'w') as f:
f.write(content)
return f"Файл {filename} сохранён"
llm = ChatAnthropic(model="claude-sonnet-4-20250514")
tools = [search_web, save_file]
agent = create_tool_calling_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools, max_iterations=10)
result = executor.invoke({"input": "Найди курс доллара и сохрани в файл"})Фреймворк обрабатывает цикл за вас: LLM решает какой инструмент вызвать, фреймворк вызывает, передаёт результат обратно, повторяет пока задача не решена.
Плюсы: много готовых интеграций, быстрый старт, документация. Минусы: магия под капотом. Когда что-то ломается, приходится разбираться в абстракциях фреймворка, а не в своём коде.
Способ 3: свой runtime
Написать цикл агента самому. Звучит сложно, на деле - 50 строк Python.
import anthropic
client = anthropic.Anthropic()
tools = [
{
"name": "search_web",
"description": "Поиск в интернете",
"input_schema": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "Поисковый запрос"}
},
"required": ["query"]
}
}
]
def run_tool(name, args):
if name == "search_web":
return f"Результаты: {args['query']}"
return "Неизвестный инструмент"
def agent(task, max_steps=10):
messages = [{"role": "user", "content": task}]
for step in range(max_steps):
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=4096,
tools=tools,
messages=messages
)
# Агент решил что задача выполнена
if response.stop_reason == "end_turn":
return response.content[0].text
# Агент хочет вызвать инструмент
tool_results = []
for block in response.content:
if block.type == "tool_use":
result = run_tool(block.name, block.input)
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": result
})
messages.append({"role": "assistant", "content": response.content})
messages.append({"role": "user", "content": tool_results})
return "Превышен лимит шагов"
print(agent("Найди курс доллара к рублю"))Вот и весь агент. Цикл: отправил задачу → LLM вернул tool call → выполнили → отправили результат → повторили. Никаких абстракций, полный контроль.
Именно этот подход мы используем в продакшне и описали как Jarvis Pattern. Когда вы понимаете каждую строчку, отлаживать и развивать систему в разы проще.
Какой способ выбрать
| Критерий | No-code | Фреймворк | Свой runtime |
|---|---|---|---|
| Скорость старта | Минуты | Часы | Дни |
| Гибкость | Низкая | Средняя | Максимальная |
| Контроль | Минимальный | Частичный | Полный |
| Для прода | Редко | Иногда | Да |
| Нужен код | Нет | Python | Python/JS/любой |
Для прототипа и проверки идеи - no-code или фреймворк. Для прода - свой runtime. Почти все серьёзные продакшн-системы приходят к собственному решению, потому что фреймворки не покрывают edge cases конкретной задачи.
Ошибки при создании ИИ-агента: грабли на пути к проду
Бесконечные циклы. Агент может зациклиться: вызвал инструмент, получил ошибку, вызвал снова, опять ошибка. Обязательно ставьте max_steps и считайте бюджет в токенах. Подробнее про это - в статье про метрики агента.
Галлюцинации в tool calls. LLM может придумать аргумент для инструмента. Например, вызвать search_web(query="...") с несуществующим URL. Валидируйте входные параметры каждого инструмента.
Промпт-инженерия. Системный промпт - это 80% качества агента. Не "ты полезный ассистент", а конкретные инструкции: когда использовать какой инструмент, в каком формате отдавать результат, когда останавливаться.
Стоимость. Каждый шаг агента - вызов LLM. 10 шагов с Claude Sonnet - примерно $0.10-0.50 в зависимости от контекста. На 1000 запросов в день это $100-500/мес. Считайте заранее.
Безопасность. Агент с доступом к файлам может удалить что угодно. Агент с доступом к API может потратить бюджет. Применяйте принцип минимальных привилегий: агент получает только те инструменты, которые нужны для конкретной задачи.
Память ИИ-агента
Для простых задач хватит контекста текущего разговора. Для сложных - нужна многослойная память:
- Рабочая память - что агент делает прямо сейчас
- Эпизодическая - что он делал раньше (логи прошлых запусков)
- Долгосрочная - что он знает всегда (инструкции, факты)
Без памяти агент каждый раз начинает с нуля. С памятью - учится на ошибках и накапливает контекст.
Что реально влияет на качество ИИ-агента
Мы построили десятки агентов за последний год и пришли к неочевидным выводам:
80% качества - это промпт, не код. Можно написать идеальный runtime, но если системный промпт плохой, агент будет ошибаться. Хороший промпт содержит: роль агента, доступные инструменты с примерами, формат выхода, ограничения и edge cases.
Описание инструмента важнее кода инструмента. LLM решает когда вызвать инструмент на основе его описания. "Поиск в интернете" - плохо. "Поиск актуальной информации. Используй когда нужны данные после 2024 года, текущие цены, новости или факты которых нет в обучающих данных" - хорошо. На практике качественное описание инструментов даёт заметно больший рост точности, чем усложнение логики вызова.
Temperature 0 не означает детерминизм. Даже при temperature=0 модель может дать разные результаты. Для критических агентов нужны retry + валидация результата, а не надежда на воспроизводимость.
Стоимость ошибки растёт экспоненциально. Ошибка на 3-м шаге стоит $0.10. Ошибка на 15-м шаге (после 14 успешных) стоит $2.00, потому что агент потратил бюджет на правильные шаги, а потом всё отбросил. Ставьте checkpoints: если агент сделал 5 шагов, сохраните промежуточный результат.
Следующие шаги после создания ИИ-агента
Создание ИИ-агента - это не rocket science. Минимальный работающий агент - 50 строк кода. Сложность начинается когда вы идёте в прод: обработка ошибок, fallback-стратегии для ИИ-агентов, мониторинг, безопасность.
Начните с простого: один агент, два-три инструмента, конкретная задача. Попробуйте Claude Code - терминальный ИИ-агент для разработки чтобы увидеть как работает готовый агент. А потом соберите своего.
Полезные материалы:
- Что такое ИИ-агент и как он работает - основы технологии
- Jarvis Pattern - архитектура ИИ-агента для продакшна - как устроен агент изнутри
- Память ИИ-агента: четыре слоя хранения - долгосрочная и краткосрочная память
- Мультиагентные системы: оркестрация нескольких ИИ-агентов - когда одного агента недостаточно
- Pipeline Triad - паттерн конвейера из трёх агентов - конвейер для сложных задач
- Метрики ИИ-агента в продакшне - что и как мерять