Osmi
Учебные пособия

Руководитель и рабочие

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

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

Обзор

В этом уроке мы создадим совместную систему с:

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

Шаг 1: Создание начального узла

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

  1. Добавьте начальный узел на свой холст
  2. Настройте тип ввода как «Ввод чата».
  3. Настройте Flow State с помощью следующих начальных переменных:
  • следующий: Чтобы отслеживать следующего агента
  • инструкция: Инструкция для следующего агента о том, что делать

Шаг 2: Добавьте научного руководителя LLM

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

  1. Подключите узел LLM после начального узла
  2. Назовите его «Руководитель».
  3. Настройте системное сообщение, например:
You are a supervisor tasked with managing a conversation between the following workers:
- Software Engineer  
- Code Reviewer

Given the following user request, respond with the worker to act следующий.
Each worker will perform a task and respond with their results and status.
When finished, respond with FINISH.
Select strategically to minimize the number of steps taken.
  1. Настройте структурированный вывод JSON с помощью следующих полей:
  • следующий: Перечисление со значениями «ФИНИШ, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ, РЕЦЕНЗЕНТ»
  • инструкцияs: Конкретные инструкции подзадачи, которую должен выполнить следующий работник
  • reasoning: Причина, по которой следующему работнику поручено выполнить эту работу
  1. Настройте состояние потока обновления для хранения:
  • следующий:
  • инструкция:
  1. Введите входящее сообщение: «Учитывая вышеизложенный разговор, кто должен действовать следующим? Или нам следует ЗАВЕРШИТЬ? Выберите один из вариантов: ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ, РЕЦЕНЗЕНТ». Входящее сообщение будет вставлено в конце, как будто пользователь просит руководителя назначить следующего оператора.

Шаг 3: Создайте условие маршрутизации

Узел « Проверить следующее рабочее состояние» направляет поток на основе решения супервизора.

  1. Добавьте узел «Условие» после «Супервизора»
  2. Установите два условия:
  • Условие 0: эквивалентно «ПРОГРАММНОМУ ОБЕСПЕЧЕНИЮ»
  • Условие 1: эквивалентно «РЕЦЕНЗЕНТ»
  1. Ветвь «Else» (Условие 2) обрабатывает случай «FINISH».

Это создает три выходных пути: по одному для каждого работника и один для завершения.11

Шаг 4: Настройте агента-разработчика программного обеспечения

Инженер -программист специализируется на проектировании и внедрении программных решений.

  1. Подключите узел агента к выходу Состояние 0
  2. Настройте системное сообщение:
As a Senior Software Engineer, you are a pivotal part of our innovative development team. Your expertise and leadership drive the creation of robust, scalable software solutions that meet the needs of our diverse clientele.

Your goal is to lead the development of high-quality software solutions.

Design and implement new features for the given task, ensuring it integrates seamlessly with existing systems and meets performance requirements. Use your understanding of React, TailwindCSS, NodeJS to build this feature. Make sure to adhere to coding standards and follow best practices.

The output should be a fully functional, well-documented feature that enhances our product's capabilities. Include detailed comments in the code.
  1. Установите значение «Входное сообщение»: {{ $flow.state.инструкция }}. Входное сообщение будет вставлено в конец, как будто пользователь даёт инструкцию агенту-программисту.

Шаг 5: Настройте агента проверки кода

Рецензент кода фокусируется на обеспечении качества и проверке кода.

  1. Подключите узел агента к выходу Условие 1
  2. Настройте системное сообщение:
As a Quality Assurance Engineer, you are an integral part of our development team, ensuring that our software products are of the highest quality. Your meticulous attention to detail and expertise in testing methodologies are crucial in identifying defects and ensuring that our code meets the highest standards.

Your goal is to ensure the delivery of high-quality software through thorough code review and testing.

Review the codebase for the new feature designed and implemented by the Senior Software Engineer. Provide constructive feedback, guiding contributors towards best practices and fostering a culture of continuous improvement. Your approach ensures the delivery of high-quality software that is robust, scalable, and aligned with strategic goals.
  1. Установите значение «Входное сообщение»: {{ $flow.state.инструкция }}. Входное сообщение будет вставлено в конец, как будто пользователь даёт инструкцию агенту проверки кода.

