Published on

Разработка агентов Anthropic: простота важнее сложности

Авторы
  • avatar
    Имя
    Ajax
    Twitter

Определение интеллектуальных агентов

Понятие интеллектуальных агентов многогранно. Некоторые видят в них "всемогущих дворецких", способных самостоятельно мыслить, принимать решения и использовать инструменты для выполнения сложных задач. Другие считают их "исполнительными работниками", которые четко следуют заданным рабочим процессам. Anthropic объединяет эти два подхода под термином "интеллектуальные системы" и проводит различие между рабочими процессами и агентами:

  • Рабочий процесс: Система, в которой большие языковые модели (LLM) и инструменты организуются через предопределенные пути кода.
  • Агент: Система, в которой LLM динамически управляет своими процессами и использованием инструментов, самостоятельно контролируя выполнение задач.

Когда следует использовать агентов

Anthropic рекомендует при разработке ИИ-приложений придерживаться принципа "не усложняй, если можно сделать проще". Не во всех случаях требуется построение сложных интеллектуальных систем. Хотя они и обладают мощными возможностями, но могут приводить к замедлению ответа и увеличению затрат. Разработчикам необходимо находить баланс между функциональностью и эффективностью.

  • Рабочие процессы: Подходят для четких задач, требующих предсказуемости и согласованности.
  • Агенты: Лучше подходят для масштабных сценариев, требующих гибкости и принятия решений на основе модели.

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

Использование фреймворков

В настоящее время существует множество фреймворков, помогающих разработчикам создавать ИИ-агентов, например:

  • LangGraph от LangChain
  • Фреймворк AI Agent от Amazon Bedrock
  • Инструмент для построения рабочих процессов с большими моделями Rivet
  • GUI-инструмент Vellum для создания и тестирования сложных рабочих процессов

Эти фреймворки упрощают процесс разработки, но также могут добавлять уровни абстракции кода, делая внутреннюю логику менее прозрачной, усложняя отладку и приводя к излишне сложным решениям в простых сценариях.

Anthropic рекомендует разработчикам начинать с непосредственного использования API больших моделей. Многие шаблоны можно реализовать всего несколькими строками кода. Если вы все же решите использовать фреймворк, обязательно разберитесь в его основных принципах. Недостаточное понимание механизма работы фреймворка является основной причиной проблем при разработке.

Anthropic предоставляет конкретные примеры в своем сборнике рецептов.

Строительные блоки, рабочие процессы и агенты

Базовый строительный блок: улучшенная LLM

Основным строительным блоком интеллектуальных систем является улучшенная LLM, обладающая такими функциями, как поиск и память. Модели Anthropic могут активно использовать эти возможности, например, генерировать поисковые запросы, выбирать инструменты и определять, какую информацию следует сохранить.

При расширении функциональности следует сосредоточиться на:

  • Настройке функций в соответствии с конкретным сценарием использования.
  • Обеспечении простых и хорошо документированных интерфейсов для модели.

Недавно выпущенный протокол контекста модели Anthropic упрощает интеграцию ИИ-моделей с экосистемами сторонних инструментов.

Рабочий процесс: цепочка подсказок

Цепочка подсказок разбивает сложную задачу на несколько этапов, каждый из которых вызывает большую модель один раз, а последующие этапы основаны на результатах предыдущего. Разработчики могут добавлять контрольные точки в промежуточные этапы, чтобы убедиться, что процесс идет по плану.

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

Типичные примеры использования:

  • Сначала сгенерируйте маркетинговый текст, а затем переведите его на другие языки.
  • Сначала напишите план документа и проведите проверку на соответствие требованиям, а затем на основе плана напишите полный документ.

Рабочий процесс: интеллектуальная маршрутизация

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

Типичные примеры использования:

  • В системах обслуживания клиентов направляйте общие запросы, запросы на возврат средств и техническую поддержку в соответствующие процессы.
  • Назначайте простые и часто встречающиеся вопросы меньшим моделям, а сложные и редкие вопросы - более мощным моделям для оптимизации затрат и скорости.

Рабочий процесс: параллелизм

