CUGA от IBM: обзор лёгкого агентного фреймворка с примерами кода | AiManual
AiManual Logo Ai / Manual.
28 Июн 2026 Инструмент

CUGA от IBM: Собираем AI-агента за 10 минут без боли. Легкий open-source каркас, который хоронит LangChain (с кодом)

Разбираем CUGA — open-source инструмент от IBM для создания AI-агентов. Сравнение с LangChain, примеры кода, конфигурация и места, где он реально пашет.

Реклама
cliv2

Хватит уже клепать агентов на LangChain, где одна простая цепочка превращается в многоэтажный торт из callback'ов, пулов потоков и багов с контекстом. Я серьёзно. Последние полгода каждый второй проект тянет десятки мегабайт зависимостей ради того, чтобы LLM вызвала поиск в Википедии. IBM, похоже, тоже устала смотреть на этот цирк и выпустила CUGA.

Что за зверь и почему о нём заговорили

CUGA (расшифровывается как Configurable Unified Generative Agent) — легковесный open-source каркас от IBM Research, появившийся в начале 2025 года. К июню 2026 проект дорос до версии 0.8.5 и оброс тем, чего так не хватало всем, кто пытался делать агентов на коленке:

  • Модульная система инструментов без необходимости наследоваться от абстрактных классов (просто декораторы).
  • Встроенная поддержка стриминга и vision начиная с v0.7.
  • Нативная работа с любыми LLM через LiteLLM — подсуньте хоть GPT-4o, хоть локальный Qwen2.5.
  • Автоматическое приведение типов и валидация аргументов инструментов через Pydantic.

Главное слово — конфигурируемый. Вместо того чтобы писать тонну кода для orchestration, вы описываете поведение агента в YAML или JSON. А сам агент использует технику ReAct (Reasoning + Acting) с дополнительным внутренним мониторингом. IBM выложила больше 24 рабочих примеров в своём репозитории — от парсинга веб-страниц до мультимодальных ассистентов. Они прямо заявляют: CUGA создан, чтобы убить рутину «plumbing» — склеивания LLM с внешними API.

Если не сталкивались с CUGA раньше, начните с обзора конфигурируемого агента для веб и API задач — там разобраны принципы работы. Для продвинутых — наша подборка 24 рабочих примеров, где можно подсмотреть архитектурные приёмы.

Ставим за 30 секунд и пишем первого агента

Установка — до смешного простая:

pip install cuga

Вот и всё. Никаких компиляций, нативных библиотек и танцев с бубном. Теперь создадим агента, который умеет искать в Википедии и гуглить через DuckDuckGo. Классическая задача, на которой ломаются новички в LangChain, когда забывают передать инструменты в executor.

from cuga import Agent, tool
from duckduckgo_search import DDGS
import wikipedia

@tool(name="web_search", description="Search the web using DuckDuckGo")
def web_search(query: str) -> str:
    with DDGS() as ddgs:
        results = list(ddgs.text(query, max_results=3))
        return "\n".join([r["body"] for r in results])

@tool(name="wikipedia", description="Get summary from Wikipedia")
def wikipedia_summary(query: str) -> str:
    try:
        return wikipedia.summary(query, sentences=2)
    except Exception as e:
        return f"Error: {e}"

agent = Agent(
    model="gpt-4o-mini",
    tools=[web_search, wikipedia_summary],
    system_prompt="You are a helpful assistant that searches web and Wikipedia."
)

response = agent.run("Tell me about the latest news on Mars rovers")
print(response)

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

Почему CUGA лучше (и хуже) LangChain, CrewAI и AutoGPT

Давайте честно: LangChain — это не фреймворк, а платформа для разработки платформ. В нём запутаться легко, а отладка агента, который зациклился в бесконечном вызове инструментов, превращается в квест. CrewAI — красивая абстракция, но её агенты тяжеловесны для простых задач. AutoGPT — монстр, который требует Docker и файловой системы. CUGA берёт лучшее от каждого, но режет жир.

ПараметрCUGALangChainCrewAI
Вес зависимостей~5 MB~50 MB~35 MB
Поддержка streamingДа (с версии 0.7)ДаНет нативно
Работа с visionВстроеннаяЧерез интеграцииНе поддерживает
Время первого агента5 минут30 минут20 минут
Гибкость конфигурацииYAML/JSONТолько кодКод + yaml