Шаг 6: Добавьте петлевые соединения

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

  1. Добавьте узел цикла после инженера-программиста.
  • Установить параметр «Возврат к циклу » как «Супервизор»
  • Установите максимальное количество циклов на 5
  1. Добавьте еще один узел цикла после Code Reviewer.
  • Установить параметр «Возврат к циклу » как «Супервизор»
  • Установите максимальное количество циклов на 5

Эти циклы обеспечивают итеративное взаимодействие между агентами.1Ю

Шаг 7: Создайте генератор окончательных ответов

Финальный агент объединяет всю совместную работу в комплексное решение.

  1. Подключите узел агента к выходу условия 2 (ветвь «Else»)
  2. Рекомендуется использовать LLM с большим размером контекста, например Gemini, из-за двустороннего характера общения, требующего большого количества токенов.
  3. Установите входное сообщение. Это важно, поскольку входное сообщение будет вставлено в конце, как будто пользователь даёт указание генератору окончательных ответов просмотреть все диалоги и сгенерировать окончательный ответ.
Given the above conversations, generate a detail solution developed by the software engineer and code reviewer.

Your guiding principles:
1. **Preserve Full Context**
   Include all code implementations, improvements and review from the conversation. Do not omit, summarize, or oversimplify key information.

2. **Markdown Output Only** 
   Your final output must be in Markdown format.

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

Шаблон «Супервизор-работник» обеспечивает несколько ключевых преимуществ:

Интеллектуальное делегирование задач: руководитель использует контекст и логику, чтобы назначить наиболее подходящего работника для каждой подзадачи.

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

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

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

Пример взаимодействия

Вот как может протекать типичное взаимодействие:

  1. Пользователь: «Создать компонент React для аутентификации пользователя с проверкой формы»
  2. Руководитель: решает, что ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ должно действовать первым и внедрять компонент
  3. Инженер-программист: создает компонент аутентификации React с логикой проверки.
  4. Руководитель: решает, что РЕЦЕНЗЕНТ должен проверить реализацию
  5. Рецензент кода: проверяет код и предлагает улучшения для безопасности и пользовательского опыта.
  6. Руководитель: решает, что ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ должно реализовать предложенные улучшения.
  7. Инженер-программист: обновляет компонент на основе отзывов.
  8. Руководитель: определяет, что задача выполнена, и направляет ее на этап ФИНИШ
  9. Генератор окончательного ответа: составляет полное решение с отзывами о реализации и обзорах.

Полная структура потока

Лучшие практики

  • Эта архитектура потребляет много токенов из-за обмена данными между агентами, поэтому подходит не для всех случаев. Она особенно эффективна для:
    • Задачи разработки программного обеспечения, требующие как реализации, так и проверки
    • Комплексное решение проблем, которое выигрывает от использования различных точек зрения
    • Рабочие процессы, где важны качество и итерация
    • Задачи, требующие координации между различными видами экспертизы
  • Убедитесь, что у каждого агента есть чётко определённая, конкретная роль. Избегайте дублирования обязанностей, которое может привести к путанице или избыточной работе.
  • Установите стандартные форматы для передачи агентами информации о ходе работы, результатах и ​​рекомендациях. Это поможет руководителю принимать более обоснованные решения о маршрутизации.
  • Используйте настройки памяти надлежащим образом, чтобы поддерживать контекст разговора и избегать проблем с ограничением токенов. Для более длительных рабочих процессов рассмотрите возможность использования настроек оптимизации памяти, таких как «Буфер сводки разговора».

Структурированный вывод

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

Инструменты и MCP

В предыдущем уроке по взаимодействию с API мы рассмотрели, как заставить большую языковую модель (LLM) вызывать внешние API. Чтобы улучшить пользовательский опыт, OSMI-AI предоставляет список готовых инструментов. Полный список доступных интеграций можно найти в разделе Инструменты .