Большие языковые модели могут обрабатывать задачи одновременно и программно агрегировать выходные данные. Характеристики параллельных рабочих процессов:

  • Разделение задач: Разбейте задачи на подзадачи, которые могут выполняться параллельно, и в конце объедините результаты.
  • Механизм голосования: Запустите одну и ту же задачу несколько раз, выберите лучший результат или объедините несколько ответов.

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

Типичные примеры использования:

  • Разделение задач:
    • Безопасность: одна модель обрабатывает запрос пользователя, а другая выполняет проверку контента.
    • Оценка производительности: различные модели оценивают показатели производительности системы.
  • Механизм голосования:
    • Проверка безопасности кода: несколько моделей обнаружения совместно находят уязвимости в коде.
    • Проверка контента: несколько моделей оценивают безопасность контента с разных точек зрения.

Рабочий процесс: лидер-исполнитель

Центральная большая языковая модель динамически разбивает задачу, назначает ее моделям-исполнителям и обобщает результаты.

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

Типичные примеры использования:

  • Приложения для программирования, требующие внесения сложных изменений в несколько файлов.
  • Поисковые задачи, требующие сбора и анализа релевантной информации из нескольких источников.

Рабочий процесс: оценка-оптимизация

Один вызов LLM генерирует ответ, а другой обеспечивает оценку и обратную связь, образуя цикл.

Этот рабочий процесс особенно эффективен, когда существуют четкие критерии оценки и когда итеративная доработка может принести значительную пользу. LLM может предоставлять обратную связь, аналогично процессу многократного редактирования, который используют писатели.

Типичные примеры использования:

  • Литературный перевод: модель оценки обнаруживает языковые различия, пропущенные при переводе, и предлагает исправления.
  • Сложный поиск: модель оценки определяет, нужно ли продолжать углубленный поиск.

Интеллектуальные агенты

Интеллектуальные агенты появились по мере развития LLM в таких ключевых областях, как понимание сложных входных данных, планирование, использование инструментов и восстановление после ошибок.

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

На каждом этапе выполнения крайне важно получать "реальную картину" из окружающей среды. Агент может приостановиться в контрольных точках или при возникновении препятствий, чтобы получить обратную связь от человека. Задачи обычно завершаются после выполнения, но также часто включают условия остановки.

Агенты способны справляться со сложными задачами, но их реализация обычно проста, часто это всего лишь большая языковая модель, использующая инструменты в цикле на основе обратной связи от окружающей среды. Поэтому крайне важно, чтобы набор инструментов и его документация были четкими и продуманными.

Агенты подходят для открытых вопросов, где трудно предсказать количество необходимых шагов и нельзя жестко закодировать фиксированные пути. Автономность агентов делает их идеальными для масштабирования задач в доверенной среде. Автономность агентов означает более высокие затраты и риск накопления ошибок. Рекомендуется проводить обширное тестирование в песочнице и устанавливать соответствующие меры предосторожности.

Примеры применения агентов:

  • Кодовый агент для решения задач SWE-bench, связанных с редактированием нескольких файлов в соответствии с описанием задачи.
  • Функция "Использование компьютера" от Anthropic, в которой Claude использует компьютер для выполнения задач.

Комбинация и настройка

Эти строительные блоки не являются предписывающими, и разработчики могут формировать и комбинировать их в зависимости от конкретного случая использования. Ключом к успеху является измерение производительности и итеративная реализация. Увеличение сложности следует рассматривать только тогда, когда более простые решения не работают. Успех в области LLM заключается не в создании самых сложных систем, а в создании систем, которые соответствуют потребностям. Начните с простых подсказок, оптимизируйте их с помощью всесторонней оценки и только тогда добавляйте многоэтапные системы агентов, когда более простые решения не работают.

При развертывании агентов необходимо соблюдать следующие принципы:

  • Сохраняйте простоту конструкции агента.
  • Уделяйте первоочередное внимание прозрачности агента, четко демонстрируя каждый запланированный шаг.
  • Тщательно прорабатывайте интерфейс агент-компьютер (ACI) с помощью полной документации по инструментам и тестирования.