r3tam blog

Свой агент за 5 мин?

Свой агент за 5 минут: разбираем стек и пишем генератор картинок

В 2026 году рынок AI-агентов перегрет. LangGraph, CrewAI, AutoGen, Claude Agent SDK, OpenAI Agents SDK — каждый фреймворк обещает révolution, но выбор парализует. На деле 90% задач решаются простым циклом: LLM получает задачу, вызывает инструмент, возвращает результат. В этой статье вы соберёте рабочего агента по генерации изображений за 5 минут — и поймёте, что стоит за шумом вокруг агентных фреймворков.

Мы разберём стек современного AI-агента: от LLM и инструментов до памяти и MCP. Затем на практическом примере построим двухэтапный пайплайн, где языковая модель превращает сырой запрос в детальный промпт, а модель генерации изображений создаёт картинку. Код займёт меньше 50 строк.

Что такое AI-агент на самом деле

AI-агент — это программа, которая использует большую языковую модель (LLM) как движок принятия решений. В отличие от обычного чат-бота, агент может вызывать внешние инструменты: искать в интернете, читать файлы, генерировать изображения, запускать код. Модель решает, какой инструмент вызвать и когда вернуть ответ пользователю.

Базовый цикл агента состоит из трёх шагов: Think (модель анализирует запрос и решает, что делать), Act (вызов инструмента), Observe (обработка результата и передача обратно модели). Этот цикл повторяется, пока модель не решит, что задача выполнена.

Именно этот паттерн — ReAct (Reasoning + Acting) — лежит в основе всех современных фреймворков. LangChain, CrewAI и LangGraph — всего лишь надстройки над этим циклом, которые добавляют оркестрацию, состояние и удобные обёртки.

Стек AI-агента в 2026 году

LLM — мозг агента

Выбор модели определяет качество рассуждений агента. В 2026 году основные игроки — Claude Sonnet 4.6 (Anthropic), GPT-5.4 (OpenAI), Gemini 3.5 (Google) и DeepSeek V3.2. Для агентов критична способность к вызову инструментов (function calling) и длинный контекст — современные модели поддерживают до 200K токенов.

Claude Sonnet 4.6 показывает лучшее качество рассуждений среди моделей-конкурентов, но стоит дороже. DeepSeek V3.2 — самый бюджетный вариант с соотношением цены и качества, достаточным для большинства задач. Если вам нужна генерация изображений, учитывайте, что LLM отвечает только за текстовую часть: формирование промпта и принятие решений.

Инструменты (tools)

Инструменты — это функции, которые модель может вызывать. Каждый инструмент описывается JSON-схемой: имя, описание, параметры. Именно хорошие описания инструментов — ключ к качественной работе агента, а не сложность фреймворка.

Самые полезные инструменты для агента: поиск в интернете, чтение веб-страниц, генерация изображений, работа с файлами, выполнение кода. Для генерации изображений вам понадобится всего один инструмент — вызов API модели вроде FLUX.1 Schnell или Stable Diffusion.

Фреймворки — а нужны ли они?

Если вы пишете агента с нуля, вам не нужен фреймворк. Прямой вызов LLM API с циклом tool calling — это 30–50 строк кода. Фреймворк становится полезен, когда появляются: долгоиграющие workflow с сохранением состояния, человеческий контроль (human-in-the-loop), несколько агентов, сложная маршрутизация.

LangGraph — стандарт де-факто для production-агентов в 2026 году. Он используется в Klarna, LinkedIn, Uber и Replit. CrewAI хорош для быстрого прототипирования многоголовых систем. AutoGen перешёл в режим поддержки — для новых проектов стоит смотреть на Microsoft Agent Framework или AG2.

Память и MCP

Агенты без памяти забывают всё между сессиями. Краткосрочная память — это история сообщений в рамках одного диалога. Долгосрочная — файлы, векторные базы или базы данных. Начните с файловой памяти: записи в CLAUDE.md или memory.txt работают удивительно хорошо.