CUGA не идеален. Если вам нужно управление памятью с векторными хранилищами из коробки — придётся допиливать самому. В LangChain это уже есть. Но для 80% задач классический ReAct с парой инструментов — это всё, что нужно.

Как НЕ надо делать: типичная ошибка с контекстом

Посмотрите, как легко сломать агента, перегрузив его системным промптом. Некоторые считают, что чем больше инструкций, тем лучше. Реальность — LLM начинает путаться и галлюцинировать инструменты.

# ❌ Плохо: агент тонет в инструкциях
bad_prompt = """You are a search assistant with web_search, wikipedia, calculator, translate, weather, news and stock_price. 
When searching, always check Wikipedia first, then fallback to web_search. 
If the user asks for numbers, use calculator. For currency, use translate..."""

# ✅ Хорошо: кратко и по делу
good_prompt = "You have access to search and Wikipedia. Use them to answer factual questions."

CUGA сам умеет управлять порядком вызовов через внутренний планировщик (на основе LLM). Зачем дублировать эту логику в промпте? Оставьте агенту пространство для манёвра.

💡
В обзоре «агент, который не просто кликает, а думает» подробно расписано, как CUGA использует reasoning перед действием. Рекомендую прочитать, чтобы не изобретать велосипед.

Когда CUGA реально вывозит — production кейсы

На практике видел, как ребята заменили связку LangChain + Celery на один CUGA-агент для обработки заявок в техподдержку. Вместо микросервисного ада — один Python-процесс с асинхронными воркерами. CUGA позволяет подключать инструменты через HTTP (FastAPI), так что каждый инструмент может быть отдельным сервисом. Вот как выглядит запуск агента как веб-приложения:

from cuga import Agent, tool
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()
agent = Agent(model="gpt-4o", tools=[my_custom_tool])  # my_custom_tool определён ранее

class Query(BaseModel):
    text: str

@app.post("/ask")
def ask_agent(query: Query):
    return {"result": agent.run(query.text)}

Собрали, завернули в Docker, запустили на одном инстансе — и он пашет под нагрузкой в сотню запросов в минуту. CUGA поддерживает батчинг и автоматическое кэширование ответов LLM (через diskcache). Без лишних телодвижений.

Если вы работаете с локальными моделями — в 2025-2026 их стало много. CUGA отлично дружит с Qwen2.5, Llama 3.3, Mistral. Для тех, кто не хочет зависеть от облачных провайдеров, мы собрали список топ-5 open-source моделей для агентов — в них CUGA показывает высокую точность выполнения инструментов.

Кому нужен этот каркас (и кому не нужен)

  • Соло-разработчикам и стартапам: CUGA позволяет быстро сделать MVP агента, не погрязая в архитектурных решениях. Выкатили за день — тестируете гипотезу.
  • Командам, уже использующим FastAPI: встраивается как middleware, не требует отдельного рантайма.
  • Исследователям: можно легко менять модели и стратегии промптинга. CUGA поддерживает кастомные планировщики.
  • Хардкорным продакшен-инженерам: скорее всего, нет. Если вам нужна распределённая трассировка, A/B тестинг агентов и сложное управление памятью — LangChain с LangSmith пока вне конкуренции.

Но не обольщайтесь. CUGA — не серебряная пуля. Его документация ещё сыровата, а сообщество гораздо меньше, чем у «тяжеловесов». Однако сам факт, что IBM поддерживает проект и выпускает релизы каждые две недели, внушает доверие.

Будущее, которое уже наступило

В 2026 году агенты перестают быть игрушкой. CUGA — это попытка сделать агентное программирование таким же простым, как написание обычной функции. В версии 0.8.5 появилась экспериментальная возможность обучения агента на своих трейсах (imitation learning) — вы записываете, как человек выполняет задачу, а CUGA воспроизводит цепочку действий. Мы уже писали о записи и дискретизации действий — с CUGA этот процесс становится автоматическим.

Совет напоследок: не пытайтесь скопировать архитектуру больших корпоративных агентов. Начните с малого. Напишите агента, который отвечает на вопросы по вашей базе знаний с помощью web_search и read_file. Увидите, как просто. А когда упрётесь в лимиты — тогда и думайте о миграции на что-то более тяжёлое. CUGA идеален именно для первого шага.

P.S. Если решите попробовать — загляните на страницу проекта в Hugging Face Spaces, там есть работающие демо. И да, не забудьте pip install cuga --upgrade — к лету 2026 вышло уже больше 20 версий.

Подписаться на канал