/
Вопросы и ответы
/
AI-агенты
/

Что такое multi-agent системы и когда они нужны?

Что такое multi-agent системы и когда они нужны?

12 часов назад

Никита Вихров

Ответы

0

Что такое multi-agent системы и когда они нужны

Multi-agent система — это несколько агентов, которые работают вместе. Один агент получает задачу, разбивает её на подзадачи и раздаёт другим агентам. Те решают свои части и возвращают результаты.

Звучит сложно — и так и есть. Большинству задач multi-agent не нужен.


Когда один агент не справляется

Один агент ограничен контекстным окном. Если задача требует обработать 500 файлов, проанализировать 10 000 строк логов или работать параллельно — один агент упрётся в лимиты или будет работать слишком медленно.

Второй случай — специализация. Один агент хорошо пишет код, другой хорошо проверяет безопасность, третий пишет документацию. Разделение по ролям даёт лучший результат, чем один агент, который делает всё.


Архитектура: оркестратор и воркеры

Самая распространённая схема — один оркестратор управляет несколькими воркерами:

from anthropic import Anthropic

client = Anthropic()

def run_agent(system_prompt: str, task: str, tools: list) -> str:
    """Запускает агента и возвращает финальный ответ"""
    messages = [{"role": "user", "content": task}]

    for _ in range(10):
        response = client.messages.create(
            model="claude-opus-4-5",
            max_tokens=2048,
            system=system_prompt,
            tools=tools,
            messages=messages
        )

        if response.stop_reason == "end_turn":
            return response.content[0].text

        if response.stop_reason == "tool_use":
            # обработка инструментов...
            pass

    return "Агент не завершил задачу"


# Оркестратор разбивает задачу
ORCHESTRATOR_PROMPT = """Ты — менеджер проекта. Получаешь большую задачу и разбиваешь её 
на независимые подзадачи. Для каждой подзадачи указываешь: что нужно сделать и какие данные нужны.
Отвечай только JSON."""

task = "Проверь кодовую базу: найди баги, проверь безопасность, обнови документацию"

plan = run_agent(ORCHESTRATOR_PROMPT, task, [])
# → {"subtasks": ["найди баги в коде", "проверь на уязвимости", "обнови README"]}

import json
subtasks = json.loads(plan)["subtasks"]

# Воркеры выполняют подзадачи параллельно
import concurrent.futures

CODE_REVIEWER_PROMPT = "Ты — senior разработчик. Ищешь баги и проблемы с качеством кода."
SECURITY_PROMPT = "Ты — security engineer. Ищешь уязвимости: SQL injection, XSS, утечки секретов."
DOCS_PROMPT = "Ты — технический писатель. Пишешь понятную документацию для разработчиков."

prompts = [CODE_REVIEWER_PROMPT, SECURITY_PROMPT, DOCS_PROMPT]

with concurrent.futures.ThreadPoolExecutor() as executor:
    futures = [
        executor.submit(run_agent, prompt, subtask, tools)
        for prompt, subtask in zip(prompts, subtasks)
    ]
    results = [f.result() for f in futures]

# Оркестратор собирает финальный отчёт
final_report = run_agent(
    "Ты — менеджер. Собери результаты команды в единый отчёт.",
    f"Результаты: {results}",
    []
)

Паттерн проверки: агент + критик

Простой и мощный вариант — два агента: один генерирует, другой проверяет.

# Агент пишет код
code = run_agent(
    "Ты — разработчик. Пиши чистый, рабочий код.",
    "Напиши функцию для валидации email",
    []
)

# Критик проверяет
review = run_agent(
    "Ты — строгий code reviewer. Ищи баги, edge cases, проблемы с безопасностью. Будь конкретен.",
    f"Проверь этот код:\n{code}",
    []
)

Когда multi-agent не нужен

Если задача решается одним агентом за разумное время — не усложняй. Multi-agent добавляет: больше API-вызовов, больше расходов, сложнее отладка, больше точек отказа.

Правило простое: начни с одного агента. Переходи к multi-agent, когда упёрся в конкретное ограничение — контекст, скорость или качество специализированной задачи.

12 часов назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845