MetaGPT for Multi-Agent Software Development Integration
MetaGPT — multi-agent framework that simulates software development structure с ролями: Product Manager, Architect, Engineer, QA. Каждый агент выполняет свою роль: PM создаёт PRD, Architect — системный дизайн, Engineer пишет код, QA составляет тест-кейсы. MetaGPT использует SOP (Standard Operating Procedures) как основу координации.
Basic Development Workflow
# pip install metagpt
import asyncio
from metagpt.software_company import generate_repo, ProjectRepo
async def develop_feature(requirement: str) -> ProjectRepo:
"""Полный цикл разработки фичи через мульти-агентную систему"""
repo = await generate_repo(
idea=requirement,
investment=3.0, # Бюджет в $ (влияет на количество итераций)
n_round=5, # Количество раундов взаимодействия
code_review=True, # Включить code review
run_tests=True, # Запускать тесты
)
return repo
# Пример использования
result = asyncio.run(develop_feature(
"Разработай REST API для управления задачами: CRUD операции, приоритеты, назначение на исполнителей. Python + FastAPI + PostgreSQL."
))
print(result.get_code()) # Сгенерированный код
print(result.get_tests()) # Тесты
print(result.get_docs()) # Документация
Custom Roles and Actions
from metagpt.roles import Role
from metagpt.actions import Action
from metagpt.schema import Message
class SecurityAuditAction(Action):
"""Аудит безопасности кода"""
name: str = "SecurityAudit"
i_context: str = ""
async def run(self, code: str) -> str:
prompt = f"""Проведи аудит безопасности следующего кода.
Проверь: SQL injection, XSS, hardcoded secrets, небезопасные зависимости,
отсутствие валидации входных данных.
Код:
{code}
Формат: список уязвимостей с severity (Critical/High/Medium/Low) и рекомендациями."""
return await self._aask(prompt)
class SecurityEngineer(Role):
"""Специалист по безопасности в команде разработки"""
name: str = "Security Engineer"
profile: str = "Security Engineer"
goal: str = "Обеспечить безопасность кода перед деплоем"
constraints: str = "Проверяй только код, написанный командой"
def __init__(self, **kwargs):
super().__init__(**kwargs)
self._init_actions([SecurityAuditAction])
self._watch([WriteCode]) # Реагирует на написание кода
async def _act(self) -> Message:
todo = self.rc.todo
code = self.get_memories(k=1)[0].content
audit_result = await todo.run(code)
return Message(
content=audit_result,
role=self.profile,
cause_by=type(todo),
)
Usage in Specific Scenarios
from metagpt.team import Team
from metagpt.roles import ProjectManager, Architect, Engineer, QaEngineer
async def custom_team_development(requirement: str):
"""Команда с кастомным составом"""
team = Team()
team.hire([
ProjectManager(),
Architect(),
Engineer(n_borg=2), # 2 инженера для параллельного написания
QaEngineer(),
SecurityEngineer(), # Кастомная роль
])
team.invest(investment=5.0)
team.run_project(requirement)
await team.run(n_round=8)
Incremental Development
from metagpt.context import Context
from metagpt.roles import Engineer
async def add_feature_to_existing_codebase(
existing_code_path: str,
new_requirement: str,
):
"""Добавляет фичу в существующий код"""
ctx = Context()
# Загружаем существующий код как контекст
ctx.repo = ProjectRepo(existing_code_path)
engineer = Engineer(context=ctx)
result = await engineer.run(
Message(content=new_requirement, role="User")
)
return result
Practical Case: CRUD Module Generation
Задача: разработчики тратили 4–6 часов на стандартный CRUD-модуль (модель, репозиторий, сервис, контроллер, тесты). 20+ таких модулей в квартал.
Подход: MetaGPT генерирует шаблонный код по спецификации, разработчик проводит ревью и дорабатывает бизнес-логику.
Шаблон спецификации:
spec_template = """
Создай CRUD-модуль для сущности {entity_name}:
- Поля: {fields}
- Отношения: {relations}
- Бизнес-правила: {rules}
- Стек: FastAPI + SQLAlchemy 2.0 + Alembic + pytest
- Включи: pydantic схемы, репозиторий, сервис, роутер, тесты CRUD
"""
Результаты:
- Время создания стандартного CRUD: 5ч → 40 мин (генерация 15 мин + ревью 25 мин)
- Покрытие тестами: 73% → 89% (MetaGPT последователен в тестировании)
- Единообразие кода: структура идентична по всем модулям
- Разработчики: оценили снижение рутины, но отметили необходимость ревью бизнес-логики
Ограничения: сложная бизнес-логика (>3 уровней вложенности, нетривиальные алгоритмы) требует значительной доработки. MetaGPT хорош для структурного кода, слабее для алгоритмически нетривиальных задач.
Integration with CI/CD
# GitHub Action для автогенерации по issue
import yaml
github_action = """
name: MetaGPT Feature Generation
on:
issues:
types: [labeled]
jobs:
generate:
if: contains(github.event.issue.labels.*.name, 'metagpt-generate')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Generate code
run: |
pip install metagpt
python scripts/generate_feature.py "${{ github.event.issue.body }}"
- name: Create PR
uses: peter-evans/create-pull-request@v6
with:
title: "[MetaGPT] ${{ github.event.issue.title }}"
branch: metagpt/${{ github.event.issue.number }}
"""
Timeline
- Базовый generate_repo для прототипов: 1–2 дня настройки
- Кастомные роли под процессы команды: 1–2 недели
- Интеграция в существующий CI/CD: 1 неделя
- Настройка quality gates и review процессов: 1–2 недели