MCP (Model Context Protocol) — стандарт для динамического подключения инструментов. Вместо того чтобы хардкодить 2–3 инструмента, агент подключается к MCP-серверам и получает доступ к целой экосистеме: файловая система, GitHub, браузер. MCP превращает агента из игрушки в production-инструмент.

Архитектура агента генерации изображений

Наш агент будет двухэтапным. Первый этап — LLM получает сырой запрос пользователя (например, «снежный барс на скале») и превращает его в детальный промпт для модели генерации. Второй этап — вызов API генерации изображений с этим промптом.

Такая архитектура даёт два преимущества. Во-первых, LLM формулирует промпт на десятки слов, добавляя детали освещения, композиции и текстуры — то, что пользователь обычно упускает. Во-вторых, разделение ответственности позволяет менять модель генерации независимо от LLM.

Для генерации изображений будем использовать FLUX.1 Schnell от Black Forest Labs через API NVIDIA. Модель работает за 4 шага, не требует CFG и negative prompt — только prompt, seed, width и height. Это заметно проще, чем Stable Diffusion.

Пишем агента: 50 строк Python

Весь код агента умещается в один файл. Нам понадобятся: Python 3.10+, API-ключ Anthropic (или любого другого провайдера) и ключ NVIDIA для генерации изображений.

import os, requests
from anthropic import Anthropic

client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
NVIDIA_KEY = os.environ["NVIDIA_API_KEY"]

TOOLS = [{
    "name": "generate_image",
    "description": "Generate an image from a detailed English prompt",
    "input_schema": {
        "type": "object",
        "properties": {
            "prompt": {"type": "string", "description": "Detailed prompt in English"},
            "width": {"type": "number", "description": "Width"},
            "height": {"type": "number", "description": "Height"}
        },
        "required": ["prompt"]
    }
}]

def gen_img(prompt, width=1024, height=1024):
    payload = {"prompt": prompt, "width": width, "height": height, "seed": 42}
    headers = {"Authorization": f"Bearer {NVIDIA_KEY}",
               "Content-Type": "application/json"}
    url = "https://ai.api.nvidia.com/v1/genai/black-forest-labs/flux.1-schnell"
    data = requests.post(url, json=payload, headers=headers).json()
    return f"Image generated ({len(data['artifacts'][0]['base64'])} chars)"

def run_agent(msg):
    system = ("You are an image agent. When asked to create an image, "
              "write a detailed 50-100 word English prompt and call gen_img.")
    msgs = [{"role": "user", "content": msg}]
    while True:
        r = client.messages.create(model="claude-sonnet-4-6-20260505",
            max_tokens=1024, system=system, tools=TOOLS, messages=msgs)
        msgs.append({"role": "assistant", "content": r.content})
        if r.stop_reason == "end_turn":
            for b in r.content:
                if hasattr(b, "text"):
                    return b.text
        for b in r.content:
            if b.type == "tool_use":
                msgs.append({"role": "user", "content": [
                    {"type": "tool_result", "tool_use_id": b.id,
                     "content": gen_img(**b.input)}]})

if __name__ == "__main__":
    print(run_agent("A snow leopard on a Himalayan cliff at sunset"))

Как это работает

Функция run_agent реализует классический ReAct-цикл. Модель получает системный промпт и инструмент generate_image. Пока модель не скажет «end_turn», цикл продолжается: модель либо вызывает инструмент, либо возвращает финальный ответ.

Ключевой момент — системный промпт. Модели нужно явно сказать, что она должна сформулировать детальный промпт на английском. Без этой инструкции LLM может вызвать generate_image с короткой фразой «a snow leopard», и результат будет посредственным. С инструкцией модель генерирует промпт на 50–100 слов: добавляет освещение, композицию, текстуру шерсти, атмосферу.

Как улучшить агента

Добавьте веб-поиск. Пусть агент находит референсы перед генерацией. Подключите MCP-сервер файловой системы — и агент сможет сохранять результаты локально. Добавьте оценку качества через SigLIP или LLM-as-a-judge, чтобы агент сам решал, перегенерировать изображение или нет.

Минимальное улучшение, которое dramatically меняет результат — итеративный цикл. Агент генерирует изображение, оценивает его (например, через CLIP score), и если качество ниже порога — уточняет промпт и генерирует снова. DeepLearning.AI выпустили курс по этой технике в мае 2026 года — оценка через LLM-судью даёт впечатляющие результаты.

Сравнение с фреймворками

Тот же агент на LangGraph занял бы 80–100 строк и потребовал бы установки 5 зависимостей. CrewAI — около 70 строк с описанием роли и задачи. Прямой вызов API, который мы использовали, — 50 строк и 1 зависимость (anthropic).

Когда стоит переходить на фреймворк? Когда агенту нужно: сохранять состояние между запусками, поддерживать человеческий контроль, координировать несколько агентов, обрабатывать ошибки с повторными попытками. Для одноразовой генерации изображений фреймворк — избыточность.

Исследования мая 2026 года показывают: паттерн LLM Router (один агент с интеллектуальной маршрутизацией инструментов) покрывает 80% реальных сценариев использования. Многоголовые системы (CrewAI, AutoGen) дают диминуирующую отдачу за рамками research-задач. LangGraph остаётся стандартом для production, но его сложность оправдана только тогда, когда вам действительно нужны графы состояний и контрольные точки.

Что почитать и посмотреть

DeepLearning.AI выпустили курс «AI Agents for Image and Video Generation» в партнёрстве с Google — там разбирают оценку качества и итеративную генерацию. GAIA SDK от AMD предлагает готовые playbooks для запуска агентов на локальных Ryzen AI. Официальная документация Anthropic по tool use — лучший источник по агентному циклу «из первых рук».

Заключение

Собрать своего AI-агента можно за 5 минут. Вам не нужен фреймворк — только API ключ LLM, инструмент (в нашем случае — API генерации изображений) и 50 строк Python. ReAct-цикл — единственный паттерн, который нужно понять; всё остальное — надстройки.

Начните с простого: прямой вызов API, один инструмент, минимальный промпт. Когда упрётесь в ограничения — добавляйте память, подключайте MCP, переходите на LangGraph. Не начинайте с фреймворка — начинайте с цикла.

Исходный код агента из статьи можно расширить до production-решения за час: добавить сохранение в файл, обработку ошибок и веб-интерфейс. Попробуйте — это займёт меньше времени, чем выбор фреймворка.

FAQ

Какой API ключ нужен для генерации изображений?

NVIDIA предоставляет бесплатные кредиты для API FLUX.1 Schnell. Зарегистрируйтесь на NVIDIA AI Fundamentals — стартового баланса хватит на сотни генераций.

Можно ли использовать локальную модель вместо API?

Да. Замените вызов NVIDIA API на локальный запуск Stable Diffusion через GAIA SDK или Diffusers. Агентный цикл не изменится — изменится только реализация инструмента generate_image.

Какой LLM лучше для агента?

Claude Sonnet 4.6 — лучший выбор для сложных рассуждений и следования инструкциям. Для экономии используйте DeepSeek V3.2 — он справляется с 90% задач агента за треть цены.

Почему агент не генерирует хорошие изображения с первого раза?

Скорее всего, проблема в системном промпте. Убедитесь, что модель получает инструкцию формулировать детальный промпт на 50–100 слов. Добавьте примеры хороших промптов в системный промпт.

Нужен ли мне MCP для простого агента?

Нет. MCP полезен, когда агенту нужен динамический набор инструментов — файловая система, браузер, GitHub. Для одного инструмента генерации изображений MCP избыточен.