PentAGI

Exploitation

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


Установка
mkdir pentagi && cd pentagi
curl -o .env https://raw.githubusercontent.com/vxcontrol/pentagi/master/.env.example
curl -o example.custom.provider.yml https://raw.githubusercontent.com/vxcontrol/pentagi/master/examples/configs/custom-openai.provider.yml
curl -o example.ollama.provider.yml https://raw.githubusercontent.com/vxcontrol/pentagi/master/examples/configs/ollama-llama318b.provider.yml
curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/master/docker-compose.yml
docker compose up -d
показать оригинал переведено ИИ

PentAGI

Pентест Aртифициальный Gенеральный Iнтеллект


Присоединяйтесь к сообществу! Общайтесь с исследователями безопасности, энтузиастами ИИ и этичными хакерами. Получайте поддержку, делитесь знаниями и будьте в курсе последних новостей PentAGI.

Discord⠀Telegram

vxcontrol%2Fpentagi | Trendshift

Содержание

Обзор

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

Вы можете посмотреть видео Обзор PentAGI: Видео обзора PentAGI

Возможности

  • Безопасность и изоляция. Все операции выполняются в изолированной среде Docker с полной изоляцией.
  • Полная автономность. Агент на основе ИИ автоматически определяет и выполняет шаги пентеста с возможностью мониторинга выполнения и интеллектуальным планированием задач для повышения надёжности.
  • Профессиональные инструменты пентеста. Встроенный набор из более чем 20 профессиональных инструментов безопасности, включая nmap, metasploit, sqlmap и другие.
  • Умная система памяти. Долгосрочное хранение результатов исследований и успешных подходов для будущего использования.
  • Опциональная интеграция графа знаний. Граф знаний на основе Graphiti с использованием Neo4j для отслеживания семантических связей и расширенного понимания контекста.
  • Веб-интеллект. Встроенный браузер через scraper для сбора актуальной информации из веб-источников.
  • Внешние поисковые системы. Интеграция с продвинутыми поисковыми API, включая Tavily, Firecrawl, Traversaal, Perplexity, DuckDuckGo, Google Custom Search, Sploitus Search и Searxng для всестороннего сбора информации.
  • Команда специалистов. Система делегирования со специализированными ИИ-агентами для задач исследования, разработки и инфраструктуры, дополненная опциональным мониторингом выполнения и интеллектуальным планированием задач для оптимальной производительности с меньшими моделями.
  • Всесторонний мониторинг. Детальное логирование и интеграция с Grafana/Prometheus для наблюдения за системой в реальном времени.
  • Детальная отчетность. Генерация подробных отчетов об уязвимостях с руководствами по эксплуатации.
  • Умное управление контейнерами. Автоматический выбор Docker-образа на основе конкретных требований задачи.
  • Современный интерфейс. Чистый и интуитивно понятный веб-интерфейс для управления системой и мониторинга.
  • Полнофункциональные API. REST и GraphQL API с аутентификацией по Bearer-токену для автоматизации и интеграции.
  • Постоянное хранилище. Все команды и результаты сохраняются в PostgreSQL с расширением pgvector.
  • Масштабируемая архитектура. Микросервисная архитектура с поддержкой горизонтального масштабирования.
  • Самостоятельное развертывание. Полный контроль над развертыванием и данными.
  • Гибкая аутентификация. Поддержка более 10 LLM-провайдеров (OpenAI, Anthropic, Google AI/Gemini, AWS Bedrock, Ollama, DeepSeek, GLM, Kimi, Qwen, MiniMax, Custom) плюс агрегаторы (OpenRouter, DeepInfra, Atlas Cloud, OpenCode Go plan). Для локального развертывания в производственной среде см. наше руководство по vLLM + Qwen3.5-27B-FP8.
  • Аутентификация по API-токену. Безопасная система Bearer-токенов для программного доступа к REST и GraphQL API.
  • Быстрое развертывание. Простая настройка через Docker Compose с полной конфигурацией окружения.

Текущие границы возможностей

  • PentAGI сегодня — это автономная и управляемая ассистентом платформа для тестирования на проникновение, а не продукт для симуляции нарушений и атак (BAS) в стиле CALDERA или эмуляции противника с предопределенными кампаниями или планами атак.
  • Сценарии атак, созданные агентом в стиле BAS, следует рассматривать как концептуальную или будущую работу, а не как функцию, реализованную сегодня.
  • Текущий интерфейс отчета о потоке поддерживает веб-просмотр, копирование в буфер обмена, загрузку в Markdown и PDF. Экспорт JSON-отчета о потоке не документирован как поддерживаемый формат вывода на сегодняшний день.
  • Гибкость провайдеров доступна сегодня через встроенных провайдеров и пользовательские/совместимые с OpenAI конечные точки. См. Конфигурация пользовательского LLM-провайдера и руководство по vLLM + Qwen3.5-27B-FP8.

Архитектура

Системный контекст

flowchart TB
    classDef person fill:#08427B,stroke:#073B6F,color:#fff
    classDef system fill:#1168BD,stroke:#0B4884,color:#fff
    classDef external fill:#666666,stroke:#0B4884,color:#fff

    pentester["👤 Security Engineer
    (User of the system)"]

    pentagi["✨ PentAGI
    (Autonomous penetration testing system)"]

    target["🎯 target-system
    (System under test)"]
    llm["🧠 llm-provider
    (OpenAI/Anthropic/Ollama/Bedrock/Gemini/Custom)"]
    search["🔍 search-systems
    (Google/DuckDuckGo/Tavily/Firecrawl/Traversaal/Perplexity/Sploitus/Searxng)"]
    langfuse["📊 langfuse-ui
    (LLM Observability Dashboard)"]
    grafana["📈 grafana
    (System Monitoring Dashboard)"]

    pentester --> |Uses HTTPS| pentagi
    pentester --> |Monitors AI HTTPS| langfuse
    pentester --> |Monitors System HTTPS| grafana
    pentagi --> |Tests Various protocols| target
    pentagi --> |Queries HTTPS| llm
    pentagi --> |Searches HTTPS| search
    pentagi --> |Reports HTTPS| langfuse
    pentagi --> |Reports HTTPS| grafana

    class pentester person
    class pentagi system
    class target,llm,search,langfuse,grafana external

    linkStyle default stroke:#ffffff,color:#ffffff

Контейнерная архитектура (нажмите, чтобы развернуть)

graph TB
  subgraph Core Services
UI[Frontend UI<br/>React + TypeScript]
API[Backend API<br/>Go + GraphQL]
DB[(Vector Store<br/>PostgreSQL + pgvector)]
MQ[Task Queue<br/>Async Processing]
Agent[AI Agents<br/>Multi-Agent System]
  end

  subgraph Knowledge Graph
Graphiti[Graphiti<br/>Knowledge Graph API]
Neo4j[(Neo4j<br/>Graph Database)]
  end

  subgraph Monitoring
Grafana[Grafana<br/>Dashboards]
VictoriaMetrics[VictoriaMetrics<br/>Time-series DB]
Jaeger[Jaeger<br/>Distributed Tracing]
Loki[Loki<br/>Log Aggregation]
OTEL[OpenTelemetry<br/>Data Collection]
  end

  subgraph Analytics
Langfuse[Langfuse<br/>LLM Analytics]
ClickHouse[ClickHouse<br/>Analytics DB]
Redis[Redis<br/>Cache + Rate Limiter]
MinIO[MinIO<br/>S3 Storage]
  end

  subgraph Security Tools
Scraper[Web Scraper<br/>Isolated Browser]
PenTest[Security Tools<br/>20+ Pro Tools<br/>Sandboxed Execution]
  end

  UI --> |HTTP/WS| API
  API --> |SQL| DB
  API --> |Events| MQ
  MQ --> |Tasks| Agent
  Agent --> |Commands| PenTest
  Agent --> |Queries| DB
  Agent --> |Knowledge| Graphiti
  Graphiti --> |Graph| Neo4j

  API --> |Telemetry| OTEL
  OTEL --> |Metrics| VictoriaMetrics
  OTEL --> |Traces| Jaeger
  OTEL --> |Logs| Loki

  Grafana --> |Query| VictoriaMetrics
  Grafana --> |Query| Jaeger
  Grafana --> |Query| Loki

  API --> |Analytics| Langfuse
  Langfuse --> |Store| ClickHouse
  Langfuse --> |Cache| Redis
  Langfuse --> |Files| MinIO

  classDef core fill:#f9f,stroke:#333,stroke-width:2px,color:#000
  classDef knowledge fill:#ffa,stroke:#333,stroke-width:2px,color:#000
  classDef monitoring fill:#bbf,stroke:#333,stroke-width:2px,color:#000
  classDef analytics fill:#bfb,stroke:#333,stroke-width:2px,color:#000
  classDef tools fill:#fbb,stroke:#333,stroke-width:2px,color:#000

  class UI,API,DB,MQ,Agent core
  class Graphiti,Neo4j knowledge
  class Grafana,VictoriaMetrics,Jaeger,Loki,OTEL monitoring
  class Langfuse,ClickHouse,Redis,MinIO analytics
  class Scraper,PenTest tools

Связи сущностей (нажмите, чтобы развернуть)

erDiagram
  Flow ||--o{ Task : contains
  Task ||--o{ SubTask : contains
  SubTask ||--o{ Action : contains
  Action ||--o{ Artifact : produces
  Action ||--o{ Memory : stores

  Flow {
      string id PK
      string name "Flow name"
      string description "Flow description"
      string status "active/completed/failed"
      json parameters "Flow parameters"
      timestamp created_at
      timestamp updated_at
  }

  Task {
      string id PK
      string flow_id FK
      string name "Task name"
      string description "Task description"
      string status "pending/running/done/failed"
      json result "Task results"
      timestamp created_at
      timestamp updated_at
  }

  SubTask {
      string id PK
      string task_id FK
      string name "Subtask name"
      string description "Subtask description"
      string status "queued/running/completed/failed"
      string agent_type "researcher/developer/executor"
      json context "Agent context"
      timestamp created_at
      timestamp updated_at
  }

  Action {
      string id PK
      string subtask_id FK
      string type "command/search/analyze/etc"
      string status "success/failure"
      json parameters "Action parameters"
      json result "Action results"
      timestamp created_at
  }

  Artifact {
      string id PK
      string action_id FK
      string type "file/report/log"
      string path "Storage path"
      json metadata "Additional info"
      timestamp created_at
  }

  Memory {
      string id PK
      string action_id FK
      string type "observation/conclusion"
      vector embedding "Vector representation"
      text content "Memory content"
      timestamp created_at
  }

Взаимодействие агентов (нажмите, чтобы развернуть)

sequenceDiagram
  participant O as Orchestrator
  participant R as Researcher
  participant D as Developer
  participant E as Executor
  participant VS as Vector Store
  participant KB as Knowledge Base

  Note over O,KB: Flow Initialization
  O->>VS: Query similar tasks
  VS-->>O: Return experiences
  O->>KB: Load relevant knowledge
  KB-->>O: Return context

  Note over O,R: Research Phase
  O->>R: Analyze target
  R->>VS: Search similar cases
  VS-->>R: Return patterns
  R->>KB: Query vulnerabilities
  KB-->>R: Return known issues
  R->>VS: Store findings
  R-->>O: Research results

  Note over O,D: Planning Phase
  O->>D: Plan attack
  D->>VS: Query exploits
  VS-->>D: Return techniques
  D->>KB: Load tools info
  KB-->>D: Return capabilities
  D-->>O: Attack plan

  Note over O,E: Execution Phase
  O->>E: Execute plan
  E->>KB: Load tool guides
  KB-->>E: Return procedures
  E->>VS: Store results
  E-->>O: Execution status

Система памяти (нажмите, чтобы развернуть)

graph TB
  subgraph "Long-term Memory"
VS[(Vector Store<br/>Embeddings DB)]
KB[Knowledge Base<br/>Domain Expertise]
Tools[Tools Knowledge<br/>Usage Patterns]
  end

  subgraph "Working Memory"
Context[Current Context<br/>Task State]
Goals[Active Goals<br/>Objectives]
State[System State<br/>Resources]
  end

  subgraph "Episodic Memory"
Actions[Past Actions<br/>Commands History]
Results[Action Results<br/>Outcomes]
Patterns[Success Patterns<br/>Best Practices]
  end

  Context --> |Query| VS
  VS --> |Retrieve| Context

  Goals --> |Consult| KB
  KB --> |Guide| Goals

  State --> |Record| Actions
  Actions --> |Learn| Patterns
  Patterns --> |Store| VS

  Tools --> |Inform| State
  Results --> |Update| Tools

  VS --> |Enhance| KB
  KB --> |Index| VS

  classDef ltm fill:#f9f,stroke:#333,stroke-width:2px,color:#000
  classDef wm fill:#bbf,stroke:#333,stroke-width:2px,color:#000
  classDef em fill:#bfb,stroke:#333,stroke-width:2px,color:#000

  class VS,KB,Tools ltm
  class Context,Goals,State wm
  class Actions,Results,Patterns em

Суммаризация цепочек (нажмите, чтобы развернуть)

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

flowchart TD
  A[Input Chain] --> B{Needs Summarization?}
  B -->|No| C[Return Original Chain]
  B -->|Yes| D[Convert to ChainAST]
  D --> E[Apply Section Summarization]
  E --> F[Process Oversized Pairs]
  F --> G[Manage Last Section Size]
  G --> H[Apply QA Summarization]
  H --> I[Rebuild Chain with Summaries]
  I --> J{Is New Chain Smaller?}
  J -->|Yes| K[Return Optimized Chain]
  J -->|No| C

  classDef process fill:#bbf,stroke:#333,stroke-width:2px,color:#000
  classDef decision fill:#bfb,stroke:#333,stroke-width:2px,color:#000
  classDef output fill:#fbb,stroke:#333,stroke-width:2px,color:#000

  class A,D,E,F,G,H,I process
  class B,J decision
  class C,K output

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

Параметры глобального суммаризатора

Параметр Переменная окружения По умолчанию Описание
Сохранять последние SUMMARIZER_PRESERVE_LAST true Сохранять ли все сообщения в последнем разделе нетронутыми
Использовать пары QA SUMMARIZER_USE_QA true Использовать ли стратегию суммаризации пар вопрос-ответ
Суммировать человеческие сообщения в QA SUMMARIZER_SUM_MSG_HUMAN_IN_QA false Суммировать ли человеческие сообщения в парах QA
Размер последнего раздела SUMMARIZER_LAST_SEC_BYTES 51200 Максимальный размер последнего раздела в байтах (50 КБ)
Максимальный размер пары тела SUMMARIZER_MAX_BP_BYTES 16384 Максимальный размер одной пары тела в байтах (16 КБ)
Максимальное количество QA-разделов SUMMARIZER_MAX_QA_SECTIONS 10 Максимальное количество сохраняемых разделов пар QA
Максимальный размер QA SUMMARIZER_MAX_QA_BYTES 65536 Максимальный размер разделов пар QA в байтах (64 КБ)
Сохранять QA-разделы SUMMARIZER_KEEP_QA_SECTIONS 1 Количество последних QA-разделов, которые нужно сохранить без суммаризации
### Параметры конфигурации суммаризатора ассистента

Экземпляры ассистента могут использовать настраиваемые параметры суммаризации для точной настройки управления контекстом:

Параметр Переменная окружения По умолчанию Описание
Сохранять последние ASSISTANT_SUMMARIZER_PRESERVE_LAST true Сохранять ли все сообщения в последнем разделе ассистента
Размер последнего раздела ASSISTANT_SUMMARIZER_LAST_SEC_BYTES 76800 Максимальный размер последнего раздела ассистента в байтах (75 КБ)
Максимальный размер пары "тело" ASSISTANT_SUMMARIZER_MAX_BP_BYTES 16384 Максимальный размер одной пары "тело" в контексте ассистента (16 КБ)
Максимальное количество разделов QA ASSISTANT_SUMMARIZER_MAX_QA_SECTIONS 7 Максимальное количество разделов QA для сохранения в контексте ассистента
Максимальный размер QA ASSISTANT_SUMMARIZER_MAX_QA_BYTES 76800 Максимальный размер разделов QA ассистента (75 КБ)
Сохранять разделы QA ASSISTANT_SUMMARIZER_KEEP_QA_SECTIONS 3 Количество последних разделов QA для сохранения без суммаризации

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

Конфигурация окружения суммаризатора

# Default values for global summarizer logic
SUMMARIZER_PRESERVE_LAST=true
SUMMARIZER_USE_QA=true
SUMMARIZER_SUM_MSG_HUMAN_IN_QA=false
SUMMARIZER_LAST_SEC_BYTES=51200
SUMMARIZER_MAX_BP_BYTES=16384
SUMMARIZER_MAX_QA_SECTIONS=10
SUMMARIZER_MAX_QA_BYTES=65536
SUMMARIZER_KEEP_QA_SECTIONS=1

# Default values for assistant summarizer logic
ASSISTANT_SUMMARIZER_PRESERVE_LAST=true
ASSISTANT_SUMMARIZER_LAST_SEC_BYTES=76800
ASSISTANT_SUMMARIZER_MAX_BP_BYTES=16384
ASSISTANT_SUMMARIZER_MAX_QA_SECTIONS=7
ASSISTANT_SUMMARIZER_MAX_QA_BYTES=76800
ASSISTANT_SUMMARIZER_KEEP_QA_SECTIONS=3

Расширенный контроль агентов (нажмите, чтобы развернуть)

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

Мониторинг выполнения (бета)

  • Автоматическое вмешательство наставника: Советник (наставник) автоматически вызывается, когда шаблоны выполнения указывают на потенциальные проблемы.
  • Обнаружение шаблонов: Отслеживает одинаковые вызовы инструментов (порог: 5, настраивается) и общее количество вызовов инструментов (порог: 10, настраивается).
  • Анализ прогресса: Оценивает, продвигается ли агент к цели подзадачи, обнаруживает циклы и неэффективность.
  • Альтернативные стратегии: Рекомендует другие подходы, когда текущая стратегия не работает.
  • Руководство по поиску информации: Предлагает искать существующие решения вместо того, чтобы изобретать заново.
  • Улучшенный формат ответа: Ответы инструментов включают разделы <original_result> и <mentor_analysis>.
  • Настраивается: Включите через EXECUTION_MONITOR_ENABLED (по умолчанию: false), настройте пороги с помощью EXECUTION_MONITOR_SAME_TOOL_LIMIT и EXECUTION_MONITOR_TOTAL_TOOL_LIMIT.

Лучше всего подходит для: Меньших моделей (< 32B параметров), сложных сценариев атак, требующих постоянного руководства, предотвращения застревания агентов на одном подходе.

Влияние на производительность: Увеличение времени выполнения и использования токенов в 2-3 раза, но обеспечивает улучшение качества результатов в 2 раза на основе тестирования с Qwen3.5-27B-FP8.

Интеллектуальное планирование задач (бета)

  • Автоматическое разбиение: Планировщик (советник в режиме планирования) генерирует 3-7 конкретных, выполнимых шагов до начала работы агентов-специалистов.
  • Контекстно-зависимые планы: Анализирует полный контекст выполнения с помощью агента-обогатителя для создания обоснованных планов.
  • Структурированное назначение: Исходный запрос оборачивается в структуру <task_assignment> с планом выполнения и инструкциями.
  • Управление объемом: Предотвращает расширение области действия, удерживая агентов сосредоточенными только на текущей подзадаче.
  • Расширенные инструкции: Планы выделяют критические действия, потенциальные ловушки и точки проверки.
  • Настраивается: Включите через AGENT_PLANNING_STEP_ENABLED (по умолчанию: false).

Лучше всего подходит для: Моделей < 32B параметров, сложных рабочих процессов тестирования на проникновение, повышения успешности выполнения сложных задач.

Расширенная конфигурация советника: Работает исключительно хорошо, когда советник использует более сильную модель или улучшенные настройки. Например, использование той же базовой модели с максимальным режимом рассуждения для советника (см. vllm-qwen3.5-27b-fp8.provider.yml) обеспечивает комплексный анализ задач и стратегическое планирование на основе идентичной архитектуры модели. Влияние на производительность: Добавляет накладные расходы на планирование, но значительно повышает процент успешного завершения и сокращает избыточную работу

Лимиты вызовов инструментов (всегда активны)

  • Жесткие лимиты: предотвращают неконтролируемое выполнение независимо от статуса режима наблюдения
  • Различаются по типу агента:
  • Обычные агенты (Assistant, Primary Agent, Pentester, Coder, Installer): MAX_GENERAL_AGENT_TOOL_CALLS (по умолчанию: 100)
  • Ограниченные агенты (Searcher, Enricher, Memorist, Generator, Reporter, Adviser, Reflector, Planner): MAX_LIMITED_AGENT_TOOL_CALLS (по умолчанию: 20)
  • Корректное завершение: Reflector направляет агентов к правильному завершению при приближении к лимитам
  • Защита ресурсов: обеспечивает стабильность системы и предотвращает истощение ресурсов

Интеграция Reflector (всегда активна)

  • Автоматическая коррекция: вызывается, когда LLM не удается сгенерировать вызовы инструментов после 3 попыток
  • Стратегическое руководство: анализирует сбои и направляет агентов к правильному использованию инструментов или барьерным инструментам (done, ask)
  • Механизм восстановления: предоставляет контекстное руководство на основе конкретных моделей сбоев
  • Принудительное соблюдение лимитов: координирует корректное завершение при достижении лимитов вызовов инструментов

Рекомендации для моделей с открытым исходным кодом

Обязательно для моделей с параметрами < 32B: Тестирование с Qwen3.5-27B-FP8 показывает, что включение как мониторинга выполнения, так и планирования задач необходимо для небольших моделей с открытым исходным кодом: - Улучшение качества: результаты в 2 раза лучше по сравнению с базовым выполнением без наблюдения - Предотвращение циклов: значительно сокращает бесконечные циклы и избыточную работу - Разнообразие атак: поощряет исследование множества векторов атак вместо фиксации на одном подходе - Изолированные развертывания: обеспечивает автономное тестирование на проникновение производственного уровня в закрытых сетевых средах с локальным выводом LLM

Компромиссы: - Потребление токенов: увеличение в 2-3 раза из-за вызовов наставника/планировщика - Время выполнения: в 2-3 раза дольше из-за этапов анализа и планирования - Качество результатов: улучшение в 2 раза по полноте, точности и охвату атак - Требования к модели: работает лучше всего, когда советник использует расширенную конфигурацию (более высокие параметры рассуждения, более сильная версия модели или другая модель)

Стратегия конфигурации: Для оптимальной производительности с небольшими моделями настройте агента-советника с расширенными параметрами: - Используйте ту же модель с максимальным режимом рассуждений (пример: vllm-qwen3.5-27b-fp8.provider.yml) - Или используйте более сильную модель для советника, сохраняя базовую модель для других агентов - Настройте пороги мониторинга в зависимости от сложности задачи и возможностей модели

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

  1. Основные сервисы

    • Пользовательский интерфейс: веб-интерфейс на React с TypeScript для типобезопасности
    • Backend API: REST и GraphQL API на Go с аутентификацией по Bearer-токену для программного доступа
    • Векторное хранилище: PostgreSQL с pgvector для семантического поиска и хранения памяти
    • Очередь задач: система асинхронной обработки задач для надежной работы
    • ИИ-агент: мультиагентная система со специализированными ролями для эффективного тестирования
  2. Опциональный граф знаний

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

    • OpenTelemetry: унифицированный сбор и корреляция данных наблюдения
    • Grafana: панели мониторинга в реальном времени и оповещения
    • VictoriaMetrics: высокопроизводительное хранилище метрик временных рядов
    • Jaeger: сквозная распределенная трассировка для отладки
    • Loki: масштабируемая агрегация и анализ журналов
  4. Аналитическая платформа

    • Langfuse: расширенная наблюдаемость LLM и аналитика производительности
    • ClickHouse: колоночное аналитическое хранилище данных
    • Redis: высокоскоростное кэширование и ограничение скорости
    • MinIO: S3-совместимое объектное хранилище для артефактов
  5. Инструменты безопасности

    • Веб-скрапер: изолированная среда браузера для безопасного взаимодействия с веб-ресурсами
    • Инструменты пентеста: комплексный набор из 20+ профессиональных инструментов безопасности
    • Изолированное выполнение: все операции выполняются в изолированных контейнерах
  6. Системы памяти

    • Долговременная память: постоянное хранение знаний и опыта
    • Рабочая память: активный контекст и цели для текущих операций
    • Эпизодическая память: исторические действия и успешные паттерны
    • База знаний: структурированные экспертные знания в предметной области и возможности инструментов
    • Управление контекстом: интеллектуально управляет растущими окнами контекста LLM с помощью цепочечного суммаризирования

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

Быстрый старт

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

Системные требования

  • Docker и Docker Compose (или Podman — см. конфигурацию Podman)
  • Минимум 2 vCPU
  • Минимум 4 ГБ ОЗУ
  • 20 ГБ свободного дискового пространства
  • Доступ в Интернет для загрузки образов и обновлений

Использование установщика (рекомендуется)

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

Поддерживаемые платформы: - Linux: amd64 скачать | arm64 скачать - Windows: amd64 скачать - macOS: amd64 (Intel) скачать | arm64 (M-серия) скачать

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

Быстрая установка (Linux amd64):

# Create installation directory
mkdir -p pentagi && cd pentagi

# Download installer
wget -O installer.zip https://pentagi.com/downloads/linux/amd64/installer-latest.zip

# Extract
unzip installer.zip

# Run interactive installer
./installer

Предварительные требования и разрешения:

Установщик требует соответствующих привилегий для взаимодействия с Docker API для корректной работы. По умолчанию он использует Docker-сокет (/var/run/docker.sock), что требует одного из следующих вариантов:

  • Вариант 1 (рекомендуется для продакшена): Запустите установщик от имени root: bash sudo ./installer
  • Вариант 2 (среды разработки): Предоставьте вашему пользователю доступ к Docker-сокету, добавив его в группу docker: ```bash # Добавьте вашего пользователя в группу docker sudo usermod -aG docker $USER

    Выйдите и войдите снова, или активируйте группу немедленно

    newgrp docker

    Проверьте доступ к Docker (должно работать без sudo)

    docker ps ```

    ⚠️ Примечание по безопасности: Добавление пользователя в группу docker предоставляет привилегии, эквивалентные root. Делайте это только для доверенных пользователей в контролируемых средах. Для производственных развертываний рассмотрите использование rootless-режима Docker или запуск установщика с sudo.

Установщик выполнит: 1. Проверки системы: Проверка Docker, сетевого подключения и системных требований 2. Настройка окружения: Создание и настройка файла .env с оптимальными значениями по умолчанию 3. Конфигурация провайдеров: Настройка LLM-провайдеров (OpenAI, Anthropic, Gemini, Bedrock, Ollama, DeepSeek, GLM, Kimi, Qwen, MiniMax, Custom) 4. Поисковые системы: Настройка DuckDuckGo, Google, Tavily, Firecrawl, Traversaal, Perplexity, Sploitus, Searxng и опционального внутреннего резервного движка браузерной аналитики 5. Усиление безопасности: Генерация безопасных учетных данных и настройка SSL-сертификатов 6. Развертывание: Запуск PentAGI с помощью docker-compose

Текущий охват веб-настроек

Веб-консоль PentAGI уже управляет несколькими областями настроек после запуска сервера:

  • Настройки -> Провайдеры: Создание, редактирование, удаление и тестирование пользовательских профилей провайдеров для поддерживаемых типов провайдеров. Эти профили управляют выбором модели для каждого агента, параметрами выполнения, опциями рассуждений и метаданными ценообразования.
  • Настройки -> Промпты: Управление шаблонами системных, человеческих и инструментальных промптов.
  • Настройки -> PentAGI API: Создание и управление Bearer-токенами PentAGI для доступа к REST и GraphQL.
  • Другие настройки, управляемые через интерфейс: Избранные потоки сохраняются как пользовательские предпочтения, а выбор темы осуществляется через основную боковую панель/профиль, а не через страницы настроек.

Всё ещё управляется на сервере

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

  • Учётные данные и параметры подключения LLM: API-ключи, конечные точки, режимы аутентификации и настройки подключения для конкретных провайдеров (OpenAI, Anthropic, Bedrock, Ollama, кастомные провайдеры и аналогичные бэкенды); настройки путей к конфигурации применяются только там, где это поддерживается, например OLLAMA_SERVER_CONFIG_PATH и LLM_SERVER_CONFIG_PATH.
  • Учётные данные и параметры поискового провайдера: Настройки, такие как DUCKDUCKGO_*, GOOGLE_*, TAVILY_API_KEY, FIRECRAWL_API_*, TRAVERSAAL_API_KEY, PERPLEXITY_*, SEARXNG_*, SPLOITUS_ENABLED, а также опциональные резервные настройки браузерной аналитики WEB_SEARCH_INTERNAL_*.
  • Сторонние интеграции: Langfuse, Graphiti и аналогичные внешние сервисы остаются серверной конфигурацией.
  • Управление MCP-сервером: Страницы настроек MCP в настоящее время не представлены как функция живого веб-консоли.

Для продакшена и повышенной безопасности:

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

См. подробное руководство: Настройка узла-воркера

Двухузловая схема обеспечивает: - Изолированное выполнение: Контейнеры воркеров работают на выделенном оборудовании. - Сетевая изоляция: Отдельные сетевые границы для тестирования на проникновение. - Границы безопасности: Docker-in-Docker с TLS-аутентификацией. - Поддержка OOB-атак: Выделенные диапазоны портов для внеполосных техник.

Предоставление агентам Docker без передачи хоста

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

Рекомендуется — направьте песочницы на защищённый демон dind через TLS. Установите DOCKER_INSIDE=true, оставьте DOCKER_SOCKET пустым и настройте демон, с которым песочница может взаимодействовать:

DOCKER_INSIDE=true
DOCKER_SOCKET=                                          # mount no socket
DOCKER_INSIDE_HOST=tcp://10.0.0.5:3376                  # hardened dind endpoint
DOCKER_INSIDE_TLS_VERIFY=1
DOCKER_INSIDE_CERT_PATH=/etc/docker/dind/certs/client   # path on the worker node

PentAGI внедряет эти параметры в каждый контейнер воркера как DOCKER_HOST, DOCKER_TLS_VERIFY и DOCKER_CERT_PATH (сегмент _INSIDE_ отбрасывается) и монтирует каталог сертификатов в режиме только для чтения по тому же пути, так что docker работает внутри песочницы без дополнительной настройки.

Не рекомендуется — монтирование Docker-сокета (DOCKER_SOCKET). Это имеет два режима отказа:

  • Гонка при загрузке: источник bind-mount, который ещё не существует, создаётся Docker как каталог. После перезагрузки узла-воркера контейнер воркера может запуститься до того, как dind пересоздаст свой сокет — тогда Docker помещает каталог туда, где должен быть сокет, и dind не может запуститься, пока его не удалят вручную.
  • Радиус поражения: гонки можно надёжно избежать только тогда, когда смонтированный сокет принадлежит демону хоста, поскольку он всегда существует первым. Но это предоставляет автономному агенту API Docker хоста: он может запустить привилегированный контейнер, смонтировать / и скомпрометировать весь узел, включая PentAGI.

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

См.: Настройка узла-воркера для полной конфигурации усиления dind и TLS, а также Доступ воркера к Docker для точного алгоритма разрешения.

Запуск нескольких экземпляров (TENANT_ID)

Одной установке PentAGI ничего из этого не нужно — оставьте TENANT_ID пустым (по умолчанию), и ничего не изменится.

Задайте его, когда несколько установок PentAGI используют общие внешние ресурсы: один сервер PostgreSQL, один узел-воркер, один Neo4j/Graphiti, один Langfuse. Типичный случай — управляющий бэкенд на каждом сервере с общим узлом-воркером и базой данных. Поскольку каждый экземпляр нумерует свои потоки с 1, в противном случае они будут конфликтовать по именам контейнеров, строкам базы данных, пространствам имён графа знаний и куки-файлам сессий. TENANT_ID разделяет пространства имён для всего этого:

Область Эффект при TENANT_ID=acme
PostgreSQL Экземпляр создаёт и работает внутри схемы acme вместо public; расширения остаются общими в DATABASE_EXTENSIONS_SCHEMA (по умолчанию public, extensions на Supabase)
Контейнеры воркеров acme-pentagi-terminal-<flow> вместо pentagi-terminal-<flow>; тома и имена хостов следуют тому же правилу, и оба несут метку pentagi.tenant
Граф знаний Идентификаторы групп Graphiti/Neo4j становятся acme-flow-<id>
Аутентификация Ключи cookie и API-токенов формируются из COOKIE_SIGNING_SALT плюс тенанта, а имя cookie сессии изменяется
Телеметрия Трассы Langfuse несут тенант как своё environment и тег tenant:acme; ресурсы OTel получают tenant_id
Значение должно соответствовать ^[a-z][a-z0-9_]{0,31}$ — недопустимое значение прерывает запуск, а не молча нормализуется.

Некоторые параметры остаются на ваше усмотрение для каждого экземпляра, поскольку они относятся к ресурсам хоста, а не к именам: DATA_DIR (два экземпляра, использующие его, будут перезаписывать данные потоков друг друга), DOCKER_PORTS_BASE, публикуемые порты и INSTALLATION_ID. Фактические значения выводятся при запуске в разделе Instance identity.

Установщик создаёт один экземпляр на сервер. Запуск нескольких на одном сервере возможен — например, за общим nginx — но стандартный docker-compose.yml использует фиксированные имена контейнеров и сетей, поэтому его необходимо адаптировать под вашу собственную сетевую конфигурацию.

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

Ручная установка

  1. Создайте рабочую директорию или клонируйте репозиторий:
mkdir pentagi && cd pentagi
  1. Скопируйте .env.example в .env или скачайте его:
curl -o .env https://raw.githubusercontent.com/vxcontrol/pentagi/master/.env.example
  1. Создайте примеры файлов (example.custom.provider.yml, example.ollama.provider.yml) или скачайте их:
curl -o example.custom.provider.yml https://raw.githubusercontent.com/vxcontrol/pentagi/master/examples/configs/custom-openai.provider.yml
curl -o example.ollama.provider.yml https://raw.githubusercontent.com/vxcontrol/pentagi/master/examples/configs/ollama-llama318b.provider.yml
  1. Заполните необходимые ключи API в файле .env.
# Required: At least one of these LLM providers
OPEN_AI_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key
GEMINI_API_KEY=your_gemini_key

# Optional: AWS Bedrock provider (enterprise-grade models)
BEDROCK_REGION=us-east-1
# Choose one authentication method:
BEDROCK_DEFAULT_AUTH=true                        # Option 1: Use AWS SDK default credential chain (recommended for EC2/ECS)
# BEDROCK_BEARER_TOKEN=your_bearer_token         # Option 2: Bearer token authentication
# BEDROCK_ACCESS_KEY_ID=your_aws_access_key      # Option 3: Static credentials
# BEDROCK_SECRET_ACCESS_KEY=your_aws_secret_key

# Optional: Ollama provider (local or cloud)
# OLLAMA_SERVER_URL=http://ollama-server:11434   # Local server
# OLLAMA_SERVER_URL=https://ollama.com           # Cloud service
# OLLAMA_SERVER_API_KEY=your_ollama_cloud_key    # Required for cloud, empty for local

# Optional: Chinese AI providers
# DEEPSEEK_API_KEY=your_deepseek_key             # DeepSeek (strong reasoning)
# GLM_API_KEY=your_glm_key                       # GLM (Zhipu AI)
# KIMI_API_KEY=your_kimi_key                     # Kimi (Moonshot AI, ultra-long context)
# QWEN_API_KEY=your_qwen_key                     # Qwen (Alibaba Cloud, multimodal)
# MINIMAX_API_KEY=your_minimax_key               # MiniMax

# Optional: Local LLM provider (zero-cost inference)
OLLAMA_SERVER_URL=http://localhost:11434
OLLAMA_SERVER_MODEL=your_model_name

# Optional: Additional search capabilities
DUCKDUCKGO_ENABLED=true
DUCKDUCKGO_REGION=us-en
DUCKDUCKGO_SAFESEARCH=
DUCKDUCKGO_TIME_RANGE=
SPLOITUS_ENABLED=true
GOOGLE_API_KEY=your_google_key
GOOGLE_CX_KEY=your_google_cx
TAVILY_API_KEY=your_tavily_key
FIRECRAWL_API_KEY=your_firecrawl_key
FIRECRAWL_API_URL=
TRAVERSAAL_API_KEY=your_traversaal_key
PERPLEXITY_API_KEY=your_perplexity_key
PERPLEXITY_MODEL=sonar-pro
PERPLEXITY_CONTEXT_SIZE=medium

# Searxng meta search engine (aggregates results from multiple sources)
SEARXNG_URL=http://your-searxng-instance:8080
SEARXNG_CATEGORIES=general
SEARXNG_LANGUAGE=
SEARXNG_SAFESEARCH=0
SEARXNG_TIME_RANGE=
SEARXNG_TIMEOUT=

# Optional: internal browser-analytics fallback engine for web_search (off by default;
# scrapes and summarizes pages instead of calling a paid analytic API)
WEB_SEARCH_INTERNAL_ENABLED=false
WEB_SEARCH_INTERNAL_MAX_SITES=5
WEB_SEARCH_INTERNAL_MAX_SITE_BYTES=10240

## Graphiti knowledge graph settings
GRAPHITI_ENABLED=false
GRAPHITI_TIMEOUT=30
GRAPHITI_URL=

# Neo4j settings (used by Graphiti stack)
NEO4J_USER=neo4j
NEO4J_DATABASE=neo4j
NEO4J_PASSWORD=devpassword
NEO4J_URI=bolt://neo4j:7687

# Assistant configuration
ASSISTANT_USE_AGENTS=false         # Default value for agent usage when creating new assistants
  1. Измените все переменные окружения, связанные с безопасностью, в файле .env для повышения безопасности.

Переменные окружения, связанные с безопасностью

Основные настройки безопасности

  • COOKIE_SIGNING_SALT — соль для подписи cookie, измените на случайное значение
  • PUBLIC_URL — публичный URL вашего сервера (например, https://pentagi.example.com)
  • SERVER_SSL_CRT и SERVER_SSL_KEY — пользовательские пути к вашему существующему SSL-сертификату и ключу для HTTPS (эти пути должны использоваться в файле docker-compose.yml для монтирования как томов)
  • TENANT_ID — оставьте пустым, если этот экземпляр не использует общие внешние ресурсы с другой установкой PentAGI. При задании он смешивается с ключами подписи cookie и токена API и переименовывает сессионную cookie, поэтому сессия, созданная одним экземпляром, отклоняется другими, даже если они используют одинаковый COOKIE_SIGNING_SALT. См. Запуск нескольких экземпляров

Доступ к скрейперу

  • SCRAPER_PUBLIC_URL — публичный URL для скрейпера, если вы хотите использовать другой сервер скрейпера для публичных URL
  • SCRAPER_PRIVATE_URL — приватный URL для скрейпера (локальный сервер скрейпера в файле docker-compose.yml для доступа к локальным URL)

Учётные данные доступа

  • PENTAGI_POSTGRES_USER и PENTAGI_POSTGRES_PASSWORD — учётные данные PostgreSQL
  • NEO4J_USER и NEO4J_PASSWORD — учётные данные Neo4j (для графа знаний Graphiti)
  1. Удалите все встроенные комментарии из файла .env, если вы хотите использовать его в VSCode или других IDE в качестве параметра envFile:
perl -i -pe 's/\s+#.*$//' .env
  1. Запустите стек PentAGI:
curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/master/docker-compose.yml
docker compose up -d

Посетите localhost:8443 для доступа к веб-интерфейсу PentAGI (по умолчанию admin@pentagi.com / admin)

Учётные записи веб-интерфейса

PentAGI не предоставляет публичную самостоятельную регистрацию со страницы входа. Новая установка создаёт учётную запись локального администратора по умолчанию:

  • Электронная почта: admin@pentagi.com
  • Пароль: admin

При первом входе измените пароль по умолчанию перед использованием экземпляра для реальной работы. Если пароль администратора позже будет утерян, используйте меню обслуживания установщика для сброса пароля учётной записи admin@pentagi.com по умолчанию.

Для многопользовательских конфигураций аутентифицированный администратор может управлять локальными пользователями через REST API Users (/api/v1/users/). Интерфейс OpenAPI доступен по адресу https://localhost:8443/api/v1/swagger/index.html после запуска экземпляра.

[!NOTE] Если вы получили ошибку о pentagi-network или observability-network или langfuse-network, вам нужно сначала запустить docker-compose.yml для создания этих сетей, а затем запустить docker-compose-langfuse.yml, docker-compose-graphiti.yml и docker-compose-observability.yml, чтобы использовать сервисы Langfuse, Graphiti и Observability.

Вы должны настроить хотя бы одного поставщика языковых моделей (OpenAI, Anthropic, Gemini, AWS Bedrock или Ollama), чтобы использовать PentAGI. AWS Bedrock обеспечивает корпоративный доступ к нескольким базовым моделям от ведущих ИИ-компаний, а Ollama обеспечивает бесплатный локальный вывод, если у вас достаточно вычислительных ресурсов. Дополнительные ключи API для поисковых систем необязательны, но рекомендуются для лучших результатов. Для полностью локального развертывания с продвинутыми моделями: Смотрите наше подробное руководство по Запуску PentAGI с vLLM и Qwen3.5-27B-FP8 для производственной локальной настройки LLM. Эта конфигурация достигает ~13 000 TPS для обработки запросов и ~650 TPS для генерации на 4× RTX 5090 GPU, поддерживая 12+ одновременных потоков с полной независимостью от облачных провайдеров.

Переменные окружения LLM_SERVER_* являются экспериментальной функцией и будут изменены в будущем. Сейчас вы можете использовать их для указания пользовательского URL-адреса LLM-сервера и одной модели для всех типов агентов.

PROXY_URL — это глобальный прокси-URL для всех LLM-провайдеров и внешних поисковых систем. Вы можете использовать его для изоляции от внешних сетей.

Файл docker-compose.yml запускает службу PentAGI от имени пользователя root, поскольку ей требуется доступ к docker.sock для управления контейнерами. Если вы используете TCP/IP-соединение с Docker вместо файла сокета, вы можете удалить привилегии root и использовать пользователя pentagi по умолчанию для повышения безопасности.

Доступ к PentAGI из внешних сетей

По умолчанию PentAGI привязывается к 127.0.0.1 (только localhost) в целях безопасности. Чтобы получить доступ к PentAGI с других машин в вашей сети, необходимо настроить внешний доступ.

Шаги настройки

  1. Обновите файл .env, указав IP-адрес вашего сервера:
# Network binding - allow external connections
PENTAGI_LISTEN_IP=0.0.0.0
PENTAGI_LISTEN_PORT=8443

# Public URL - use your actual server IP or hostname
# Replace 192.168.1.100 with your server's IP address
PUBLIC_URL=https://192.168.1.100:8443

# CORS origins - list all URLs that will access PentAGI
# Include localhost for local access AND your server IP for external access
CORS_ORIGINS=https://localhost:8443,https://192.168.1.100:8443

[!ВАЖНО] - Замените 192.168.1.100 на фактический IP-адрес вашего сервера - Не используйте 0.0.0.0 в PUBLIC_URL или CORS_ORIGINS — используйте фактический IP-адрес - Включите и localhost, и IP-адрес сервера в CORS_ORIGINS для гибкости

  1. Пересоздайте контейнеры, чтобы применить изменения:
docker compose down
docker compose up -d --force-recreate
  1. Проверьте привязку порта:
docker ps | grep pentagi

Вы должны увидеть 0.0.0.0:8443->8443/tcp или :::8443->8443/tcp.

Если вы видите 127.0.0.1:8443->8443/tcp, переменная окружения не была подхвачена. В этом случае напрямую отредактируйте строку 31 в docker-compose.yml:

ports:
  - "0.0.0.0:8443:8443"

Затем снова пересоздайте контейнеры.

  1. Настройте брандмауэр, чтобы разрешить входящие соединения на порту 8443:
# Ubuntu/Debian with UFW
sudo ufw allow 8443/tcp
sudo ufw reload

# CentOS/RHEL with firewalld
sudo firewall-cmd --permanent --add-port=8443/tcp
sudo firewall-cmd --reload
  1. Доступ к PentAGI:
  • Локальный доступ: https://localhost:8443
  • Сетевой доступ: https://your-server-ip:8443

[!ПРИМЕЧАНИЕ] При доступе по IP-адресу вам потребуется принять предупреждение браузера о самозаверяющем SSL-сертификате.


Запуск PentAGI с Podman

PentAGI полностью поддерживает Podman в качестве альтернативы Docker. Однако при использовании Podman в rootless-режиме служба скрапера требует специальной настройки, поскольку rootless-контейнеры не могут привязываться к привилегированным портам (портам ниже 1024).

Настройка Podman в rootless-режиме

Конфигурация скрапера по умолчанию использует порт 443 (HTTPS), который является привилегированным портом. Для Podman в rootless-режиме перенастройте скрапер на непривилегированный порт:

1. Отредактируйте docker-compose.yml — измените службу scraper (около строки 199):

scraper:
  image: vxcontrol/scraper:latest
  restart: unless-stopped
  container_name: scraper
  hostname: scraper
  expose:
    - 3000/tcp  # Changed from 443 to 3000
  ports:
    - "${SCRAPER_LISTEN_IP:-127.0.0.1}:${SCRAPER_LISTEN_PORT:-9443}:3000"  # Map to port 3000
  environment:
    - MAX_CONCURRENT_SESSIONS=${LOCAL_SCRAPER_MAX_CONCURRENT_SESSIONS:-10}
    - USERNAME=${LOCAL_SCRAPER_USERNAME:-someuser}
    - PASSWORD=${LOCAL_SCRAPER_PASSWORD:-somepass}
  logging:
    options:
      max-size: 50m
      max-file: "7"
  volumes:
    - scraper-ssl:/usr/src/app/ssl
  networks:
    - pentagi-network
  shm_size: 2g

2. Обновите файл .env — измените URL-адрес скрапера, чтобы использовать HTTP и порт 3000:

# Scraper configuration for Podman rootless
SCRAPER_PRIVATE_URL=http://someuser:somepass@scraper:3000/
LOCAL_SCRAPER_USERNAME=someuser
LOCAL_SCRAPER_PASSWORD=somepass

[!ВАЖНО] Ключевые изменения для Podman: - Используйте HTTP вместо HTTPS для SCRAPER_PRIVATE_URL - Используйте порт 3000 вместо 443 - Измените внутренний expose на 3000/tcp - Обновите сопоставление портов, чтобы указать 3000 вместо 443

3. Пересоздайте контейнеры:

podman-compose down
podman-compose up -d --force-recreate

4. Проверьте связь со скрапером:

# Test from within the pentagi container
podman exec -it pentagi wget -O- "http://someuser:somepass@scraper:3000/html?url=http://example.com"

Если вы видите HTML-вывод, скрапер работает правильно.

Podman в rootful-режиме

Если вы используете Podman в rootful-режиме (с sudo), вы можете использовать конфигурацию по умолчанию без изменений. Скрапер будет работать на порту 443 как задумано.

Совместимость с Docker

Все конфигурации Podman полностью совместимы с Docker. Подход с непривилегированным портом работает одинаково в обоих контейнерных средах.

Конфигурация ассистента

PentAGI позволяет настроить поведение ассистентов по умолчанию:

Переменная По умолчанию Описание
ASSISTANT_USE_AGENTS false Управляет значением по умолчанию для использования агентов при создании новых ассистентов

Настройка ASSISTANT_USE_AGENTS влияет на начальное состояние переключателя «Использовать агентов» при создании нового ассистента в пользовательском интерфейсе: - false (по умолчанию): Новые ассистенты создаются с отключенным делегированием агентов по умолчанию. - true: новые ассистенты создаются с делегированием агентов, включенным по умолчанию

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

Как использовать PentAGI после входа в систему

Когда стек запущен и вы можете войти в веб-интерфейс, самый быстрый способ начать работу — через рабочий процесс Flows.

1. Создайте свой первый поток

  1. Откройте Потоки на боковой панели.
  2. Нажмите Новый поток.
  3. Выберите режим, который соответствует вашей цели:
    • Автоматизация: полностью автономное выполнение для цели тестирования, которую вы хотите, чтобы PentAGI выполнил от начала до конца
    • Ассистент: интерактивная помощь в режиме диалога, когда вы хотите управлять исследованием шаг за шагом. В этом режиме вы также можете включить переключатель Использовать агентов, чтобы PentAGI делегировал подзадачи специализированным субагентам для более сложных исследований.
  4. Выберите провайдера LLM, которого вы хотите использовать для этого потока.
  5. Опишите цель и задачу на естественном языке в поле сообщения.

Хорошие первые подсказки обычно включают:

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

Пример:

Assess https://target.example for common web application vulnerabilities. Focus on authentication, file handling, and injection issues. Stay within the provided target only and summarize confirmed findings with reproduction steps.

Тестируйте только те системы, которыми вы владеете или на оценку которых у вас есть явное разрешение. См. EULA.md для требований к допустимому использованию.

️2. Используйте шаблоны для повторяющихся рабочих процессов

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

  • Используйте существующий шаблон, если он уже сохранен в Шаблонах
  • Начните с примера подсказки в examples/prompts/base_web_pentest.md, если вам нужна практическая базовая линия для веб-тестирования
  • Настройте цель, область и ограничения перед запуском потока

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

3. Отслеживайте выполнение и просматривайте результаты

После отправки потока PentAGI автоматически открывает страницу потока.

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

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

  • открыть отчет в веб-представлении
  • скопировать сгенерированный отчет в буфер обмена
  • скачать отчет в формате Markdown
  • скачать отчет в формате PDF

4. Используйте представление ассистента для управления активным потоком

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

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

5. Управление файлами, привязанными к потоку

Каждый поток имеет собственную вкладку Файлы на странице потока. Файлы привязаны к родительскому потоку: они хранятся в {dataDir}/flow-{id}-data/ на хосте и никогда не попадают в другие потоки.

Вкладка предоставляет три источника файлов:

  • Загрузки (uploads/): файлы, которые вы предоставляете через веб-интерфейс. Используйте действие Загрузить файлы или перетащите их прямо на вкладку «Файлы». Пока контейнер агента работает, загруженные файлы также помещаются в него по пути /work/uploads/, чтобы агент мог читать их обычными инструментами оболочки.
  • Ресурсы (resources/): файлы, прикрепленные из вашей сохраненной библиотеки пользовательских ресурсов через Прикрепить ресурсы из библиотеки. Прикрепленные ресурсы копируются в поток и помещаются в работающий контейнер по пути /work/resources/.
  • Контейнер (container/): снимки, полученные из запущенного контейнера агента через Извлечь файл или каталог из контейнера. Они доступны только для чтения на стороне потока и никогда не отправляются обратно в контейнер.

Действия для отдельных файлов на вкладке «Файлы» включают Скачать, Копировать путь, Сохранить как ресурс (переместить файл потока в вашу библиотеку переиспользуемых ресурсов) и Удалить. Действие «Извлечь» отключено, когда контейнер не запущен, с подсказкой «Контейнер не запущен».

Загруженные файлы и прикрепленные ресурсы автоматически перечисляются в системных подсказках агента через переменную шаблона {{.UserFiles}}, которая отображает компактный XML-блок <task_files> (с вложенными разделами <uploads> и <resources>), поэтому ассистент и агенты автоматизации могут ссылаться на них по пути без необходимости вставлять содержимое в чат. Снимки контейнера видны только в интерфейсе и не автоматически внедряются обратно в подсказку.

Текущие ограничения и лимиты, о которых следует знать:

  • Максимальный размер загружаемого файла — 300 МБ; на один запрос загрузки до 1000 файлов и 2 ГБ суммарно. Имена файлов ограничены 255 байтами (примерно 255 символов ASCII; не-ASCII имена используют несколько байт на символ).
  • Загрузки и ресурсы зеркалируются в запущенный контейнер по фиксированным путям /work/uploads/ и /work/resources/; файлы, записанные в другие пути контейнера, не автоматически зеркалируются обратно в файловую модель потока. Снимки контейнера могут быть получены из любого пути контейнера, который вы извлекаете (например, /etc/...), и кэшируются на стороне потока в container/; они не отправляются обратно в контейнер.
  • Снимки контейнера — это извлечения на момент времени. Редактирование снимка в интерфейсе не записывается обратно в запущенный контейнер.
  • Удаление потока в настоящее время удаляет запись потока и его записи долговременной памяти, но не архивирует и не удаляет каталог flow-{id}-data/ на диске. Операторы по-прежнему должны вручную очищать каталог данных, если хотят освободить место.

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

Доступ к API

PentAGI предоставляет всесторонний программный доступ через REST и GraphQL API, позволяя интегрировать рабочие процессы тестирования на проникновение в ваши конвейеры автоматизации, процессы CI/CD и пользовательские приложения.

Создание API-токенов

API-токены управляются через веб-интерфейс PentAGI:

  1. Перейдите в Настройки → API-токены в веб-интерфейсе
  2. Нажмите Создать токен, чтобы сгенерировать новый API-токен
  3. Настройте свойства токена:
    • Имя (необязательно): описательное имя для токена
    • Дата истечения: когда токен истечет (минимум 1 минута, максимум 3 года)
  4. Нажмите Создать и немедленно скопируйте токен — он будет показан только один раз по соображениям безопасности
  5. Используйте токен как Bearer-токен в ваших API-запросах

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

Использование API-токенов

Включите API-токен в заголовок Authorization ваших HTTP-запросов:

# GraphQL API example
curl -X POST https://your-pentagi-instance:8443/api/v1/graphql \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query": "{ flows { id title status } }"}'

# REST API example
curl https://your-pentagi-instance:8443/api/v1/flows \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Исследование и тестирование API

PentAGI предоставляет интерактивную документацию для изучения и тестирования конечных точек API:

Игровая площадка GraphQL

Доступ к игровой площадке GraphQL по адресу https://your-pentagi-instance:8443/api/v1/graphql/playground

  1. Нажмите вкладку HTTP-заголовки внизу
  2. Добавьте ваш заголовок авторизации: json { "Authorization": "Bearer YOUR_API_TOKEN" }
  3. Изучайте схему, выполняйте запросы и тестируйте мутации интерактивно

Пользовательский интерфейс Swagger

Доступ к документации REST API по адресу https://your-pentagi-instance:8443/api/v1/swagger/index.html

  1. Нажмите кнопку Авторизовать
  2. Введите ваш токен в формате: Bearer YOUR_API_TOKEN
  3. Нажмите Авторизовать для применения
  4. Тестируйте конечные точки непосредственно из интерфейса Swagger

Генерация API-клиентов

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

GraphQL-клиенты

Схема GraphQL доступна по адресу: - Веб-интерфейс: перейдите в Настройки, чтобы скачать schema.graphqls - Прямой файл: backend/pkg/graph/schema.graphqls в репозитории

Генерируйте клиенты с помощью таких инструментов, как: - GraphQL Code Generator (JavaScript/TypeScript): https://the-guild.dev/graphql/codegen - genqlient (Go): https://github.com/Khan/genqlient - Apollo iOS (Swift): https://www.apollographql.com/docs/ios

Клиенты REST API

Спецификация OpenAPI доступна по адресу: - Swagger JSON: https://your-pentagi-instance:8443/api/v1/swagger/doc.json - Swagger YAML: доступна в backend/pkg/server/docs/swagger.yaml

Сгенерируйте клиенты, используя: - OpenAPI Generator: https://openapi-generator.tech bash openapi-generator-cli generate \ -i https://your-pentagi-instance:8443/api/v1/swagger/doc.json \ -g python \ -o ./pentagi-client

Примеры использования API

Создание нового потока (GraphQL)

mutation CreateFlow {
createFlow(
  modelProvider: "openai"
  input: "Test the security of https://example.com"
) {
  id
  title
  status
  createdAt
}
}

Список потоков (REST API)

curl https://your-pentagi-instance:8443/api/v1/flows \
-H "Authorization: Bearer YOUR_API_TOKEN" \

| jq '.flows[] | {id, title, status}'

Пример клиента на Python

import requests

class PentAGIClient:
  def __init__(self, base_url, api_token):
      self.base_url = base_url
      self.headers = {
          "Authorization": f"Bearer {api_token}",
          "Content-Type": "application/json"
      }

  def create_flow(self, provider, target):
      query = """
      mutation CreateFlow($provider: String!, $input: String!) {
        createFlow(modelProvider: $provider, input: $input) {
          id
          title
          status
        }
      }
      """
      response = requests.post(
          f"{self.base_url}/api/v1/graphql",
          json={
              "query": query,
              "variables": {
                  "provider": provider,
                  "input": target
              }
          },
          headers=self.headers
      )
      return response.json()

  def get_flows(self):
      response = requests.get(
          f"{self.base_url}/api/v1/flows",
          headers=self.headers
      )
      return response.json()

# Usage
client = PentAGIClient(
  "https://your-pentagi-instance:8443",
  "your_api_token_here"
)

# Create a new flow
flow = client.create_flow("openai", "Scan https://example.com for vulnerabilities")
print(f"Created flow: {flow}")

# List all flows
flows = client.get_flows()
print(f"Total flows: {len(flows['flows'])}")

Пример клиента на TypeScript

import axios, { AxiosInstance } from 'axios';

interface Flow {
id: string;
title: string;
status: string;
createdAt: string;
}

class PentAGIClient {
private client: AxiosInstance;

constructor(baseURL: string, apiToken: string) {
  this.client = axios.create({
    baseURL: `${baseURL}/api/v1`,
    headers: {
      'Authorization': `Bearer ${apiToken}`,
      'Content-Type': 'application/json',
    },
  });
}

async createFlow(provider: string, input: string): Promise<Flow> {
  const query = `
    mutation CreateFlow($provider: String!, $input: String!) {
      createFlow(modelProvider: $provider, input: $input) {
        id
        title
        status
        createdAt
      }
    }
  `;

  const response = await this.client.post('/graphql', {
    query,
    variables: { provider, input },
  });

  return response.data.data.createFlow;
}

async getFlows(): Promise<Flow[]> {
  const response = await this.client.get('/flows');
  return response.data.flows;
}

async getFlow(flowId: string): Promise<Flow> {
  const response = await this.client.get(`/flows/${flowId}`);
  return response.data;
}
}

// Usage
const client = new PentAGIClient(
'https://your-pentagi-instance:8443',
'your_api_token_here'
);

// Create a new flow
const flow = await client.createFlow(
'openai',
'Perform penetration test on https://example.com'
);
console.log('Created flow:', flow);

// List all flows
const flows = await client.getFlows();
console.log(`Total flows: ${flows.length}`);

Лучшие практики безопасности

При работе с API-токенами:

  • Никогда не коммитьте токены в систему контроля версий — используйте переменные окружения или менеджеры секретов
  • Регулярно ротируйте токены — устанавливайте соответствующие сроки действия и периодически создавайте новые токены
  • Используйте отдельные токены для разных приложений — это упрощает отзыв доступа при необходимости
  • Отслеживайте использование токенов — проверяйте активность API-токенов на странице настроек
  • Отзывайте неиспользуемые токены — отключайте или удаляйте токены, которые больше не нужны
  • Используйте только HTTPS — никогда не отправляйте API-токены по незашифрованным соединениям

Управление токенами

  • Просмотр токенов: просмотрите все свои активные токены в разделе Настройки → API-токены
  • Редактирование токенов: обновите имена токенов или отзовите токены
  • Удаление токенов: безвозвратно удалите токены (это действие нельзя отменить)
  • ID токена: каждый токен имеет уникальный ID, который можно скопировать для справки

Список токенов показывает: - Имя токена (если указано) - ID токена (уникальный идентификатор) - Статус (активен/отозван/истёк) - Дата создания - Дата истечения срока действия

Настройка пользовательского LLM-провайдера

При использовании пользовательских LLM-провайдеров с переменными LLM_SERVER_* вы можете точно настроить формат рассуждений, используемый в запросах.

[!TIP] Для локальных развертываний производственного уровня рассмотрите использование vLLM с Qwen3.5-27B-FP8 для оптимальной производительности. См. наше полное руководство по развертыванию, которое включает требования к оборудованию, шаблоны конфигурации (режим мышления и режим без мышления) и контрольные показатели производительности, показывающие обработку 13K TPS на 4× RTX 5090 GPU.

Переменная По умолчанию Описание
LLM_SERVER_URL Базовый URL для конечной точки пользовательского LLM API
LLM_SERVER_KEY API-ключ для пользовательского LLM-провайдера
LLM_SERVER_MODEL Модель по умолчанию (может быть переопределена в конфигурации провайдера)
LLM_SERVER_CONFIG_PATH Путь к YAML-файлу конфигурации для моделей, специфичных для агентов
LLM_SERVER_PROVIDER Префикс имени провайдера для имен моделей (например, openrouter, deepseek для прокси LiteLLM)
LLM_SERVER_LEGACY_REASONING false Управляет форматом рассуждений в API-запросах
LLM_SERVER_PRESERVE_REASONING false Сохранять содержимое рассуждений в многоходовых диалогах (требуется некоторыми провайдерами)
Настройка LLM_SERVER_PROVIDER особенно полезна при использовании прокси LiteLLM, который добавляет префикс провайдера к именам моделей. Например, при подключении к API Moonshot через LiteLLM модели типа kimi-2.5 становятся moonshot/kimi-2.5. Установив LLM_SERVER_PROVIDER=moonshot, вы можете использовать один и тот же файл конфигурации провайдера как для прямого доступа к API, так и для доступа через прокси LiteLLM без изменений.

Настройка LLM_SERVER_LEGACY_REASONING влияет на то, как параметры рассуждений отправляются в LLM: - false (по умолчанию): используется современный формат, где рассуждения отправляются как структурированный объект с параметром max_tokens - true: используется устаревший формат с строковым параметром reasoning_effort

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

Настройка LLM_SERVER_PRESERVE_REASONING управляет сохранением содержимого рассуждений в многоходовых диалогах: - false (по умолчанию): содержимое рассуждений не сохраняется в истории разговора - true: содержимое рассуждений сохраняется и отправляется в последующих API-вызовах

Эта настройка требуется некоторым провайдерам LLM (например, Moonshot), которые возвращают ошибки типа "thinking is enabled but reasoning_content is missing in assistant tool call message", когда содержимое рассуждений не включено в многоходовые диалоги. Включите эту настройку, если ваш провайдер требует сохранения содержимого рассуждений.

Устранение неполадок: ошибки парсера вызовов инструментов (функций)

PentAGI управляет своими агентами с помощью вызовов инструментов (также называемых вызовами функций), поэтому любой пользовательский бэкенд, совместимый с OpenAI, настроенный через LLM_SERVER_*, должен возвращать корректный JSON вызова инструмента в формате, определенном API OpenAI Chat Completions. Когда бэкенд выдает поврежденные, усеченные или несоответствующие аргументы вызова инструмента, цепочка агентов не может продолжаться.

Самостоятельно размещенные движки, такие как llama.cpp, SGLang и vLLM, обычно требуют специального парсера вызовов инструментов и соответствующего чат-шаблона для генерации корректного вывода вызовов инструментов. Если парсер отсутствует или не соответствует обслуживаемой модели, аргументы вызовов инструментов могут возвращаться поврежденными. Таким образом, совместимость зависит от поведения и конфигурации вызовов инструментов/функций бэкенда, а не только от PentAGI; не каждая конфигурация llama.cpp или SGLang из коробки генерирует корректные вызовы инструментов.

Типичные симптомы:

  • Ошибки бэкенда или прокси, такие как Failed to parse tool call arguments as JSON (часто проявляются через прокси LiteLLM как HTTP 500), или другие неожиданные ответы 5xx/4xx от конечной точки LLM.
  • Поток, который выполняется несколько шагов, а затем перестает отвечать на новые вводы в интерфейсе.
  • Повторяющиеся или зацикленные вызовы инструментов, которые никогда не сходятся.
  • Поток, который завершается с ошибкой в самом начале с сообщением failed to select primary docker image via llm call, потому что первое действие в потоке — это LLM-вызов инструмента для выбора образа контейнера; бэкенд, который не может вернуть корректный вызов инструмента, также завершится с ошибкой на этом шаге.

Как исследовать:

  1. Проверьте обе стороны соединения: журналы PentAGI (docker compose logs -f pentagi) и журналы бэкенда вывода или прокси (llama.cpp, SGLang, vLLM или LiteLLM). Журнал бэкенда обычно показывает ту же ошибку парсинга, когда он генерирует поврежденный вызов инструмента.
  2. Проверьте провайдера перед запуском полного потока с помощью утилиты ctester, которая напрямую тестирует типы агентов, использующих вызовы инструментов. См. Тестирование LLM-агентов.
  3. Убедитесь, что парсер вызовов инструментов и чат-шаблон бэкенда соответствуют рекомендуемым для обслуживаемой модели, и что сама модель поддерживает вызовы инструментов.
  4. Обновите PentAGI до последней версии. Последние версии очищают поврежденные аргументы вызовов функций, возвращаемые моделью, так что один плохой ответ больше не останавливает весь поток; старые сборки передавали поврежденные аргументы и могли зависнуть.

Конфигурация провайдера Ollama

PentAGI поддерживает Ollama как для локального вывода LLM (без затрат, повышенная конфиденциальность), так и для Ollama Cloud (управляемый сервис с бесплатным тарифом).

Переменные конфигурации

Переменная По умолчанию Описание
OLLAMA_SERVER_URL URL вашего сервера Ollama или Ollama Cloud
OLLAMA_SERVER_API_KEY API-ключ для аутентификации Ollama Cloud
OLLAMA_SERVER_MODEL Модель по умолчанию для вывода
OLLAMA_SERVER_CONFIG_PATH Путь к файлу конфигурации пользовательского агента
OLLAMA_SERVER_PULL_MODELS_TIMEOUT 600 Таймаут загрузки моделей (в секундах)
OLLAMA_SERVER_PULL_MODELS_ENABLED false Автоматическая загрузка моделей при запуске
OLLAMA_SERVER_LOAD_MODELS_ENABLED false Запрос к серверу о доступных моделях
#### Конфигурация Ollama Cloud

Ollama Cloud предоставляет управляемый инференс с щедрым бесплатным тарифом и масштабируемыми платными планами.

Настройка бесплатного тарифа (одна модель)

# Free tier allows one model at a time
OLLAMA_SERVER_URL=https://ollama.com
OLLAMA_SERVER_API_KEY=your_ollama_cloud_api_key
OLLAMA_SERVER_MODEL=gpt-oss:120b  # Example: OpenAI OSS 120B model

Настройка платного тарифа (несколько моделей с предварительно настроенной конфигурацией)

Для платных тарифов, поддерживающих несколько одновременных моделей, используйте предварительно настроенную конфигурацию Ollama Cloud:

# Using pre-built Ollama Cloud configuration (included in Docker image)
OLLAMA_SERVER_URL=https://ollama.com
OLLAMA_SERVER_API_KEY=your_ollama_cloud_api_key
OLLAMA_SERVER_CONFIG_PATH=/opt/pentagi/conf/ollama-cloud.provider.yml

Предварительно настроенный файл ollama-cloud.provider.yml включает оптимизированное распределение моделей для всех типов агентов: - Simple/Assistant: nemotron-3-super:cloud — быстрая модель общего назначения - Primary Agent: qwen3-coder-next:cloud — расширенное мышление с высоким уровнем усилий - Coder/Pentester: qwen3-coder-next:cloud — специализированные модели для кодирования - Searcher: qwen3.5:397b-cloud — большой контекст для сбора информации - Refiner/Refactor: glm-5:cloud — высококачественное улучшение текста - Adviser/Enricher: minimax-m2.7:cloud — эффективные консультационные задачи - Installer: devstral-2:123b-cloud — задачи установки и настройки

Пользовательская конфигурация (продвинутый уровень)

Чтобы создать собственную конфигурацию агента, подключите пользовательский файл из файловой системы хоста:

# Using custom provider configuration
OLLAMA_SERVER_URL=https://ollama.com
OLLAMA_SERVER_API_KEY=your_ollama_cloud_api_key
OLLAMA_SERVER_CONFIG_PATH=/opt/pentagi/conf/ollama.provider.yml

# Mount custom configuration from host filesystem (in .env or docker-compose override)
PENTAGI_OLLAMA_SERVER_CONFIG_PATH=/path/on/host/my-ollama-config.yml

Переменная окружения PENTAGI_OLLAMA_SERVER_CONFIG_PATH сопоставляет ваш файл конфигурации хоста с /opt/pentagi/conf/ollama.provider.yml внутри контейнера.

Пример пользовательской конфигурации (my-ollama-config.yml):

primary_agent:
  model: "qwen3-coder-next:cloud"
  temperature: 1.0
  top_p: 0.9
  max_tokens: 32768
  reasoning:
    effort: high

coder:
  model: "qwen3-coder:32b"
  temperature: 1.0
  max_tokens: 20480

Локальная конфигурация Ollama

Для самостоятельных экземпляров Ollama:

# Basic local Ollama setup
OLLAMA_SERVER_URL=http://localhost:11434
OLLAMA_SERVER_MODEL=llama3.1:8b-instruct-q8_0

# Production setup with auto-pull and model discovery
OLLAMA_SERVER_URL=http://ollama-server:11434
OLLAMA_SERVER_PULL_MODELS_ENABLED=true
OLLAMA_SERVER_PULL_MODELS_TIMEOUT=900
OLLAMA_SERVER_LOAD_MODELS_ENABLED=true

# Using pre-built configurations from Docker image
OLLAMA_SERVER_CONFIG_PATH=/opt/pentagi/conf/ollama-llama318b.provider.yml
# or
OLLAMA_SERVER_CONFIG_PATH=/opt/pentagi/conf/ollama-qwen332b-fp16-tc.provider.yml
# or
OLLAMA_SERVER_CONFIG_PATH=/opt/pentagi/conf/ollama-qwq32b-fp16-tc.provider.yml

Рекомендации по производительности:

  • Обнаружение моделей (OLLAMA_SERVER_LOAD_MODELS_ENABLED=true): добавляет задержку запуска 1–2 секунды при запросе к API Ollama
  • Автозагрузка (OLLAMA_SERVER_PULL_MODELS_ENABLED=true): первый запуск может занять несколько минут при загрузке моделей
  • Тайм-аут загрузки (OLLAMA_SERVER_PULL_MODELS_TIMEOUT=900): 15 минут в секундах
  • Статическая конфигурация: отключите оба флага и укажите модели в файле конфигурации для самого быстрого запуска

Создание пользовательских моделей Ollama с расширенным контекстом

PentAGI требует модели с большими окнами контекста, чем стандартные конфигурации Ollama. Вам необходимо создать пользовательские модели с увеличенным параметром num_ctx через Modelfile. Хотя типичные рабочие процессы агентов потребляют около 64K токенов, PentAGI использует размер контекста 110K для запаса прочности и обработки сложных сценариев тестирования на проникновение.

Важно: параметр num_ctx можно установить только при создании модели через Modelfile — его нельзя изменить после создания модели или переопределить во время выполнения.

Пример: Qwen3 32B FP16 с расширенным контекстом

Создайте Modelfile с именем Modelfile_qwen3_32b_fp16_tc:

FROM qwen3:32b-fp16
PARAMETER num_ctx 110000
PARAMETER temperature 0.3
PARAMETER top_p 0.8
PARAMETER min_p 0.0
PARAMETER top_k 20
PARAMETER repeat_penalty 1.1

Соберите пользовательскую модель:

ollama create qwen3:32b-fp16-tc -f Modelfile_qwen3_32b_fp16_tc
Пример: QwQ 32B FP16 с расширенным контекстом

Создайте Modelfile с именем Modelfile_qwq_32b_fp16_tc:

FROM qwq:32b-fp16
PARAMETER num_ctx 110000
PARAMETER temperature 0.2
PARAMETER top_p 0.7
PARAMETER min_p 0.0
PARAMETER top_k 40
PARAMETER repeat_penalty 1.2

Соберите пользовательскую модель:

ollama create qwq:32b-fp16-tc -f Modelfile_qwq_32b_fp16_tc

Примечание: Модель QwQ 32B FP16 требует приблизительно 71,3 ГБ видеопамяти для инференса. Убедитесь, что ваша система имеет достаточно памяти GPU перед попыткой использования этой модели.

Эти пользовательские модели упоминаются в предварительно настроенных файлах конфигурации провайдера (ollama-qwen332b-fp16-tc.provider.yml и ollama-qwq32b-fp16-tc.provider.yml), которые включены в Docker-образ по пути /opt/pentagi/conf/.

Конфигурация провайдера OpenAI

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

Переменные конфигурации

Переменная По умолчанию Описание
OPEN_AI_KEY API-ключ для сервисов OpenAI
OPEN_AI_SERVER_URL https://api.openai.com/v1 Конечная точка API OpenAI

Примеры конфигурации

# Basic OpenAI setup
OPEN_AI_KEY=your_openai_api_key
OPEN_AI_SERVER_URL=https://api.openai.com/v1

# Using with proxy for enhanced security
OPEN_AI_KEY=your_openai_api_key
PROXY_URL=http://your-proxy:8080

Поддерживаемые модели

PentAGI поддерживает 32 модели OpenAI с вызовом инструментов, потоковой передачей, режимами рассуждения и кэшированием подсказок. Модели, отмеченные *, используются в конфигурации по умолчанию. Модели, отмеченные ⚠️, устарели в OpenAI и сохранены только для обратной совместимости с конфигурациями агентов, уже закрепленными за этими именами — избегайте их для новых назначений.

Серия GPT-5.6 — последний рубеж (граница знаний февраль 2026, контекст 1,05M, максимум вывода 128K)

ID модели Мышление Уровень усилий рассуждения Цена (вход/выход/кэш) Вариант использования
gpt-5.6-sol ✅ низкий/средний/высокий/очень высокий $5.00/$30.00/$0.50 Передовая модель для сложной профессиональной работы, самых требовательных автономных тестов на проникновение, разработки сложных цепочек эксплойтов, глубокой многоэтапной симуляции атак
gpt-5.6-terra* ✅ низкий/средний/высокий/очень высокий $2.50/$15.00/$0.25 Баланс интеллекта и стоимости; многоэтапные оценки безопасности, скоординированное многоинструментальное тестирование на проникновение (по умолчанию для генератора/уточнителя/советника/кодера)
gpt-5.6-luna ✅ низкий/средний/высокий/очень высокий $1.00/$6.00/$0.10 Оптимизирована для чувствительных к стоимости, высокообъемных нагрузок; быстрая разведка, массовое сканирование уязвимостей, мониторинг в реальном времени
Серия GPT-5.5 — Передовой рубеж (срез знаний декабрь 2025 г., контекст 1,05M, макс. вывод 128K)
ID модели Мышление Уровень рассуждений Цена (вход/выход/кэш) Вариант использования
gpt-5.5 ✅ нет/низкий/средний/высокий/сверхвысокий $5.00/$30.00/$0.50 Новый класс интеллекта для программирования и профессиональной работы; сложные исследования безопасности, продвинутое автономное тестирование на проникновение
gpt-5.5-pro ✅ средний/высокий/сверхвысокий $30.00/$180.00/$0.00 Использует больше вычислений для более умных и точных ответов; без скидки на кэшированный ввод; критически важные исследования безопасности, поиск уязвимостей нулевого дня

Серия GPT-5.4 — Продвинутые рассуждения в масштабе (контекст 1M)

ID модели Мышление Уровень рассуждений Цена (вход/выход/кэш) Вариант использования
gpt-5.4 ✅ низкий/средний/высокий/сверхвысокий $2.50/$15.00/$0.25 Лучший интеллект в масштабе для агентных, программистских и профессиональных рабочих процессов; максимальная когнитивная глубина для тестирования на проникновение
gpt-5.4-mini* ✅ низкий/средний/высокий/сверхвысокий $0.75/$4.50/$0.075 Самая мощная мини-модель для программирования, использования компьютера, субагентов (по умолчанию primary_agent/assistant/reflector/installer/pentester)
gpt-5.4-nano* ✅ низкий/средний/высокий/сверхвысокий $0.20/$1.25/$0.02 Самая дешёвая модель класса GPT-5.4 для простых задач с большим объёмом (по умолчанию simple/simple_json/searcher/enricher)

Серия GPT-5.2 — Предыдущий флагманский агентный

ID модели Мышление Уровень рассуждений Цена (вход/выход/кэш) Вариант использования
gpt-5.2 ✅ низкий/средний/высокий/сверхвысокий $1.75/$14.00/$0.175 Заменён версиями 5.4/5.6; автономные исследования безопасности, разработка сложных эксплойт-цепочек
gpt-5.2-pro ✅ средний/высокий/сверхвысокий $21.00/$168.00/$0.00 Превосходное агентное программирование и производительность с длинным контекстом, критически важные исследования безопасности, поиск уязвимостей нулевого дня

Серия GPT-5/5.1 — Продвинутые агентные модели

ID модели Мышление Цена (вход/выход/кэш) Вариант использования
gpt-5 ✅ $1.25/$10.00/$0.125 Автономные исследования безопасности, разработка эксплойт-цепочек, координация многоинструментальных рабочих процессов тестирования на проникновение
gpt-5.1 ✅ $1.25/$10.00/$0.125 Связывает GPT-5 и GPT-5.2 с более быстрыми ответами; сбалансированное тестирование на проникновение с сильной координацией инструментов
gpt-5-pro ✅ (высокий) $15.00/$120.00/$0.00 Снижение галлюцинаций, исключительная точность, критические операции безопасности
gpt-5-mini ✅ $0.25/$2.00/$0.025 Автоматический анализ уязвимостей, генерация эксплойтов с сильным вызовом функций
gpt-5-nano ✅ $0.05/$0.40/$0.005 Высокопроизводительное сканирование безопасности, разведка, мониторинг в реальном времени

Серия GPT-4.1 — Расширенный интеллект (без рассуждений)

ID модели Мышление Цена (вход/выход/кэш) Вариант использования
gpt-4.1 ❌ $2.00/$8.00/$0.50 Превосходный вызов функций, сложный анализ угроз, разработка сложных эксплойтов
gpt-4.1-mini ❌ $0.40/$1.60/$0.10 Рутинные оценки безопасности, автоматический анализ кода (больше не используется в конфигурации по умолчанию)

Серия GPT-4o — Мультимодальная (без рассуждений)

ID модели Мышление Цена (вход/выход/кэш) Вариант использования
gpt-4o-mini ❌ $0.15/$0.60/$0.075 Компактная мультимодальная модель с сильным вызовом функций, высокочастотное сканирование, экономичные массовые операции
o-Series — Продвинутые модели рассуждений (текущие)
Model ID Thinking Цена (Ввод/Вывод/Кэш) Варианты использования
o3 ✅ $2.00/$8.00/$0.50 Заменена GPT-5; многоэтапные цепочки атак, глубокий анализ уязвимостей
o3-pro ✅ $20.00/$80.00/$0.00 Больше вычислений для лучших ответов; исследование zero-day, критически важные расследования безопасности

Устаревшие модели — сохранены для обратной совместимости ⚠️

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

Model ID Thinking Цена (Ввод/Вывод/Кэш) Примечания
gpt-5.2-codex ✅ $1.75/$14.00/$0.175 Заменённая модель, специализированная на коде; используйте gpt-5.6-terra/gpt-5.4-mini вместо неё
gpt-5.1-codex-max ✅ $1.25/$10.00/$0.125 Заменена; улучшенные рассуждения для рабочих процессов кодирования
gpt-5.1-codex ✅ $1.25/$10.00/$0.125 Заменённая стандартная модель, оптимизированная для кода
gpt-5-codex ✅ $1.25/$10.00/$0.125 Заменённая базовая модель, специализированная на коде
gpt-5.1-codex-mini ✅ $0.25/$2.00/$0.025 Заменённая компактная модель для кода
codex-mini-latest ✅ $1.50/$6.00/$0.375 Заменённая компактная модель для кода
gpt-4o ❌ $2.50/$10.00/$1.25 Заменена флагманской мультимодальной серией GPT-5.x/5.6
gpt-4.1-nano ❌ $0.10/$0.40/$0.025 Заменённая сверхбыстрая лёгкая модель
o3-mini ✅ $1.10/$4.40/$0.55 Заменённая компактная модель рассуждений
o4-mini ✅ $1.10/$4.40/$0.275 Заменена gpt-5-mini
o1 ✅ $15.00/$60.00/$7.50 Заменённая ведущая модель рассуждений
o1-pro ✅ $150.00/$600.00/$0.00 Заменена, самая высокая цена в o-серии

Цены: За 1 млн токенов. Модели рассуждений включают токены мышления в стоимость вывода.

[!WARNING] Модели GPT-5/5.1/5.2 — требуется доверенный доступ

Оригинальные модели GPT-5, GPT-5.1 и GPT-5.2 (gpt-5, gpt-5.1, gpt-5.2, gpt-5-pro, gpt-5.2-pro и все устаревшие варианты Codex) работают нестабильно с PentAGI и могут активировать механизмы безопасности OpenAI для кибербезопасности без проверенного доступа. Это не затрагивает более новые серии GPT-5.4/5.5/5.6, используемые в конфигурации PentAGI по умолчанию ниже.

Для надёжного использования этих моделей: 1. Индивидуальные пользователи: Подтвердите свою личность на chatgpt.com/cyber 2. Корпоративные команды: Запросите доверенный доступ через своего представителя OpenAI 3. Исследователи безопасности: Подайте заявку на Программу грантов для кибербезопасности (включает $10 млн в API-кредитах)

Рекомендуемые альтернативы без проверки: - Используйте стандартные модели PentAGI — gpt-5.4-mini/gpt-5.4-nano/gpt-5.6-terra — которые работают сразу из коробки - Используйте o3/o3-pro для задач рассуждений - Используйте серию gpt-4.1 для общего интеллекта и вызова функций без рассуждений

Конфигурация рассуждений: - Рассуждения принудительно отключены по умолчанию: каждый агент по умолчанию, которому назначены gpt-5.4-mini или gpt-5.6-terra (primary_agent, assistant, generator, refiner, adviser, reflector, coder, installer, pentester), устанавливает reasoning: {mode: off} — это действительно отключает рассуждения, а не просто "низкие усилия". PentAGI вызывает OpenAI исключительно через /v1/chat/completions (никогда через /v1/responses), и эта конечная точка отклоняет запросы, которые сочетают инструменты функций с включённым по умолчанию мышлением этих моделей; принудительное отключение мышления необходимо для надёжной работы вызовов инструментов (см. примечания к исследованию в backend/pkg/providers/openai/config.yml). - Для gpt-5.4-nano переопределение не требуется: используемый для простых, простых_json, поисковых и обогащающих задач, этот уровень по умолчанию не включает режим мышления, поэтому инструменты подключаются без конфликтов, и переопределение reasoning не требуется. - Доступна ручная настройка: помимо стандартных назначений, модели серий GPT-5.6/5.5/5.4/5.2 предоставляют явные уровни усилий рассуждения (low/medium/high/xhigh, а также none для GPT-5.5) для пользовательских конфигураций агентов, которым требуется переменная глубина рассуждений с отключённым вызовом инструментов или через /v1/responses.

Ключевые возможности: - Расширенное рассуждение: модели GPT-5.4/5.5/5.6 и серии o с цепочкой рассуждений для сложного анализа безопасности - Агентный интеллект: серии GPT-5.4/5.5/5.6 с улучшенной интеграцией инструментов, контекстными окнами на миллион токенов и автономными возможностями - Кэширование подсказок: снижение затрат на повторяющийся контекст (10–50% от цены ввода) - Специализация по коду: устаревшие модели Codex остаются доступными (устаревшие) для обнаружения уязвимостей и разработки эксплойтов в фиксированных конфигурациях - Мультимодальная поддержка: gpt-4o-mini для визуальных оценок безопасности - Вызов инструментов: надёжный вызов функций во всех моделях для оркестрации инструментов пентеста - Потоковая передача: потоковая передача ответов в реальном времени для интерактивных рабочих процессов - Проверенная репутация: ведущие модели отрасли с обнаруженными CVE и реальными применениями в безопасности

Конфигурация провайдера Anthropic

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

Переменные конфигурации

Переменная По умолчанию Описание
ANTHROPIC_API_KEY Ключ API для сервисов Anthropic
ANTHROPIC_SERVER_URL https://api.anthropic.com/v1 Конечная точка API Anthropic

Примеры конфигурации

# Basic Anthropic setup
ANTHROPIC_API_KEY=your_anthropic_api_key
ANTHROPIC_SERVER_URL=https://api.anthropic.com/v1

# Using with proxy for secure environments
ANTHROPIC_API_KEY=your_anthropic_api_key
PROXY_URL=http://your-proxy:8080

[!ПРИМЕЧАНИЕ] Google Vertex AI для моделей Claude

В настоящее время PentAGI не предоставляет выделенного пути конфигурации Google Vertex AI для Anthropic Claude в .env. На данный момент нет отдельного поля для ключа API Vertex AI, а существующие переменные Anthropic (ANTHROPIC_API_KEY, ANTHROPIC_SERVER_URL) нацелены на прямой API Anthropic. Поддерживаемые маршруты для Claude:

Если вам нужно использовать Vertex AI сегодня, наиболее безопасный поддерживаемый обходной путь — предоставить Vertex AI через прокси или шлюз, совместимый с OpenAI, который преобразует вызовы Vertex AI в формат Chat Completions, сохраняя поведение чата и вызова инструментов, на которое полагается PentAGI, а затем направить пользовательского LLM-провайдера на этот шлюз через LLM_SERVER_URL, LLM_SERVER_KEY и LLM_SERVER_MODEL. Этот путь настолько же надёжен, насколько надёжен выбранный вами шлюз.

Поддерживаемые модели

PentAGI поддерживает 9 моделей Claude с вызовом инструментов, потоковой передачей, расширенным мышлением, адаптивным мышлением и кэшированием подсказок. Модели, отмеченные *, используются в конфигурации по умолчанию.

Серия Claude 5 — новейшие модели (2026)

Идентификатор модели Мышление Дата выпуска Цена (ввод/вывод/кэш чтения/записи) Вариант использования
claude-sonnet-5* ✅ июль 2026 $3.00/$15.00/$0.30/$3.75 Лучшее сочетание скорости и интеллекта для кодирования, агентов и профессиональной работы в масштабе. Только адаптивное мышление (ручное бюджетное мышление отклоняется); параметры выборки не поддерживаются. Модель по умолчанию для основного агента, ассистента, кодера, советника, установщика, пентестера
claude-fable-5 ✅ июнь 2026 $10.00/$50.00/$1.00/$12.50 Самая мощная широко выпущенная модель Anthropic для длительных агентов и самых требовательных рабочих нагрузок рассуждения. Адаптивное мышление всегда включено (бюджетное мышление и явное отключение отклоняются); параметры выборки не поддерживаются

Серия Claude 4

Идентификатор модели Мышление Дата выпуска Цена (ввод/вывод/кэш чтения/записи) Вариант использования
claude-opus-4-8* ✅ май 2026 $5.00/$25.00/$0.50/$6.25 Флагман для кодирования, агентов и глубоких рассуждений в корпоративных рабочих процессах безопасности. Только адаптивное мышление — бюджетное мышление и параметры выборки (temperature/top_p/top_k) отклоняются. Модель по умолчанию для генератора и уточнителя; самые сложные разработки эксплойтов и многоэтапное моделирование атак
claude-opus-4-7 ✅ апрель 2026 $5.00/$25.00/$0.50/$6.25 Продвинутая разработка программного обеспечения и длительный агентный анализ безопасности. Только адаптивное мышление (ручное бюджетное мышление отклоняется)
claude-sonnet-4-6 ✅ февраль 2026 $3.00/$15.00/$0.30/$3.75 Лучший баланс скорости/интеллекта с адаптивным мышлением. Многофазные оценки безопасности, интеллектуальный анализ уязвимостей, охота за угрозами в реальном времени
claude-opus-4-6 ✅ февраль 2026 $5.00/$25.00/$0.50/$6.25 Самая интеллектуальная модель для автономных агентов и кодирования. Расширенное + адаптивное мышление для сложной разработки эксплойтов, многоэтапного моделирования атак
claude-haiku-4-5* ❌ октябрь 2025 $1.00/$5.00/$0.10/$1.25 Быстрая и эффективная модель с исключительным вызовом функций и низкой задержкой, без поддержки мышления. Модель по умолчанию для простых, простых_json, отражателя, поисковика, обогащателя; высокочастотное сканирование, мониторинг в реальном времени, массовое автоматизированное тестирование
Устаревшие модели — всё ещё поддерживаются
ID модели Рассуждения Дата выпуска Цена (Ввод/Вывод/Кэш Чтение/Запись) Вариант использования
claude-sonnet-4-5 ✅ Сен 2025 $3.00/$15.00/$0.30/$3.75 Современные рассуждения (заменена на sonnet-4-6/sonnet-5). Сложное тестирование на проникновение, расширенный анализ угроз
claude-opus-4-5 ✅ Ноя 2025 $5.00/$25.00/$0.50/$6.25 Максимальные рассуждения (заменена на opus-4-6/4-7/4-8). Критические исследования безопасности, поиск zero-day, операции red team

Цены: За 1 млн токенов. Цены на кэш включают стоимость как чтения, так и записи.

Конфигурация расширенного мышления (конфигурация агента по умолчанию, см. backend/pkg/providers/anthropic/config.yml): - Генератор / Уточнитель (claude-opus-4-8): адаптивные рассуждения с усилием xhigh/high для максимальной глубины рассуждений при разработке сложных эксплойтов - Основной агент, ассистент, кодер, советник, установщик, пентестер (claude-sonnet-5): адаптивные рассуждения (советник с усилием xhigh) для сбалансированного анализа кода и исследования уязвимостей - Рефлектор, поисковик (claude-haiku-4-5): фиксированный бюджет рассуждений 1024 токена для сфокусированных рассуждений над конкретными задачами - Simple, simple_json, обогатитель (claude-haiku-4-5): без размышлений, оптимизировано для скорости

Ключевые возможности: - Расширенное мышление: Все модели Claude 4.5+ поддерживают настраиваемую глубину цепочки рассуждений для сложного анализа безопасности - Адаптивное мышление: Серия Claude 4.6 (Opus/Sonnet) динамически регулирует глубину рассуждений в зависимости от сложности задачи; Claude Opus 4.7/4.8 и серия Claude 5 (Sonnet/Fable) поддерживают только адаптивное мышление (ручная настройка бюджета мышления и параметров выборки отклоняется с ошибкой HTTP 400) - Кэширование подсказок: Значительное снижение затрат с раздельными ценами на чтение/запись (10% чтение, 125% запись от стоимости ввода) - Расширенный контекст: 200K токенов стандартно, до 1M токенов (бета) для Claude Opus/Sonnet 4.6 для всестороннего анализа кодовой базы - Вызов инструментов: Надёжный вызов функций с исключительной точностью для оркестрации инструментов безопасности - Потоковая передача: Потоковая передача ответов в реальном времени для интерактивных рабочих процессов тестирования на проникновение - Безопасность прежде всего: Встроенные механизмы безопасности, обеспечивающие ответственные практики тестирования безопасности - Мультимодальная поддержка: Возможности зрения в новейших моделях для анализа скриншотов и оценки безопасности пользовательских интерфейсов - Конституционный ИИ: Расширенное обучение безопасности, обеспечивающее надёжные и этичные рекомендации по безопасности

Конфигурация провайдера Google AI (Gemini)

PentAGI интегрируется с моделями Gemini от Google через Google AI API, предлагая современные мультимодальные возможности рассуждений с расширенным мышлением и кэшированием контекста.

Переменные конфигурации

Переменная По умолчанию Описание
GEMINI_API_KEY Ключ API для сервисов Google AI
GEMINI_SERVER_URL https://generativelanguage.googleapis.com Конечная точка Google AI API

Примеры конфигурации

# Basic Gemini setup
GEMINI_API_KEY=your_gemini_api_key
GEMINI_SERVER_URL=https://generativelanguage.googleapis.com

# Using with proxy
GEMINI_API_KEY=your_gemini_api_key
PROXY_URL=http://your-proxy:8080

Поддерживаемые модели

PentAGI поддерживает 9 моделей Gemini с вызовом инструментов, потоковой передачей, режимами мышления и кэшированием контекста. Модели, отмеченные *, используются в конфигурации по умолчанию.

Серия Gemini 3.5 — Последний стабильный Flash (Май 2026)

ID модели Рассуждения Контекст Цена (Ввод/Вывод/Кэш) Вариант использования
gemini-3.5-flash* ✅ 1M $1.50/$9.00/$0.15 Самая интеллектуальная модель Flash с устойчивой производительностью на агентных и кодовых задачах, превосходный поиск и обоснование

Серия Gemini 3.1 — Стабильный Flash-Lite + Pro Preview (Фев-Май 2026)

ID модели Рассуждения Контекст Цена (Ввод/Вывод/Кэш) Вариант использования
gemini-3.1-pro-preview* ✅ 1M $2.00/$12.00/$0.20 Новейший флагман с улучшенным мышлением, повышенной эффективностью токенов, оптимизирован для разработки ПО и агентных рабочих процессов
gemini-3.1-pro-preview-customtools ✅ 1M $2.00/$12.00/$0.20 Конечная точка пользовательских инструментов, оптимизированная для bash и приоритизации пользовательских инструментов (view_file, search_code)
gemini-3.1-flash-lite* ✅ 1M $0.25/$1.50/$0.025 Самая экономичная стабильная мультимодальная модель, производительность уровня frontier для высокообъёмных агентных задач и приложений с низкой задержкой
Серия Gemini 2.5 — продвинутые модели мышления (активны до 16 октября 2026 года)
ID модели Мышление Контекст Цена (вход/выход/кэш) Вариант использования
gemini-2.5-pro ✅ 1M $1.25/$10.00/$0.125 Передовые технологии для сложного кодирования и рассуждений, изощренное моделирование угроз
gemini-2.5-flash ✅ 1M $0.30/$2.50/$0.03 Первая гибридная модель рассуждений с бюджетами мышления, лучшее соотношение цены и производительности для крупномасштабных оценок
gemini-2.5-flash-lite ✅ 1M $0.10/$0.40/$0.01 Самая маленькая и наиболее экономичная для массового использования, высокопроизводительное сканирование

Открытые модели Gemma 4 (Apache 2.0, бесплатный уровень)

ID модели Мышление Контекст Цена (вход/выход/кэш) Вариант использования
gemma-4-31b-it ✅ 256K Бесплатно/Бесплатно/Бесплатно Крупнейшая открытая плотная модель Gemma 4 (~31B параметров), мультимодальная текст+изображение, 140+ языков, локальные операции безопасности
gemma-4-26b-a4b-it ✅ 256K Бесплатно/Бесплатно/Бесплатно Архитектура MoE (~26B всего / ~3.8B активных параметров), высокоэффективный вывод на потребительских GPU для локального высокопроизводительного сканирования

Цены: За 1 млн токенов (стандартный платный уровень). Окно контекста — лимит входных токенов.

[!NOTE] Отключение серии Gemini 2.5

gemini-2.5-pro, gemini-2.5-flash и gemini-2.5-flash-lite будут отключены 16 октября 2026 года. Рекомендуемые миграции:

  • gemini-2.5-pro → gemini-3.1-pro-preview (тот же уровень цены входа $2.00)
  • gemini-2.5-flash → gemini-3.5-flash (улучшенные передовые возможности)
  • gemini-2.5-flash-lite → gemini-3.1-flash-lite (та же цена входа $0.25)

Назначение моделей по умолчанию (config.yml): - gemini-3.1-pro-preview — primary_agent, assistant, generator, refiner, adviser, coder, pentester - gemini-3.5-flash — reflector, searcher, enricher, installer - gemini-3.1-flash-lite — simple, simple_json

Ключевые особенности: - Расширенное мышление: Пошаговые рассуждения для сложного анализа безопасности (все Gemini 3.x, серия 2.5 и Gemma 4 с переключаемым мышлением) - Кэширование контекста: Значительное снижение затрат при повторяющемся контексте (10% от цены входа для большинства моделей) - Сверхдлинный контекст: 1 млн токенов для чат-моделей Gemini, 256 тыс. токенов для открытых моделей Gemma 4 - Мультимодальная поддержка: Обработка текста, изображений, видео, аудио и PDF для всесторонних оценок - Вызов инструментов: Бесшовная интеграция с 20+ инструментами пентеста через вызов функций - Потоковая передача: Потоковая передача ответов в реальном времени для интерактивных рабочих процессов безопасности - Выполнение кода: Встроенное выполнение кода для тестирования атакующих инструментов и проверки эксплойтов - Поисковая привязка: Интеграция с Google Search для разведки угроз и исследования CVE - Поиск файлов: Извлечение документов и возможности RAG для оценок на основе знаний - Пакетный API: Снижение затрат на 50% для нереального времени пакетной обработки - Конечная точка пользовательских инструментов: Выделенный маршрут gemini-3.1-pro-preview-customtools для агентных рабочих процессов с интенсивным использованием инструментов, предпочитающих зарегистрированные инструменты вместо bash

Уровни усилий рассуждения: - Высокий: Максимальная глубина мышления для сложного многошагового анализа (generator) - Средний: Сбалансированные рассуждения для общих агентных задач (primary_agent, assistant, refiner, adviser) - Низкий: Эффективное мышление для сфокусированных задач (coder, installer, pentester)

Конфигурация провайдера AWS Bedrock

PentAGI интегрируется с Amazon Bedrock, предоставляя доступ к 20+ фундаментальным моделям от ведущих ИИ-компаний, включая Anthropic, Amazon, Cohere, DeepSeek, OpenAI, Qwen, Mistral и Moonshot.

Переменные конфигурации

Переменная По умолчанию Описание
BEDROCK_REGION us-east-1 Регион AWS для сервиса Bedrock
BEDROCK_DEFAULT_AUTH false Использовать цепочку учетных данных AWS SDK по умолчанию (переменные окружения, роль EC2, ~/.aws/credentials) — наивысший приоритет
BEDROCK_BEARER_TOKEN Аутентификация по Bearer-токену — приоритет над статическими учетными данными
BEDROCK_ACCESS_KEY_ID Идентификатор ключа доступа AWS для статических учетных данных
BEDROCK_SECRET_ACCESS_KEY Секретный ключ доступа AWS для статических учетных данных
BEDROCK_SESSION_TOKEN Сессионный токен AWS для временных учетных данных (необязательно, используется со статическими учетными данными)
BEDROCK_SERVER_URL Пользовательская конечная точка Bedrock (VPC-эндпоинты, локальное тестирование)
BEDROCK_CONFIG_PATH Путь к пользовательскому YAML-файлу конфигурации провайдера (переопределяет встроенную конфигурацию по умолчанию для определений моделей/цен)
Приоритет аутентификации: BEDROCK_DEFAULT_AUTH → BEDROCK_BEARER_TOKEN → BEDROCK_ACCESS_KEY_ID+BEDROCK_SECRET_ACCESS_KEY

Примеры конфигурации

# Recommended: Default AWS SDK authentication (EC2/ECS/Lambda roles)
BEDROCK_REGION=us-east-1
BEDROCK_DEFAULT_AUTH=true

# Bearer token authentication (AWS STS, custom auth)
BEDROCK_REGION=us-east-1
BEDROCK_BEARER_TOKEN=your_bearer_token

# Static credentials (development, testing)
BEDROCK_REGION=us-east-1
BEDROCK_ACCESS_KEY_ID=your_aws_access_key
BEDROCK_SECRET_ACCESS_KEY=your_aws_secret_key

# With proxy and custom endpoint
BEDROCK_REGION=us-east-1
BEDROCK_DEFAULT_AUTH=true
BEDROCK_SERVER_URL=https://bedrock-runtime.us-east-1.vpce-xxx.amazonaws.com
PROXY_URL=http://your-proxy:8080

Конфигурация провайдера и модели (продвинутый уровень)

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

  • BEDROCK_CONFIG_PATH — YAML-файл (такой же формы, как и другие конфигурации провайдеров), который заменяет встроенные назначения моделей/цен для каждого агента. Смотрите examples/configs/bedrock-glm-flash.provider.yml.

Это полезно для предоставления модели Bedrock новее, чем в скомпилированном каталоге — например, zai.glm-4.7-flash от Z.AI. Используйте точный идентификатор модели со страницы сведений о модели AWS Bedrock; добавляйте префикс профиля вывода us./eu./apac. только если на этой странице модель помечена как требующая кроссрегионального вывода (zai.glm-4.7-flash является внутрирегиональной, поэтому используется как есть, без префикса).

С Docker Compose задайте исходный путь монтирования на хосте и путь внутри контейнера вместе:

# host file mounted into the container at /opt/pentagi/conf/bedrock.provider.yml
PENTAGI_BEDROCK_CONFIG_PATH=./examples/configs/bedrock-glm-flash.provider.yml
# tell the backend to read the mounted file
BEDROCK_CONFIG_PATH=/opt/pentagi/conf/bedrock.provider.yml

Поддерживаемые модели

PentAGI поддерживает 24 модели AWS Bedrock с возможностями вызова инструментов, потоковой передачи и мультимодальности. Моде, отмеченные *, используются в конфигурации по умолчанию.

Идентификатор модели Провайдер Мышление Мультимодальность Цена (вход/выход) Применение
us.amazon.nova-2-lite-v1:0 Amazon Nova ❌ ✅ $0.33/$2.75 Адаптивное рассуждение, эффективное мышление
us.amazon.nova-premier-v1:0 Amazon Nova ❌ ✅ $2.50/$12.50 Сложные рассуждения, продвинутый анализ
us.amazon.nova-pro-v1:0 Amazon Nova ❌ ✅ $0.80/$3.20 Сбалансированная точность, скорость, стоимость
us.amazon.nova-lite-v1:0 Amazon Nova ❌ ✅ $0.06/$0.24 Быстрая обработка, операции с большим объёмом
us.amazon.nova-micro-v1:0 Amazon Nova ❌ ❌ $0.035/$0.14 Сверхнизкая задержка, мониторинг в реальном времени
us.anthropic.claude-opus-4-8 Anthropic ✅ ✅ $5.00/$25.00 Флагманское программирование/агенты/глубоккие рассуждения; только адаптивное мышление (параметры сэмплирования отклоняются)
us.anthropic.claude-opus-4-7 Anthropic ✅ ✅ $5.00/$25.00 Продвинутая инженерия, длительные агенты; только адаптивное мышление
us.anthropic.claude-opus-4-6-v1* Anthropic ✅ ✅ $5.00/$25.00 Программирование мирового класса, корпоративные агенты
us.anthropic.claude-sonnet-4-6 Anthropic ✅ ✅ $3.00/$15.00 Передовой интеллект, корпоративный масштаб
us.anthropic.claude-opus-4-5-20251101-v1:0 Anthropic ✅ ✅ $5.00/$25.00 Многодневная разработка программного обеспечения
us.anthropic.claude-haiku-4-5-20251001-v1:0* Anthropic ✅ ✅ $1.00/$5.00 Производительность, близкая к передровой, высочайшая скорость
us.anthropic.claude-sonnet-4-5-20250929-v1:0* Anthropic ✅ ✅ $3.00/$15.00 Агенты реального мира, превосходное программирование
us.anthropic.claude-sonnet-4-20250514-v1:0 Anthropic ✅ ✅ $3.00/$15.00 Сбалансированная производительность, готовность к продакшену
us.anthropic.claude-3-5-haiku-20241022-v1:0 Anthropic ❌ ❌ $0.80/$4.00 Самая быстрая модель, экономичное сканирование
cohere.command-r-plus-v1:0 Cohere ❌ ❌ $3.00/$15.00 Крупномасштабные операции, превосходный RAG
deepseek.v3.2 DeepSeek ❌ ❌ $0.58/$1.68 Длинноконтекстные рассуждения, эффективность
openai.gpt-oss-120b-1:0* OpenAI (OSS) ✅ ❌ $0.15/$0.60 Сильные рассуждения, научный анализ
openai.gpt-oss-20b-1:0 OpenAI (OSS) ✅ ❌ $0.07/$0.30 Эффективное программирование, разработка ПО
qwen.qwen3-next-80b-a3b Qwen ❌ ❌ $0.15/$1.20 Сверхдлинный контекст, флагманские рассуждения
qwen.qwen3-32b-v1:0 Qwen ❌ ❌ $0.15/$0.60 Сбалансированные рассуждения, исследовательские задачи
qwen.qwen3-coder-30b-a3b-v1:0 Qwen ❌ ❌ $0.15/$0.60 Vibe-кодинг, естественный язык как основной
qwen.qwen3-coder-next Qwen ❌ ❌ $0.45/$1.80 Использование инструментов, оптимизация вызова функций
mistral.mistral-large-3-675b-instruct Mistral ❌ ✅ $4.00/$12.00 Продвинутая мультимодальность, длинный контекст
moonshotai.kimi-k2.5 Moonshot ❌ ✅ $0.60/$3.00 Зрение, язык, код в одной модели
Цены: За 1 млн токенов. М для моделей с поддержкой мышления/рассуждений добавляются вычислительные затраты во время фазы рассуждений.

Протестированные, но несовместимые модели

Некоторые модели AWS Bedrock были протестированы, но не поддерживаются из-за технических ограничений:

Семейство моделей Причина несовместимости
GLM (Z.AI) Формат вызова инструментов несовмеместимм с Converse API (ожидается строка вместо JSON)
AI21 Jamba Срогие ограничения скорости (1-2 зап/мин) препятствуют надежному тестированию и производственному использованию
Meta Llama 3.3/3.1 Нестабильная обработка результатов вызова инструментов, вызывает непредвиденные сбои в многоходовых рабочих процессах
Mistral Magistral Мдель не поддерживает вызов инструментов
Moonshot K2-Thinking Нестабильное потоковое поведение с вызовами инструментов, ненадежно в производстве
Qwen3-VL Нестабильная потоковая передача с вызовом инструментов, комбинация мультимодальности и инструментов периодически выходит из строя

[!ВАЖНО] Лимиты и управление квотами

Стаандартные квоты AWS Bedrock для моделей Claude крайне ограничены (2-20 запросов/мин для новых аккаунтов). Для производственного тестирования на проникновение:

  1. Запроосите увелиение квот через консоль AWS Service Quotas для моделей, которые вы планируете использовать
  2. Используйте модели Amazon Nova - более высокие квоты по умолчанию и отличная производительность
  3. Включите выделенную пропускную способность для последовательного высокообъемного тестирования ⁴. Отслеживайте использование - AWS агрессивно ограничивает при достижении лимитов

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

[!ПРЕДУПРЕЖДЕНИЕ] Требования к Converse API

PentAGI использует Amazon Bedrock Converse API для унифицированного доступа к моделям. Все поддерживаемые модели требуют:

  • ✅ Поддержку Converse/ConverseStream API
  • ✅ Использование инструментов (вызов функций) для рабочих процессов тестирования на проникновение
  • ✅ Потоковое использование инструментов для обратной связи в реальном времени

Проверьте возможности моделей по адресу: AWS Bedrock Model Features

Ключевые функции: - Автоматическое кэширование подсказок: снижение затрат на 40-70% при повторяющемся контексте (модели Claude 4.x) - Расширенное мышление: пошаговые рассуждения для сложного анализа безопасности (Claude, DeepSeek R1, OpenAI GPT) - Мультимодальный анализ: обработка скриншотов, диаграмм, видео для всестороннего тестирования (Nova, Claude, Mistral, Kimi) - Вызов инструментов: бесшовная интеграция с более чем 20 инструментами для пентеста через вызов функций - Потоковая передача: потоковая передача ответов в реальном времени для интерактивных рабочих процессов оценки безопасности

Конфигурация провайдера DeepSeek

PentAGI интегрируется с DeepSeek, предоставляя доступ к передовым моделям ИИ с сильными возможностями рассуждения, программиирования и кэширования контекста по конкурентоспособным ценам.

Переменные конфигурации

Переменная Значение по умолчанию Описание
DEEPSEEK_API_KEY Ключ API DeepSeek для аутентификации
DEEPSEEK_SERVER_URL https://api.deepseek.com URL-ад конечной точки API DeepSeek
DEEPSEEK_PROROVIDER Префикс провайдера для интеграции LiteLLM (необязательно)

Примеры конфигурации

# Direct API usage
DEEPSEEK_API_KEY=your_deepseek_api_key
DEEPSEEK_SERVER_URL=https://api.deepseek.com

# With LiteLLM proxy
DEEPSEEK_API_KEY=your_litellm_key
DEEPSEEK_SERVER_URL=http://litellm-proxy:4000
DEEPSEEK_PROVIDER=deepseek  # Adds prefix to model names (deepseek/deepseek-v4-flash) for LiteLLM

Поддержиживаемые модели

PentAGI поддерживает 2 модели DeepSeek V4 с вызовом инструментов,, потоковой передачей, гибридными режимами мышления/без мышления и кэшированием контекста. Обе модели поддерживают режим мышления по умолчанию и могут быть переключены в режим без мышления через extra_body. Модели, отмеченные *, используются в конфиигурации по умолчанию.

Идентификатор модели Мышление Макс. вывод Контекст Цена (ввод/вывод/кэш) Вариант использования
deepseek-v4-flash* ✅ гибрид 384K 1M $0.14/$0.28/$0.0028 Утилитные агенты, общий диалог, быстрый вызов инструментов
deepseek-v4-pro* ✅ гибрид 384K 1M $1.74/$3.48/$00.0145 Продвинутые рассуждения,, сложная логика, анализ безопасности
Цены: За 1M токенов. Цены на кэш применяются к промпт-токенам, обслуживаемым из кэша (попадание во входной кэш, снижение до 1/10 от стартовой цены с 2026-04-26). Обе модели поддерживают гибридное мышление — режим thinking включен по умолчанию; передайте extra_body.thinking.type: disabled, чтобы переключиться в режим без мышления для более быстрых/дешевых ответов.

Примечание о ценах (deepseek-v4-pro): Промо-скидка 75% на deepseek-v4-pro официально закончилась 2026-05-31 в 15:59 UTC. Цены выше отражают стандартные цены после промо-периода. Если у вас есть устаревшие конфигурации, использующие скидочные цены ($0.435/$0.87/$0.003625), обновите их до текущих тарифов для точного отслеживания затрат.

Устаревшие имена моделей deepseek-chat и deepseek-reasoner запланированы к удалению компанией DeepSeek 2026-07-24. Существующие пользовательские конфигурации, ссылающиеся на устаревшие имена, продолжат работать до этого срока; значения по умолчанию выше используют текущие имена V4. deepseek-chat соответствует режиму без мышления deepseek-v4-flash; deepseek-reasoner соответствует режиму мышления deepseek-v4-flash.

Конфигурация агента по умолчанию:

Стратегия: предпочитать deepseek-v4-flash (в 12 раз дешевле ввод, в 12 раз дешевле вывод) как рабочую лошадку для утилитарных/легковесных агентов; резервировать deepseek-v4-pro для сложных многошаговых рассуждений. Агент installer работает на Flash с включенным мышлением, потому что задачи настройки окружения (команды оболочки, правка конфигов) редко требуют рассуждений уровня Pro. Проведите A/B-тесты на своих рабочих нагрузках, прежде чем переводить больше агентов на Pro.

Роль агента Модель по умолчанию Мышление Усилия рассуждения Макс. вывод Температура Top P
Генератор / Рефайнер deepseek-v4-pro Включено Высокие 32768 (авто) (авто)
Кодер deepseek-v4-pro Включено Высокие 20480 (авто) (авто)
Основной агент / Ассистент / Пентестер deepseek-v4-pro Включено Высокие 16384 (авто) (авто)
Советник (ментор/планировщик) deepseek-v4-pro Включено Высокие 8192 (авто) (авто)
Установщик deepseek-v4-flash Включено Высокие 12288 (авто) (авто)
Рефлектор / Поисковик / Обогатитель deepseek-v4-flash Отключено — 4096 0.5 0.9
Простой / Простой JSON deepseek-v4-flash Отключено — 2048 0.3 0.9

Примечание: Когда режим мышления включен, DeepSeek молча игнорирует temperature, top_p, presence_penalty и frequency_penalty. Клиент langchaingo автоматически обнуляет temperature/top_p, когда установлен reasoning_effort, поэтому в таблице выше они отображаются как "(авто)". Все агенты с включенным мышлением также явно передают extra_body.thinking.type: enabled в качестве защитного кода на случай будущих изменений настроек провайдера.

Ключевые особенности: - Гибридные режимы мышления: Переключение между режимом мышления (глубокие рассуждения) и режимом без мышления (быстрый) через extra_body.thinking.type - Автоматическое кэширование промптов: Значительное снижение затрат на повторяющийся контекст благодаря ценам на попадание в кэш (1/10 от стартовой цены) - Расширенное мышление: Обучение с подкреплением CoT для сложного анализа безопасности (обе модели V4) - Сильный код: Оптимизировано для генерации кода и разработки эксплойтов - Длинный контекст: Окно контекста 1M токенов с выводом до 384K токенов - Вызов инструментов: Бесшовная интеграция с 20+ инструментами пентеста через вызов функций - Стриминг: Потоковые ответы в реальном времени для интерактивных рабочих процессов - Многоязычность: Поддержка китайского и английского языков - Дополнительные возможности: JSON Output, Chat Prefix Completion (бета), FIM/Fill-in-the-Middle Completion (только в режиме без мышления)

Лимиты параллельных запросов: deepseek-v4-flash: 2500 одновременных запросов; deepseek-v4-pro: 500 одновременных запросов.

Интеграция с LiteLLM: Установите DEEPSEEK_PROVIDER=deepseek, чтобы включить префиксацию имен моделей при использовании конфигураций PentAGI по умолчанию с прокси LiteLLM. Оставьте пустым для прямого использования API.

Конфигурация провайдера GLM

PentAGI интегрируется с GLM от Zhipu AI (Z.AI), предоставляя продвинутые языковые модели с архитектурой MoE, сильными рассуждательными способностями и агентными возможностями, разработанными Университетом Цинхуа.

Переменные конфигурации

Переменная Значение по умолчанию Описание
GLM_API_KEY Ключ API GLM для аутентификации
GLM_SERVER_URL https://api.z.ai/api/paas/v4 URL конечной точки API GLM (международный)
GLM_PROVIDER Префикс провайдера для интеграции LiteLLM (необязательно)

Примеры конфигурации

# Direct API usage (international endpoint)
GLM_API_KEY=your_glm_api_key
GLM_SERVER_URL=https://api.z.ai/api/paas/v4

# Alternative endpoints
GLM_SERVER_URL=https://open.bigmodel.cn/api/paas/v4  # China
GLM_SERVER_URL=https://api.z.ai/api/coding/paas/v4   # Coding-specific

# With LiteLLM proxy
GLM_API_KEY=your_litellm_key
GLM_SERVER_URL=http://litellm-proxy:4000
GLM_PROVIDER=zai  # Adds prefix to model names (zai/glm-4) for LiteLLM

Поддерживаемые модели

PentAGI поддерживает 14 моделей GLM с вызовом инструментов, потоковой передачей, гибридными режимами мышления и кэшированием подсказок. Модели, отмеченные *, используются в конфигурации по умолчанию. Мышление управляется через extra_body.thinking.type ("enabled"/"disabled"); в отличие от Kimi, GLM допускает изменение температуры в обоих режимах.

Серия GLM-5.x - последнее поколение (контекст 200K, максимальный вывод 128K)

Идентификатор модели Мышление Контекст Макс. вывод Цена (вход/выход/кэш) Варианты использования
glm-5.2* ✅ Гибрид 200K 128K $1.40/$4.40/$0.26 Новейший флагман, улучшение GLM-5.1. Поддерживает явное reasoning_effort (high/max) (по умолчанию для generator/refiner/adviser/coder/pentester)
glm-5.1 ✅ Гибрид 200K 128K $1.40/$4.40/$0.26 Долгосрочные задачи: 8 часов непрерывного автономного выполнения, программирование уровня Claude Opus 4.6
glm-5 ✅ Гибрид 200K 128K $1.00/$3.20/$0.20 Основа для агентной инженерии, MoE 744B/40B активных, программирование уровня Claude Opus 4.5
glm-5-turbo* ✅ Гибрид 200K 128K $1.20/$4.00/$0.24 OpenClaw-native: оптимизирован для вызова инструментов, постоянных задач, длинных цепочек выполнения (по умолчанию для primary_agent/assistant)

Серия GLM-4.7 - премиум с чередующимся мышлением

Идентификатор модели Мышление Контекст Макс. вывод Цена (вход/выход/кэш) Варианты использования
glm-4.7 ✅ Гибрид 200K 128K $0.60/$2.20/$0.11 Улучшенное программирование, стабильные многошаговые рассуждения
glm-4.7-flashx ✅ Гибрид 200K 128K $0.07/$0.40/$0.01 Сверхдешевая модель с приоритетным GPU, но лимитами RPM (избегайте для частого использования)
glm-4.7-flash ✅ Гибрид 200K 128K Free/Free/Free Бесплатная модель ~30B уровня SOTA, 1 одновременный запрос

Серия GLM-4.6 - сбалансированная с автоматическим мышлением

Идентификатор модели Мышление Контекст Макс. вывод Цена (вход/выход/кэш) Варианты использования
glm-4.6 ✅ Авто 200K 128K $0.60/$2.20/$0.11 Сбалансированная, потоковые вызовы инструментов, эффективное использование токенов

Серия GLM-4.5 - унифицированные рассуждения/кодирование/агенты

Идентификатор модели Мышление Контекст Макс. вывод Цена (вход/выход/кэш) Варианты использования
glm-4.5 ✅ Авто 128K 96K $0.60/$2.20/$0.11 Унифицированная, MoE 355B/32B активных
glm-4.5-x ✅ Авто 128K 96K $2.20/$8.90/$0.45 Сверхбыстрая премиум-модель, минимальная задержка
glm-4.5-air* ✅ Авто 128K 96K $0.20/$1.10/$0.03 Экономичная MoE 106B/12B (по умолчанию для simple/simple_json/reflector/searcher/enricher/installer)
glm-4.5-airx ✅ Авто 128K 96K $1.10/$4.50/$0.22 Ускоренная Air с приоритетным GPU
glm-4.5-flash ✅ Авто 128K 96K Free/Free/Free Бесплатная с поддержкой рассуждений/кодирования/агентов
GLM-4 Legacy — плотная архитектура
ID модели Рассуждение Контекст Макс. вывод Цена (ввод/вывод) Вариант использования
glm-4-32b-0414-128k ❌ 128K 16K $0.10/$0.10 Сверхбюджетная плотная модель 32B, парсинг без рассуждений

Цены: За 1 млн токенов. Цена кэша указана для попадания в кэш промпта; хранение кэша в настоящее время бесплатно по акции Z.AI. GLM-4-32B не поддерживает кэширование.

Конфигурация агента по умолчанию:

Стратегия: glm-5.2 (новейший флагман, $1.40 за ввод) для критических рассуждений, glm-5-turbo (нативный для OpenClaw, оптимизирован для агентов) для оркестрации, glm-4.5-air (дешевая MoE с гибридным мышлением и надежным RPM) для всех служебных/установочных агентов. glm-4.7-flashx не используется по умолчанию из-за более низких лимитов RPM, вызывающих частые ошибки 429 при высокой частоте запросов.

Роль агента Модель по умолчанию Рассуждение Температура Top P Макс. вывод
Генератор / Уточнитель glm-5.2 Включено 1.0 0.95 32768
Кодер glm-5.2 Включено 1.0 0.95 20480
Советник / Пентестер glm-5.2 Включено 1.0 0.95 16384
Основной агент / Ассистент glm-5-turbo Включено 1.0 0.95 16384
Установщик glm-4.5-air Включено 1.0 0.95 16384
Простой / Рефлектор glm-4.5-air Отключено 0.6 0.9 8192
Поисковик / Обогатитель / Простой JSON glm-4.5-air Отключено 0.6 0.9 4096

Генератор, уточнитель и советник дополнительно устанавливают reasoning.effort: max, что добавляет llms.WithReasoning(ReasoningMax, 0) поверх extra_body.thinking.type=enabled — этот параметр reasoning_effort поддерживается только моделью glm-5.2.

Примечание о температуре: GLM принимает как 1.0, так и 0.6 в любом режиме (с рассуждениями или без) (согласно документации Z.AI). IsReasoningModel из langchaingo сопоставляет префиксы glm-4.5*/glm-4.6*/glm-4.7* и принудительно переопределяет температуру на 1.0 в createChatRequest — это безвредно для GLM (в отличие от Kimi), но означает, что значения температуры для этих моделей в YAML носят рекомендательный характер. glm-5/glm-5.1/glm-5.2/glm-5-turbo не сопоставляются, поэтому явные значения передаются без изменений.

Режимы рассуждений: - Гибридный (GLM-5.x, GLM-4.7): Явное переключение через extra_body.thinking.type - Авто (GLM-4.6, серия GLM-4.5): Модель автоматически определяет, когда необходимы рассуждения - Усилия рассуждений (только GLM-5.2): поддерживает явный параметр reasoning_effort (high/max) поверх гибридного мышления для более точного контроля глубины рассуждений, чем другие модели GLM-5.x - Сохраненные рассуждения (возможность Z.AI Coding): все агенты с включенными рассуждениями в PentAGI также передают extra_body.thinking.clear_thinking: false, чтобы reasoning_content из предыдущих ответов ассистента сохранялось на протяжении всего диалога. Это требуется на стандартной конечной точке API (/api/paas/v4) — на конечной точке Coding Plan это было бы включено по умолчанию. Улучшает непрерывность рассуждений и частоту попаданий в кэш в многошаговых цепочках вызовов инструментов. - Все агенты с включенными рассуждениями также передают extra_body.tool_choice: auto в защитных целях

Ключевые особенности: - Многоэтапные задачи: GLM-5.1 поддерживает непрерывное автономное выполнение в течение 8 часов, идеально подходит для сложных многоступенчатых агентных рабочих процессов - Нативная оркестрация OpenClaw: GLM-5-Turbo специально оптимизирован для вызова инструментов, следования инструкциям и длинных цепочек выполнения - Кэширование промптов: Значительное снижение затрат при повторении контекста (указаны цены для кэшированного ввода) - Сверхдлинный контекст: 200K токенов для серий GLM-5.x/4.7/4.6 - Архитектура MoE: Эффективная модель 744B/40B активных (GLM-5/5.1), 355B/32B (GLM-4.5), 106B/12B (GLM-4.5-Air) - Вызов инструментов: Бесшовная интеграция с 20+ инструментами пентеста через вызов функций - Стриминг: Стриминг в реальном времени с поддержкой стриминговых вызовов инструментов (GLM-4.6+) - Многоязычность: Исключительные возможности NLP на китайском и английском языках - Бесплатные опции: GLM-4.7-Flash и GLM-4.5-Flash для прототипирования и экспериментов Интеграция с LiteLLM: Установите GLM_PROVIDER=zai, чтобы включить добавление префикса к имени модели при использовании конфигураций PentAGI по умолчанию с прокси LiteLLM. Оставьте пустым для прямого использования API.

Конфигурация провайдера Kimi

PentAGI интегрируется с Kimi от Moonshot AI, предоставляя модели со сверхдлинным контекстом и мультимодальными возможностями, идеально подходящие для анализа обширных кодовых баз и документации.

Переменные конфигурации

Переменная Значение по умолчанию Описание
KIMI_API_KEY Ключ API Kimi для аутентификации
KIMI_SERVER_URL https://api.moonshot.ai/v1 URL конечной точки API Kimi (международный)
KIMI_PROVIDER Префикс провайдера для интеграции с LiteLLM (необязательно)

Примеры конфигурации

# Direct API usage (international endpoint)
KIMI_API_KEY=your_kimi_api_key
KIMI_SERVER_URL=https://api.moonshot.ai/v1

# Alternative endpoint
KIMI_SERVER_URL=https://api.moonshot.cn/v1  # China

# With LiteLLM proxy
KIMI_API_KEY=your_litellm_key
KIMI_SERVER_URL=http://litellm-proxy:4000
KIMI_PROVIDER=moonshot  # Adds prefix to model names (moonshot/kimi-k2.5) for LiteLLM

Поддерживаемые модели

PentAGI поддерживает 11 моделей Kimi/Moonshot с вызовом инструментов, потоковой передачей, гибридными режимами мышления и мультимодальными возможностями (текст/изображение/видео для K2.x). Все устаревшие модели kimi-k2-* (turbo-preview, 0905-preview, 0711-preview, thinking, thinking-turbo) были удалены Moonshot 25 мая 2026 года и НЕ включены. Модели, отмеченные *, используются в конфигурации по умолчанию.

Kimi K3 — флагман (всегда рассуждает)

Идентификатор модели Мышление Мультимодальность Контекст Цена (промах ввода / вывод / попадание в кэш) Вариант использования
kimi-k3* ✅ всегда ❌ 1M $3.00 / $15.00 / $0.30 Флагман для долгосрочного программирования и сквозной работы со знаниями. Всегда рассуждает — нет переключателя thinking, глубина задается через верхнеуровневый reasoning_effort (в настоящее время только max) (по умолчанию для генератора/уточнителя/советника)

Серия Kimi K2.7 Code — ориентированная на программирование

Идентификатор модели Мышление Мультимодальность Контекст Цена (промах ввода / вывод / попадание в кэш) Вариант использования
kimi-k2.7-code* ✅ гибридное ✅ 256K $0.95 / $4.00 / $0.19 Ориентирована на программирование, более высокий процент успеха в задачах с длинным контекстом (по умолчанию для кодера/пентестера)
kimi-k2.7-code-highspeed* ✅ гибридное ✅ 256K $1.90 / $8.00 / $0.38 Та же модель, что и kimi-k2.7-code, но с более высокой пропускной способностью вывода (~180-260 токенов/с) (по умолчанию для основного агента/ассистента)

Серия Kimi K2.x — мультимодальный флагман

Идентификатор модели Мышление Мультимодальность Контекст Цена (промах ввода / вывод / попадание в кэш) Вариант использования
kimi-k2.6 ✅ гибридное ✅ 256K $0.95 / $4.00 / $0.16 Последний мультимодальный флагман: нативная архитектура, более сильный код, улучшенное следование инструкциям (не используется в конфигурации по умолчанию)
kimi-k2.5* ✅ гибридное ✅ 256K $0.60 / $3.00 / $0.10 Предыдущее поколение: ввод на 36% дешевле, чем у K2.6 (по умолчанию для simple/simple_json/reflector/searcher/enricher/installer)

Серия Moonshot V1 — модели генерации (гибкие параметры)

Идентификатор модели Мышление Мультимодальность Контекст Цена (ввод / вывод) Вариант использования
moonshot-v1-8k ❌ ❌ 8K $0.20 / $2.00 Генерация коротких текстов, сверхдешево
moonshot-v1-32k ❌ ❌ 32K $1.00 / $3.00 Генерация длинных текстов
moonshot-v1-128k ❌ ❌ 128K $2.00 / $5.00 Очень длинный контекст

Серия Moonshot V1 Vision — понимание изображений

Идентификатор модели Мышление Мультимодальность Контекст Цена (ввод / вывод) Вариант использования
moonshot-v1-8k-vision-preview ❌ ✅ 8K $0.20 / $2.00 Зрение + короткий контекст
moonshot-v1-32k-vision-preview ❌ ✅ 32K $1.00 / $3.00 Зрение + средний контекст
moonshot-v1-128k-vision-preview ❌ ✅ 128K $2.00 / $5.00 Зрение + длинный контекст
Цены: за 1 млн токенов. Цены на кэш применяются к токенам запроса, обслуживаемым из автоматического контекстного кэша (только модели Kimi K3/K2.7/K2.x поддерживают кэш).

КРИТИЧЕСКИ ВАЖНО — ограничения параметров Kimi для каждого семейства моделей: API возвращает invalid_request_error при любом отклонении: - kimi-k3: всегда рассуждает, параметр thinking отсутствует вовсе; глубина рассуждений задается через поле верхнего уровня reasoning_effort (low/high/max, по умолчанию max) — PentAGI фиксирует его на max для всех агентов, использующих эту модель. temperature ДОЛЖЕН быть 1.0, top_p ДОЛЖЕН быть 0.95, n ДОЛЖЕН быть 1, presence_penalty/frequency_penalty ДОЛЖНЫ быть 0. Не переключайте effort при каждом вызове — это инвалидирует префиксный кэш. - kimi-k2.7-code / kimi-k2.7-code-highspeed: thinking может быть опущен; если задан явно, принимается только {"type":"enabled","keep":"all"} (type: disabled отклоняется). reasoning_effort не поддерживается. temperature ДОЛЖЕН быть 1.0, top_p ДОЛЖЕН быть 0.95, n ДОЛЖЕН быть 1; tool_choice: required не поддерживается (используйте auto). - kimi-k2.6: режим мышления требует temperature=1.0, top_p=0.95, n=1, thinking.keep="all"; режим без мышления требует temperature=0.6, top_p=0.95, n=1. - kimi-k2.5: режим мышления требует temperature=1.0, top_p=0.95, n=1 (без поддержки keep); режим без мышления требует temperature=0.6, top_p=0.95, n=1. - Все модели Kimi: presence_penalty=0, frequency_penalty=0, tool_choice в {auto, none}.

Модели Moonshot V1 используют стандартные параметры, совместимые с OpenAI, без таких ограничений.

Конфигурация агентов по умолчанию:

Стратегия: kimi-k2.5 для утилит/оркестрации, kimi-k2.7-code-highspeed для основного/ассистентского цикла, kimi-k3 (всегда думающий флагман) для критического мышления (генератор/рефайнер/советник), kimi-k2.7-code для кодера/пентестера. kimi-k2.6 не используется в конфигурации по умолчанию. Все агенты kimi-k2.x/k2.7 настроены с фиксированными параметрами, требуемыми API (temp/top_p/n) и явным extra_body.thinking.type. Для агентов с включенным мышлением установлено extra_body.thinking.keep: "all" (где поддерживается), чтобы сохранять исторический reasoning_content в многоходовых цепочках вызовов инструментов (без этого Moonshot возвращает "thinking is enabled but reasoning_content is missing").

Роль агента Модель по умолчанию Мышление Температура Top P Макс. вывод
Генератор / Рефайнер kimi-k3 Всегда (effort=max) 1.0 0.95 32768
Советник (ментор/планировщик) kimi-k3 Всегда (effort=max) 1.0 0.95 8192
Кодер kimi-k2.7-code Включено (keep=all) 1.0 0.95 20480
Пентестер kimi-k2.7-code Включено (keep=all) 1.0 0.95 16384
Основной агент / Ассистент kimi-k2.7-code-highspeed Включено (keep=all) 1.0 0.95 16384
Установщик kimi-k2.5 Включено 1.0 0.95 16384
Рефлектор / Искатель / Обогащатель kimi-k2.5 Отключено 0.6 0.95 4096
Простой kimi-k2.5 Отключено 0.6 0.95 8192
Простой JSON kimi-k2.5 Отключено 0.6 0.95 4096

Примечание: для агентов kimi-k2.5 без мышления PentAGI также дублирует temperature: 0.6 в extra_body как обходной путь — IsReasoningModel из langchaingo сопоставляет подстроку 2.5 и принудительно переопределяет температуру на 1.0, а extra_body обходит это переопределение.

Ключевые особенности: - Всегда включенный флагман рассуждений: kimi-k3 никогда не отключает мышление и предлагает контекст на 1M токенов для самых требовательных задач длительного программирования и работы со знаниями - Сверхдлинный контекст: до 256K токенов (K2.7/K2.x) или 1M токенов (K3) для всестороннего анализа кодовой базы/документации - Нативная мультимодальность: K2.7/K2.6/K2.5 поддерживают ввод текста + изображений + видео из коробки - Гибридное мышление: K2.7/K2.6/K2.5 переключаются между режимом мышления и без него через extra_body.thinking.type - Сохранённое мышление (K2.7, K2.6): thinking.keep: "all" сохраняет историческое reasoning_content между ходами — требуется для многоходовых цепочек вызовов инструментов - Автоматическое кэширование контекста: модели K3/K2.7/K2.x кэшируют повторяющиеся префиксы - Вызов инструментов: полная поддержка вызова функций для K3, K2.7, K2.x и Moonshot V1 - Варианты, оптимизированные для кодирования: kimi-k2.7-code/kimi-k2.7-code-highspeed нацелены на более высокие показатели успеха в задачах программирования с длинным контекстом, при этом вариант highspeed оптимизирован для пропускной способности - Многоязычность: поддержка китайского, английского и других языков

Многоходовые сценарии с мышлением и вызовом инструментов: универсальный шаблон сохранения рассуждений PentAGI (TextPartWithReasoning + WithPreserveReasoningContent) автоматически гарантирует, что reasoning_content отправляется обратно в требуемом порядке TextContent → ToolCall, удовлетворяя требованию Moonshot «мышление включено, но reasoning_content отсутствует в сообщении вызова инструмента ассистента».

Интеграция с LiteLLM: Установите KIMI_PROVIDER=moonshot, чтобы включить добавление префикса к имени модели при использовании стандартных конфигураций PentAGI с прокси LiteLLM. Оставьте пустым для прямого использования API.

Конфигурация провайдера Qwen

PentAGI интегрируется с Qwen из Alibaba Cloud Model Studio (DashScope), предоставляя мощные многоязычные модели с возможностями рассуждения и поддержкой кэширования контекста.

Переменные конфигурации

Переменная Значение по умолчанию Описание
QWEN_API_KEY Ключ API Qwen для аутентификации
QWEN_SERVER_URL https://dashscope-us.aliyuncs.com/compatible-mode/v1 URL конечной точки API Qwen (международный)
QWEN_PROVIDER Префикс провайдера для интеграции с LiteLLM (необязательно)

Примеры конфигурации

# Direct API usage (Global/US endpoint)
QWEN_API_KEY=your_qwen_api_key
QWEN_SERVER_URL=https://dashscope-us.aliyuncs.com/compatible-mode/v1

# Alternative endpoints
QWEN_SERVER_URL=https://dashscope-intl.aliyuncs.com/compatible-mode/v1  # International (Singapore)
QWEN_SERVER_URL=https://dashscope.aliyuncs.com/compatible-mode/v1       # Chinese Mainland (Beijing)

# With LiteLLM proxy
QWEN_API_KEY=your_litellm_key
QWEN_SERVER_URL=http://litellm-proxy:4000
QWEN_PROVIDER=dashscope  # Adds prefix to model names (dashscope/qwen-plus) for LiteLLM

Поддерживаемые модели

PentAGI поддерживает 33 модели Qwen, подобранные для агентских рабочих процессов: текстовые рассуждения, генерация кода и визуально-языковые (скриншоты браузера). Все модели являются основными псевдонимами без снимков с поддержкой вызова инструментов, потоковой передачи, режимов мышления и кэширования контекста. Модели, отмеченные *, используются в стандартной конфигурации.

Флагманские модели (рассуждения высшего уровня)

Идентификатор модели Мышление Междунар. Global/US Китай Цена (вход/выход/кэш) Вариант использования
qwen3.7-max* ✅ ✅ ✅ ✅ $2.50/$7.50/$0.50 Флагман нового поколения для эры агентов (по умолчанию генератор/уточнитель/советник)
qwen3.6-max-preview ✅ ✅ ✅ ✅ $1.30/$7.80/$0.13 Предварительная версия Max с улучшенным vibe-кодингом и навыками фронтенда
qwen3-max ✅ ✅ ✅ ✅ $1.20/$6.00/$0.24 Флагман предыдущего поколения с обновлениями для агентного программирования
qwen-plus ✅ ✅ ✅ ✅ $0.40/$4.00/$0.08 Plus на основе Qwen3 с переключаемыми режимами мышления

Сбалансированные модели Plus (средний уровень)

Идентификатор модели Мышление Междунар. Global/US Китай Цена (вход/выход/кэш) Вариант использования
qwen3.6-plus* ✅ ✅ ✅ ✅ $0.50/$3.00/$0.05 Нативный VL Plus с агентным кодированием (по умолчанию основной/ассистент/пентестер)
qwen3.5-plus ✅ ✅ ✅ ✅ $0.40/$2.40/$0.04 Предыдущий нативный VL с сильными мультимодальными возможностями

Быстрые модели Flash (оптимизированные по стоимости)

Идентификатор модели Мышление Междунар. Global/US Китай Цена (вход/выход/кэш) Вариант использования
qwen3.6-flash ✅ ✅ ✅ ✅ $0.25/$1.50/$0.025 Последняя Flash со значительным улучшением агентного кодирования
qwen3.5-flash* ✅ ✅ ✅ ✅ $0.10/$0.40/$0.01 Сверхбыстрая легковесная (по умолчанию для простых/рефлектора/поисковика/обогатителя)
qwen-flash ✅ ✅ ✅ ✅ $0.05/$0.40/$0.01 Flash серии Qwen3 с контекстом 1M и многоуровневыми ценами
Модели, специализированные для кода
ID модели Мышление Междунар. Глобальная/США Китай Цена (вход/выход/кэш) Применение
qwen3-coder-plus* ❌ ✅ ✅ ✅ $1.00/$5.00/$0.20 Мощный кодовый агент с автономным программированием (по умолчанию для кодера)
qwen3-coder-flash* ❌ ✅ ✅ ✅ $0.30/$1.50/$0.06 Быстрая генерация кода с устойчивостью многоходовых инструментов (по умолчанию для установщика)
qwen3-coder-next ❌ ✅ ✅ ✅ $0.30/$1.50/— Генерация кода с открытым исходным кодом, передовой результат в том же масштабе

Мультимодальные модели (анализ браузера и скриншотов)

ID модели Мышление Междунар. Глобальная/США Китай Цена (вход/выход/кэш) Применение
qwen3-vl-plus ✅ ✅ ✅ ✅ $0.20/$1.60/$0.04 Мультимодальная модель с возможностями визуального агента, понимание сверхдлинных видео
qwen3-vl-flash ✅ ✅ ✅ ✅ $0.05/$0.40/$0.01 Компактная мультимодальная модель с 2D/3D локализацией для сортировки браузера
qvq-max ✅ ✅ ✅ ✅ $1.20/$4.80/— Визуальное рассуждение с цепочкой мыслей

Серия Qwen3.6 с открытым исходным кодом

ID модели Мышление Междунар. Глобальная/США Китай Цена (вход/выход/кэш) Применение
qwen3.6-27b ✅ ✅ ✅ ✅ $0.60/$3.60/— Нативная мультимодальная модель на гибридной архитектуре, готова для локального развертывания
qwen3.6-35b-a3b ✅ ✅ ✅ ✅ $0.25/$1.49/— Эффективная модель MoE 35B (~3B активных) для непрерывного мониторинга

Серия Qwen3.5 с открытым исходным кодом

ID модели Мышление Междунар. Глобальная/США Китай Цена (вход/выход/кэш) Применение
qwen3.5-397b-a17b ✅ ✅ ✅ ✅ $0.60/$3.60/— Крупнейшая модель с 397B параметрами (~17B активных), исключительное рассуждение
qwen3.5-122b-a10b ✅ ✅ ✅ ✅ $0.40/$3.20/— Большая модель с 122B параметрами (~10B активных), хороший баланс
qwen3.5-35b-a3b ✅ ✅ ✅ ✅ $0.25/$2.00/— Эффективная модель MoE 35B (~3B активных), экономичная
qwen3.5-27b ✅ ✅ ✅ ✅ $0.30/$2.40/— Средняя модель 27B с гибридным линейным вниманием и разреженной MoE

Серия Qwen3 Coder с открытым исходным кодом

ID модели Мышление Междунар. Глобальная/США Китай Цена (вход/выход/кэш) Применение
qwen3-coder-480b-a35b-instruct ❌ ✅ ✅ ✅ $1.50/$7.50/— Крупнейшая открытая кодовая MoE (480B/~35B активных)
qwen3-coder-30b-a3b-instruct ❌ ✅ ✅ ✅ $0.45/$2.25/— Эффективная модель MoE 30B (~3B активных), масштаб репозитория

Серия Qwen3 Dense и MoE с открытым исходным кодом

ID модели Мышление Междунар. Глобальная/США Китай Цена (вход/выход/кэш) Применение
qwen3-next-80b-a3b-thinking ✅ ✅ ✅ ✅ $0.15/$1.20/— Новое поколение MoE 80B (~3B активных), только мышление
qwen3-next-80b-a3b-instruct ❌ ✅ ✅ ✅ $0.15/$1.20/— Новое поколение MoE 80B, следование инструкциям
qwen3-235b-a22b ✅ ✅ ✅ ✅ $0.70/$8.40/— Двухрежимная MoE 235B (~22B активных)
qwen3-32b ✅ ✅ ✅ ✅ $0.16/$0.64/— Универсальная плотная модель 32B с двумя режимами
qwen3-30b-a3b ✅ ✅ ✅ ✅ $0.20/$2.40/— Эффективная MoE 30B (~3B активных)
qwen3-14b ✅ ✅ ✅ ✅ $0.35/$4.20/— Средняя плотная модель 14B, баланс производительности и стоимости
qwen3-8b ✅ ✅ ✅ ✅ $0.18/$2.10/— Компактная плотная модель 8B, эффективность
qwen3-4b ✅ ✅ ✅ ✅ $0.11/$1.26/— Легкая плотная модель 4B для простых задач
qwen3-1.7b ✅ ✅ ✅ ✅ $0.11/$1.26/— Сверхкомпактная модель 1.7B для базовых проверок
qwen3-0.6b ✅ ✅ ✅ ✅ $0.11/$1.26/— Самая маленькая модель 0.6B для мониторинга на периферии
Цены: За 1 млн токенов. Цены на кэш отражают неявное попадание в кэш (когда доступно); открытые модели MoE/dense не раскрывают цены на кэш. Многоуровневые модели (Max/Plus) показывают цены самого низкого уровня (обычно ≤32k или ≤256k входных токенов); более крупные контексты влекут более высокие тарифы согласно ценам Alibaba Cloud.

Доступность регионов: - Intl (Международный): регион Сингапур (dashscope-intl.aliyuncs.com) - Global/US (Глобальный/США): регион Вирджиния, США (dashscope-us.aliyuncs.com) - China (Китай): материковый Китай, регион Пекин (dashscope.aliyuncs.com)

Конфигурация агентов по умолчанию:

Роль агента Модель по умолчанию Уровень
Генератор / Рефайнер / Советник (планирование, ментор) qwen3.7-max Флагман
Основной / Ассистент / Пентестер qwen3.6-plus Сбалансированный
Кодер (разработка эксплойтов) qwen3-coder-plus Код+
Установщик (настройка окружения) qwen3-coder-flash Код Быстрый
Простой / Рефлектор / Поисковик / Обогатитель qwen3.5-flash Быстрый

Ключевые особенности: - Агентно-ориентированный дизайн: Qwen3.7-Max специально создан для длительной автономной работы и вызова инструментов - Автоматическое кэширование контекста: снижение затрат на 30-50% при повторном использовании контекста с неявным кэшем - Расширенное мышление: цепочка рассуждений для сложного анализа безопасности (Qwen3.7/3.6/3.5/3-Max, QVQ-Max) - Специализация на коде: серия Qwen3-Coder с многошаговым взаимодействием с инструментами и пониманием на уровне репозитория - Зрение и язык: серия Qwen3-VL для анализа скриншотов браузера, 2D/3D локализации, анализа на уровне OCR - Вызов инструментов: бесшовная интеграция с более чем 20 инструментами пентеста через вызов функций - Потоковая передача: потоковые ответы в реальном времени для интерактивных рабочих процессов - Многоязычность: сильная поддержка китайского, английского и других языков - Варианты с открытым исходным кодом: модели Dense и MoE от 0.6B до 480B для локальных/изолированных развертываний

Интеграция LiteLLM: Установите QWEN_PROVIDER=dashscope, чтобы включить префиксацию имени модели при использовании конфигураций PentAGI по умолчанию с прокси LiteLLM. Оставьте пустым для прямого использования API.

Альтернативные интеграции

DashScope полностью совместим с OpenAI, поэтому Qwen также может питать две другие подсистемы PentAGI через стандартный клиент OpenAI.

Как провайдер эмбеддингов (text-embedding-v4, см. цены Alibaba Cloud Model Studio):

EMBEDDING_PROVIDER=openai
EMBEDDING_URL=https://dashscope-intl.aliyuncs.com/compatible-mode/v1  # International (Singapore)
# EMBEDDING_URL=https://dashscope.aliyuncs.com/compatible-mode/v1     # Chinese Mainland
EMBEDDING_KEY=sk-*******
EMBEDDING_MODEL=text-embedding-v4
EMBEDDING_BATCH_SIZE=         # optional, default applies
EMBEDDING_STRIP_NEW_LINES=    # optional, default applies

Примечание: глобальный/американский эндпоинт DashScope (dashscope-us.aliyuncs.com) не предоставляет API эмбеддингов — используйте международные или китайские эндпоинты для text-embedding-v4.

Как пользовательский LLM-провайдер с OpenAI-типом: вместо специальных переменных QWEN_* вы можете подключить любую чат-модель Qwen через пользовательского провайдера PentAGI, совместимого с OpenAI, указав OPENAI_SERVER_URL (или пользовательскую запись провайдера) на эндпоинт DashScope /compatible-mode/v1 и выбрав нужное имя модели Qwen. Полезно, когда вы уже управляете всем трафиком моделей через единый клиент в форме OpenAI (например, общий с прокси LiteLLM/OneAPI).

Конфигурация провайдера MiniMax

PentAGI интегрируется с M-серией MiniMax через совместимый с OpenAI эндпоинт https://api.minimax.io/v1: агентные модели с большим контекстом, вызовом инструментов, JSON-выводом и потоковой передачей.

Переменные конфигурации

Переменная Значение по умолчанию Описание
MINIMAX_API_KEY Ключ API MiniMax для аутентификации
MINIMAX_SERVER_URL https://api.minimax.io/v1 URL эндпоинта API MiniMax
MINIMAX_PROVIDER Префикс провайдера для интеграции LiteLLM (необязательно)

Примеры конфигурации

# Direct API usage
MINIMAX_API_KEY=your_minimax_api_key
MINIMAX_SERVER_URL=https://api.minimax.io/v1

# With LiteLLM proxy
MINIMAX_API_KEY=your_litellm_key
MINIMAX_SERVER_URL=http://litellm-proxy:4000
MINIMAX_PROVIDER=minimax  # Adds prefix to model names (minimax/MiniMax-M3) for LiteLLM

Поддерживаемые модели

PentAGI поставляется с 3 моделями MiniMax с вызовом инструментов, JSON-выводом и потоковой передачей. MiniMax-M3 — модель по умолчанию для всех типов агентов.

ID модели Контекст Цена (вход/выход, ≤512K контекста) Вариант использования
MiniMax-M3* ~1M $0.30/$1.20 (в 2 раза выше 512K токенов) Последний флагман для агентных рассуждений, использования инструментов, генерации кода и задач с длинным контекстом (по умолчанию)
MiniMax-M2.7 204K $0.30/$1.20 Модель предыдущего поколения с сильными рассуждениями и кодированием
MiniMax-M2.7-highspeed 204K $0.60/$2.40 Вариант M2.7 с низкой задержкой для сценариев быстрого ответа
Интеграция с LiteLLM: Установите MINIMAX_PROVIDER=minimax, чтобы включить префиксацию имени модели при использовании стандартных конфигураций PentAGI с прокси LiteLLM. Оставьте пустым для прямого использования API.

Расширенная настройка

Интеграция с Langfuse

Langfuse предоставляет расширенные возможности для мониторинга и анализа операций AI-агентов.

  1. Настройте переменные окружения Langfuse в существующем файле .env.

Полезные переменные окружения Langfuse

Учётные данные базы данных

  • LANGFUSE_POSTGRES_USER и LANGFUSE_POSTGRES_PASSWORD — учётные данные PostgreSQL для Langfuse
  • LANGFUSE_CLICKHOUSE_USER и LANGFUSE_CLICKHOUSE_PASSWORD — учётные данные ClickHouse
  • LANGFUSE_REDIS_AUTH — пароль Redis

Ключи шифрования и безопасности

  • LANGFUSE_SALT — соль для хеширования в веб-интерфейсе Langfuse
  • LANGFUSE_ENCRYPTION_KEY — ключ шифрования (32 байта в hex)
  • LANGFUSE_NEXTAUTH_SECRET — секретный ключ для NextAuth

Учётные данные администратора

  • LANGFUSE_INIT_USER_EMAIL — email администратора
  • LANGFUSE_INIT_USER_PASSWORD — пароль администратора
  • LANGFUSE_INIT_USER_NAME — имя пользователя администратора

API-ключи и токены

  • LANGFUSE_INIT_PROJECT_PUBLIC_KEY — публичный ключ проекта (также используется со стороны PentAGI)
  • LANGFUSE_INIT_PROJECT_SECRET_KEY — секретный ключ проекта (также используется со стороны PentAGI)

Хранилище S3

  • LANGFUSE_S3_ACCESS_KEY_ID — идентификатор ключа доступа S3
  • LANGFUSE_S3_SECRET_ACCESS_KEY — секретный ключ доступа S3
  1. Включите интеграцию с Langfuse для сервиса PentAGI в файле .env.
LANGFUSE_BASE_URL=http://langfuse-web:3000
LANGFUSE_PROJECT_ID= # default: value from ${LANGFUSE_INIT_PROJECT_ID}
LANGFUSE_PUBLIC_KEY= # default: value from ${LANGFUSE_INIT_PROJECT_PUBLIC_KEY}
LANGFUSE_SECRET_KEY= # default: value from ${LANGFUSE_INIT_PROJECT_SECRET_KEY}
  1. Запустите стек Langfuse:
curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/master/docker-compose-langfuse.yml
docker compose -f docker-compose.yml -f docker-compose-langfuse.yml up -d

Посетите localhost:4000 для доступа к веб-интерфейсу Langfuse с учётными данными из файла .env:

  • LANGFUSE_INIT_USER_EMAIL — email администратора
  • LANGFUSE_INIT_USER_PASSWORD — пароль администратора

Мониторинг и наблюдаемость

Для детального отслеживания работы системы доступна интеграция с инструментами мониторинга.

  1. Включите интеграцию с OpenTelemetry и всеми сервисами наблюдаемости для PentAGI в файле .env.
OTEL_HOST=otelcol:8148
  1. Запустите стек наблюдаемости:
curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/master/docker-compose-observability.yml
docker compose -f docker-compose.yml -f docker-compose-observability.yml up -d

Посетите localhost:3000 для доступа к веб-интерфейсу Grafana.

[!NOTE] Если вы хотите использовать стек наблюдаемости вместе с Langfuse, вам нужно включить интеграцию в файле .env, чтобы установить LANGFUSE_OTEL_EXPORTER_OTLP_ENDPOINT в http://otelcol:4318.

Чтобы запустить все доступные стеки вместе (Langfuse, Graphiti и Observability):

bash docker compose -f docker-compose.yml -f docker-compose-langfuse.yml -f docker-compose-graphiti.yml -f docker-compose-observability.yml up -d

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

bash alias pentagi="docker compose -f docker-compose.yml -f docker-compose-langfuse.yml -f docker-compose-graphiti.yml -f docker-compose-observability.yml" alias pentagi-up="docker compose -f docker-compose.yml -f docker-compose-langfuse.yml -f docker-compose-graphiti.yml -f docker-compose-observability.yml up -d" alias pentagi-down="docker compose -f docker-compose.yml -f docker-compose-langfuse.yml -f docker-compose-graphiti.yml -f docker-compose-observability.yml down"

Интеграция с графом знаний (Graphiti)

[!IMPORTANT] Graphiti — это опциональная бета-интеграция и по умолчанию отключена. Ознакомьтесь с Ограничениями и безопасностью перед включением в производственной среде.

PentAGI интегрируется с Graphiti — системой темпоральных графов знаний на основе Neo4j, чтобы обеспечить расширенное семантическое понимание и отслеживание связей для операций AI-агентов. Форк vxcontrol предоставляет пользовательские типы сущностей и рёбер, специфичные для целей пентестинга.

Что такое Graphiti?

Graphiti асинхронно извлекает структурированные знания из взаимодействий агента и строит граф сущностей, отношений, доказательств и временного контекста. PentAGI отправляет ответы агента и результаты выполнения инструментов в Graphiti и предоставляет инструмент graphiti_search включённым агентам. Graphiti дополняет основную память pgvector; он не заменяет её.

  • Семантическая память: Хранение и восстановление связей между инструментами, целями, уязвимостями и техниками
  • Контекстное понимание: Отслеживание того, как различные действия пентеста соотносятся друг с другом с течением времени
  • Вспоминание в рамках потока: Повторное использование знаний в активном потоке без раскрытия данных из других задач по умолчанию
  • Расширенные запросы: Поиск по временному контексту, связям, успешным инструментам, недавним эпизодам и сущностям по типу

При включении PentAGI сохраняет ответы агента, детали выполнения инструментов и контекст потоков/задач/подзадач. Приём данных асинхронный, поэтому вновь отправленные события могут стать доступными для поиска не сразу.

Режимы развертывания и включение

Graphiti может работать как встроенный стек Neo4j + Graphiti, как внешний сервис или оставаться отключённым.

Для встроенного стека настройте .env:

GRAPHITI_ENABLED=true
GRAPHITI_TIMEOUT=30
GRAPHITI_URL=http://graphiti:8000
GRAPHITI_LLM_CLIENT_TYPE=openai

# Reused by the Graphiti OpenAI preset
OPEN_AI_KEY=your_openai_api_key
OPEN_AI_SERVER_URL=https://api.openai.com/v1

# Bundled Neo4j
NEO4J_USER=neo4j
NEO4J_DATABASE=neo4j
NEO4J_PASSWORD=replace_with_a_strong_password
NEO4J_URI=bolt://neo4j:7687

При ручной установке загрузите дополнительный compose-файл, затем запустите оба стека:

curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/master/docker-compose-graphiti.yml
docker compose -f docker-compose.yml -f docker-compose-graphiti.yml up -d

Базовый стек должен создать внешнюю сеть pentagi-network до запуска стека Graphiti. Установщик автоматически обрабатывает порядок запуска стеков.

Для внешнего развертывания Graphiti установите GRAPHITI_ENABLED=true и укажите GRAPHITI_URL на его API. Не запускайте docker-compose-graphiti.yml; настройте провайдеров, эмбеддинги, графовую базу данных и параметры приёма данных на самом внешнем сервисе.

PentAGI включает свой клиент только когда и GRAPHITI_ENABLED=true, и GRAPHITI_URL не пуст. При запуске выполняется три попытки проверки работоспособности с двухсекундной задержкой. Если все они завершаются неудачей, PentAGI записывает предупреждение и продолжает работу с отключённым Graphiti.

Провайдер LLM и пресеты моделей

GRAPHITI_LLM_CLIENT_TYPE выбирает один пресет для всего развертывания. Имена моделей и параметры вызовов не являются переменными окружения; они находятся в graphiti/<provider>.yaml.

Пресет Учётные данные и конечная точка Основная модель
openai OPEN_AI_KEY, OPEN_AI_SERVER_URL openai/gpt-5-mini
gemini GEMINI_API_KEY, GEMINI_SERVER_URL gemini/gemini-2.5-flash-lite
custom LLM_SERVER_KEY, LLM_SERVER_URL Qwen/Qwen3.6-27B-FP8
litellm GRAPHITI_LITELLM_API_KEY, GRAPHITI_LITELLM_BASE_URL openrouter/openai/gpt-oss-20b

Пресет Gemini использует клиентский путь Graphiti через LiteLLM/OpenAI-совместимый. Укажите GEMINI_SERVER_URL на совместимый шлюз, если нативный конечный точка Gemini не предоставляет требуемый OpenAI-совместимый API.

Каждый файл пресета должен содержать соответствующий provider, а также сопоставления MODEL_NAME и SMALL_MODEL_NAME. Малая модель используется для реранжирования и более лёгких вызовов. Поддерживаемые настройки вызовов включают температуру, лимиты токенов, параметры сэмплирования и штрафов, JSON-режим, усилия рассуждения, многословность, метаданные ценообразования и специфичные для провайдера extra_body.

Установщик копирует examples/graphiti рядом с установкой как ./graphiti. Монтирование compose управляется:

GRAPHITI_CONFIG_PATH=./graphiti
GRAPHITI_CONFIG_DIR=llm_configs

GRAPHITI_CONFIG_PATH может указывать прямо на ./examples/graphiti для разработки. GRAPHITI_CONFIG_DIR=llm_configs активирует смонтированные пресеты. Если в старом .env отсутствует эта переменная, более новый compose-файл монтирует пустую директорию хоста по неиспользуемому пути configs вместо скрытия пресетов, встроенных в образ.

[!ПРИМЕЧАНИЕ] GRAPHITI_MODEL_NAME устарел и игнорируется. Вместо этого отредактируйте активный YAML-пресет, затем перезапустите контейнер Graphiti.

Конфигурация эмбеддингов Graphiti

По умолчанию Graphiti использует учётные данные активного LLM-пресета и его стандартную модель эмбеддингов OpenAI. Чтобы явно использовать общую конечную точку эмбеддингов PentAGI:

GRAPHITI_SEPARATE_EMBEDDING=true
EMBEDDING_URL=https://embedding.example.com/v1
EMBEDDING_KEY=your_embedding_api_key
EMBEDDING_MODEL=openai/text-embedding-3-large

Эмбеддер Graphiti совместим с OpenAI. EMBEDDING_PROVIDER используется PentAGI, но не передаётся в Graphiti, поэтому провайдер эмбеддингов, не совместимый с OpenAI, не может быть передан напрямую.

Настройка приёма и извлечения

Предоставленные по умолчанию значения приоритизируют изоляцию потоков и ограничивают дорогостоящее извлечение полезными событиями.

Действия политики приёма:

  • REJECT: не сохранять эпизод.
  • SKIP_LLM: сохранить эпизод для поиска, но не извлекать узлы или рёбра.
  • PROCESS: сохранить эпизод и выполнить полное извлечение через LLM.
Переменная По умолчанию Когда изменять
GRAPHITI_INGEST_POLICY_RULES {"graphiti_search":"REJECT","tool_execution_terminal":"PROCESS","tool_execution_file":"PROCESS"} Добавляйте узкие шаблоны имён/источников без учёта регистра, когда конкретные события требуют иной обработки
GRAPHITI_INGEST_POLICY_FIELD both Ограничьте сопоставление только name или source_description, когда именование событий контролируется
GRAPHITI_INGEST_POLICY_DEFAULT_ACTION SKIP_LLM Используйте PROCESS только когда каждое несоответствующее событие оправдывает затраты на извлечение
GRAPHITI_INGEST_USE_GROUP_ACTORS true Оставляйте включённым для сохранения независимого порядка FIFO для каждого потока
GRAPHITI_INGEST_WORKER_COUNT 16 Увеличьте для большего числа параллельных потоков, если LLM и база данных имеют достаточную ёмкость; уменьшите для контроля нагрузки
GRAPHITI_INGEST_LOCK_BY_GROUP_ID true Используется только в режиме общего пула; игнорируется при включённых групповых акторах
GRAPHITI_INGEST_TASK_MAX_RETRIES 1 (0-5) Увеличьте при временных сбоях LLM/сети
GRAPHITI_INGEST_TASK_RETRY_DELAY_SEC 2.0 (0.5-60) Увеличьте, когда вышестоящему сервису требуется больше времени на восстановление
GRAPHITI_INGEST_TASK_TIMEOUT_SEC 0 (0-3600) Установите конечное значение, чтобы один зависший запрос не блокировал поток; 0 отключает тайм-аут
GRAPHITI_INGEST_QUEUE_MAX_SIZE 0 Установите предел для возврата HTTP 429 вместо неограниченной очереди
GRAPHITI_INGEST_DEAD_LETTER_ENABLED false Включите, когда неудачные эпизоды должны сохраняться для оперативного анализа
Извлечение использует следующий порядок резервного перехода: полное комбинированное извлечение (узлы, атрибуты, сводки и рёбра за один вызов), обычное комбинированное извлечение (узлы и рёбра), затем раздельное извлечение узлов/рёбер. Пустые или неудачные комбинированные результаты автоматически вызывают резервный переход; эти сообщения в журнале ожидаемы при нормальной работе.
Переменная По умолчанию Эффект
GRAPHITI_TAXONOMY_LAYER_PROFILE STRUCTURAL,EVIDENCE,PROGRESS,ATTEMPT Управляет тем, какие классы рёбер появляются в подсказках и проходят проверку; full/all включает все классы, а minimal выбирает основной граф атак
GRAPHITI_USE_COMBINED_FULL_EXTRACTION true Включает наиболее компактный путь извлечения за один вызов
GRAPHITI_USE_COMBINED_EXTRACTION true Включает обычный комбинированный резервный путь
GRAPHITI_COMBINED_FULL_GATING_ENABLED true Пропускает дорогостоящее полное извлечение для событий администрирования/поиска с низким сигналом
GRAPHITI_COMBINED_DIAGNOSTIC_SAMPLES false Включает образцы содержимого в диагностику; держите отключённым, так как вывод пентеста может содержать учётные данные
GRAPHITI_ANCHOR_NODE_MODE smart smart загружает все ключевые сущности плюс ограниченные типы с большим объёмом; limit применяет одно общее ограничение
GRAPHITI_ANCHOR_NODE_LIMIT 25 (1-500) Общее ограничение якорных узлов в режиме limit
GRAPHITI_ANCHOR_MASS_TYPE_LIMIT 10 (1-100) Ограничение на тип в режиме smart; 0 недопустимо
GRAPHITI_ANCHOR_QUERY_TIMEOUT 10 (1-60) Ограничивает поиск якорей; при тайм-ауте плавно переходит к отсутствию якорей

Якоря связывают сущности между эпизодами и используются отдельным путём извлечения. Комбинированное извлечение уже создало свои рёбра и не выполняет этот поиск якорей.

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

Время выполнения, журналирование и Neo4j

Значения ниже являются рекомендуемыми PentAGI значениями по умолчанию для .env.example/compose, а не исходными резервными значениями образа Graphiti. Запуск свежезагруженного образа за старым файлом compose может вместо этого включить телеметрию и глобальный поиск, использовать один рабочий процесс с общим пулом и действием PROCESS для несоответствующих приёму данных, включить полную таксономию и отключить комбинированное извлечение. Держите образ, файл compose, .env и предустановки синхронизированными.

Переменная По умолчанию Рекомендации
GRAPHITI_CPUS, GRAPHITI_MEMORY 2.0, 2G Ограничения контейнера; увеличивайте вместе с параллелизмом только после наблюдения за нагрузкой на CPU и память
GRAPHITI_SEMAPHORE_LIMIT 20 Ограничивает параллельные корутины Graphiti; это отдельно от параллелизма рабочих процессов приёма
GRAPHITI_TELEMETRY_ENABLED false Включает анонимную телеметрию Graphiti при установке true
GRAPHITI_LOG_LEVEL INFO Используйте DEBUG временно; он может создавать чувствительный и высокообъёмный вывод
GRAPHITI_LOG_STDOUT events off, events или full; для контейнеров рекомендуется events
GRAPHITI_FLOW_LOGGER_WARN_COUNT 256 Предупреждает о росте кэшированных регистраторов для каждого потока; 0 отключает предупреждение
GRAPHITI_DEBUG_RUNTIME_RESOURCES false Включает /debug/runtime-resources; предоставляйте доступ только доверенным операторам
GRAPHITI_SEARCH_SCOPE flowid Оставьте для изоляции потоков/арендаторов; all включает глобальный поиск и может раскрыть другие взаимодействия
GRAPHITI_LOG_FORMAT json Зарезервировано текущим контрактом развёртывания; регистратор Graphiti пока не применяет его
NEO4J_CPUS, NEO4J_MEMORY 4.0, 4G Ограничения контейнера Neo4j; используйте neo4j-admin server memory-recommendation --docker для определения размера в производстве
NEO4J_SHM_SIZE 4g Лимит /dev/shm; фактическое использование учитывается в лимите памяти контейнера
NEO4J_NOFILE 65536 Мягкий/жёсткий лимит открытых файлов, подходит для многих индексов и параллельных соединений
NEO4J_HEAP_INITIAL_SIZE, NEO4J_HEAP_MAX_SIZE, NEO4J_PAGECACHE_SIZE 2G, 2G, 1G Размер кучи JVM/кэша страниц; NEO4J_CPUS/NEO4J_MEMORY ограничивают только контейнер, JVM не может самостоятельно надёжно подстроиться под этот лимит. По умолчанию предпочтение отдаётся куче, а не кэшу страниц — подходит для развёртывания с низкой пропускной способностью записи и редкими широкими чтениями, поскольку выполнение запросов/материализация результатов происходит в куче, а небольшой набор данных уже комфортно помещается в 1G кэша страниц; повторно запустите neo4j-admin server memory-recommendation --docker, когда станет известен реальный объём данных
NEO4J_TRANSACTION_MAX 1G Ограничивает память одной транзакции (db.memory.transaction.max), чтобы один неограниченный/вышедший из-под контроля запрос (например, декартово произведение или неограниченный путь переменной длины перед LIMIT) завершался чистой ошибкой нехватки памяти Cypher, вместо того чтобы исчерпать всю кучу и остановить все остальные запросы на сервере
NEO4J_BOLT_ADVERTISED_ADDRESS пусто Устанавливается только когда Neo4j Browser и коннектор Bolt находятся за обратным прокси на разных публичных доменах (например, за Guarder с поддержкой CORS/групп cookie для кросс-доменного доступа Bolt); формат host:port. Если оставить пустым, конечная точка обнаружения Neo4j рекламирует тот заголовок Host, с которым пришёл запрос, что корректно только когда оба используют один домен
NEO4J_HTTP_ADVERTISED_ADDRESS пусто Устанавливается только когда обратный прокси перед Neo4j Browser удаляет или переписывает заголовок Host, делая динамический рекламируемый адрес на основе заголовка Host некорректным; формат host:port. Оставьте пустым в обычном случае (прокси передаёт Host без изменений)
NEO4J_USER, NEO4J_PASSWORD, NEO4J_URI и NEO4J_DATABASE настраивают встроенное подключение. Neo4j Community Edition поддерживает только свою базу данных по умолчанию; не настраивайте отдельное имя базы данных, требующее поддержки нескольких баз данных в Enterprise-версии.

Установщик копирует examples/neo4j рядом с установкой как ./neo4j. Он содержит статические настройки, не изменяемые через .env, для которых нет переменных NEO4J_*: conf/neo4j.conf и conf/apoc.conf, а также версионно зафиксированный plugins/apoc-*-core.jar. Монтирование в compose управляется:

NEO4J_DIR=./neo4j

NEO4J_DIR может указывать прямо на ./examples/neo4j для разработки. И conf/, и plugins/ монтируются только для чтения; стек всё равно запускается со встроенными настройками Neo4j по умолчанию (без APOC), если каталог отсутствует, поскольку Docker автоматически создает пустой. Не дублируйте ни одну переменную NEO4J_* из таблицы выше внутри conf/neo4j.conf — точка входа Docker для Neo4j всегда удаляет соответствующую строку из смонтированного файла и повторно добавляет значение переменной окружения, поэтому дублирующая настройка в файле будет молча проигнорирована.

Встроенный стек в настоящее время подключает только Neo4j. Образ Graphiti содержит поддержку FalkorDB, но её использование требует отдельно настроенного развертывания, поскольку стандартный файл compose не предоставляет GRAPHITI_GRAPH_BACKEND или FALKORDB_*.

Проверка и устранение неполадок

Проверьте состояние службы, состояние очереди и журналы:

docker compose -f docker-compose.yml -f docker-compose-graphiti.yml ps graphiti neo4j
docker compose -f docker-compose.yml -f docker-compose-graphiti.yml logs -f graphiti
curl -fsS http://localhost:8000/healthcheck
curl -fsS http://localhost:8000/queue-size

Neo4j Browser доступен по адресу http://localhost:7474; интерфейс OpenAPI Graphiti — по адресу http://localhost:8000/docs. Оба привязаны к localhost стандартным файлом compose.

Частые ошибки:

  • Отсутствие ключа API или базового URL для выбранного пресета, отсутствие YAML-файла или несоответствие provider в YAML приводит к сбою проверки запуска контейнера Graphiti.
  • LLM_CLIENT_TYPE=openai отклоняет локальные/пользовательские префиксы моделей; используйте пресет custom для локального сервера, совместимого с OpenAI.
  • В режиме поиска flowid запросы без идентификатора группы отклоняются. PentAGI автоматически предоставляет идентификатор группы, полученный из потока.
  • Ограниченная полная очередь возвращает HTTP 429. /queue-size сообщает счетчики ожидающих, обрабатываемых, активных групп и отброшенных.
  • Недопустимые диапазоны повторных попыток, тайм-аутов или якорей приводят к сбою запуска, а не к молчаливой нормализации.

Обновляйте .env, docker-compose-graphiti.yml, образ Graphiti и каталог пресетов graphiti вместе. Только загрузка нового образа может сохранить старые настройки compose и незаметно изменить поведение извлечения.

Ограничения и безопасность

  • Graphiti находится в стадии бета-тестирования и не имеет встроенного обозревателя графов.
  • Для всего развертывания Graphiti активен один пресет провайдера; он не выбирается для каждого агента или потока PentAGI.
  • Извлечение, реранжирование и эмбеддинги Graphiti оплачиваются отдельно от модели, используемой в основном потоке PentAGI.
  • По умолчанию поиск ограничен потоком. Повторное использование между потоками требует явной конструкции глобального поиска и не должно включаться в общих или многопользовательских развертываниях без дополнительной изоляции.
  • HTTP API Graphiti не имеет уровня аутентификации во встроенной службе. Стандартный compose привязывает его и Neo4j к 127.0.0.1; защитите внешние развертывания сетевыми средствами контроля и аутентификацией на доверенном обратном прокси.
  • Вывод агента и инструментов может содержать учетные данные и доказательства эксплуатации. Соответственно защищайте данные Neo4j, журналы, недоставленные сообщения, диагностику и резервные копии.
  • Если Graphiti недоступен, PentAGI продолжает работу с основной памятью и векторным хранилищем после записи в журнал неудачной проверки запуска. Установите GRAPHITI_ENABLED=false, чтобы явно отключить интеграцию.

Интеграция OAuth с GitHub и Google

Интеграция OAuth с GitHub и Google позволяет пользователям проходить аутентификацию с использованием своих существующих учетных записей на этих платформах. Это дает несколько преимуществ:

  • Упрощенный процесс входа без необходимости создавать отдельные учетные данные
  • Повышенная безопасность благодаря доверенным поставщикам удостоверений
  • Доступ к информации профиля пользователя из учетных записей GitHub/Google
  • Бесшовная интеграция с существующими рабочими процессами разработки

PentAGI использует PUBLIC_URL как публичный источник/базовый URL для перенаправлений OAuth. В развертывании по умолчанию обратные вызовы и GitHub, и Google обрабатываются:

${PUBLIC_URL}/api/v1/auth/login-callback

Для GitHub OAuth:

  1. Создайте новое OAuth-приложение в своей учетной записи GitHub.
  2. Установите Homepage URL на ваш PUBLIC_URL.
  3. Установите Authorization callback URL на ${PUBLIC_URL}/api/v1/auth/login-callback.
  4. Добавьте учётные данные клиента в ваш файл .env:
PUBLIC_URL=https://pentagi.example.com
OAUTH_GITHUB_CLIENT_ID=your_github_client_id
OAUTH_GITHUB_CLIENT_SECRET=your_github_client_secret

Для Google OAuth:

  1. Создайте учётные данные OAuth в вашем проекте Google Cloud.
  2. Используйте ту же конечную точку обратного вызова: ${PUBLIC_URL}/api/v1/auth/login-callback.
  3. Добавьте учётные данные клиента в ваш файл .env:
PUBLIC_URL=https://pentagi.example.com
OAUTH_GOOGLE_CLIENT_ID=your_google_client_id
OAUTH_GOOGLE_CLIENT_SECRET=your_google_client_secret

Убедитесь, что PUBLIC_URL соответствует внешнему HTTPS-адресу вашего экземпляра PentAGI и не включает сам путь обратного вызова. Если URL, настроенный в OAuth-провайдере, точно не совпадает с обратным вызовом, сгенерированным PentAGI, провайдер отклонит попытку входа с ошибкой несоответствия URI перенаправления.

Конфигурация Docker-образов

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

Переменная По умолчанию Описание
PENTAGI_IMAGE vxcontrol/pentagi:latest Docker-образ, используемый для основного сервиса приложения PentAGI
DOCKER_DEFAULT_IMAGE debian:latest Docker-образ по умолчанию для общих задач и неоднозначных случаев
DOCKER_DEFAULT_IMAGE_FOR_PENTEST vxcontrol/kali-linux Docker-образ по умолчанию для задач безопасности/тестирования на проникновение

PENTAGI_IMAGE изменяет образ, используемый основным сервисом pentagi в docker-compose.yml. Переменные DOCKER_DEFAULT_IMAGE и DOCKER_DEFAULT_IMAGE_FOR_PENTEST влияют только на автоматический выбор образа воркера для выполнения задач внутри PentAGI. Они не перезаписывают остальную часть стека Compose, поэтому такие сервисы, как pgvector, scraper и опциональный стек graphiti, по-прежнему используют ссылки на образы, определённые в compose-файлах.

Когда заданы DOCKER_DEFAULT_IMAGE и DOCKER_DEFAULT_IMAGE_FOR_PENTEST, AI-агенты будут ограничены выбранными вами образами. Это особенно полезно для:

  • Обеспечение безопасности: Ограничение использования только проверенными и доверенными образами
  • Стандартизация среды: Использование корпоративных или настраиваемых образов во всех операциях
  • Оптимизация производительности: Использование предварительно созданных образов с уже установленными необходимыми инструментами

Примеры конфигурации:

# Using a custom PentAGI application image
PENTAGI_IMAGE=registry.example.com/security/pentagi:latest

# Using a custom image for general tasks
DOCKER_DEFAULT_IMAGE=mycompany/custom-debian:latest

# Using a specialized image for penetration testing
DOCKER_DEFAULT_IMAGE_FOR_PENTEST=mycompany/pentest-tools:v2.0

[!NOTE] Если пользователь явно указывает конкретный Docker-образ в своей задаче, система попытается использовать именно этот образ, игнорируя эти настройки. Эти переменные влияют только на процесс автоматического выбора образа системой.

Для продвинутого эксперимента с OpenVAS/GVM, использующего собственный образ для пентеста, см. OpenVAS через пользовательский образ для пентеста.

Ограниченные сети, зеркала Docker и прокси

Если ваше окружение не может напрямую подключиться к Docker Hub (docker.io), изменения переменных окружения PentAGI обычно недостаточно для устранения ошибок загрузки образов. PentAGI по-прежнему полагается на собственный доступ Docker к реестру для сервисов, управляемых Compose, а сетевые проверки установщика также проверяют доступность Docker Hub.

Для ограниченных сетей:

  1. Убедитесь, что хост может разрешать и достигать docker.io.
  2. Если ваше окружение требует исходящий прокси для HTTP-трафика PentAGI или установщика, задайте переменную окружения PROXY_URL. Чтобы направлять загрузку Docker-образов через прокси, настройте прокси Docker daemon или Docker Desktop отдельно — Docker не использует PROXY_URL PentAGI для доступа к реестру.
  3. Если Docker Hub заблокирован или имеет строгие ограничения по скорости, настройте одобренное организацией зеркало реестра или прокси-сервер реестра перед запуском установщика или docker compose up.
  4. Перезапустите Docker после изменения конфигурации демона, затем повторно запустите проверки установщика или запуск Compose.

Пример конфигурации зеркала Docker daemon:

{
  "registry-mirrors": ["https://mirror.example.com"]
}

В Linux это обычно настраивается в /etc/docker/daemon.json. В Docker Desktop используйте эквивалентные настройки Docker Engine или прокси. Зеркало Docker Hub покрывает образы, размещённые на Docker Hub, такие как vxcontrol/*, но основной стек Compose уже включает quay.io/prometheuscommunity/postgres-exporter, а опциональный стек наблюдаемости включает gcr.io/cadvisor/cadvisor. Для этих реестров по-прежнему требуется прямой доступ или отдельно одобренные пути прокси/зеркал. См. официальную документацию Docker о зеркалах реестра и конфигурации прокси для демона.

Устранение неполадок: "failed to select primary docker image via llm call"

Поток, который немедленно завершается с ошибкой failed to select primary docker image via llm call, обычно указывает на проблему с настроенным LLM-бэкендом, а не с Docker или реестром образов. В более старых версиях PentAGI эта же ошибка отображалась как failed to get primary docker image, из-за чего пользователи отлаживали Docker, хотя реестр был исправен.

Когда запускается поток, PentAGI выполняет первый LLM-вызов для выбора основного Docker-образа для задачи. Этот вызов выбора образа выполняется через тип агента simple, поэтому сбой здесь указывает на модель, назначенную этому типу агента, а не на Docker. Сообщение вида API returned unexpected status code: 502 или 404 в этом контексте возвращается LLM-бэкендом, а не Docker Hub.

Это отличается от проблем доступности реестра, описанных выше: если загрузка Docker-образов выполняется успешно и стек Compose запускается, но создание потока по-прежнему завершается сбоем на этапе выбора образа, проверяйте LLM-бэкенд, а не Docker.

Для диагностики:

  1. Сначала проверьте логи PentAGI: docker logs pentagi.
  2. Проверьте логи вашего настроенного LLM-бэкенда (сервера за вашим провайдером или LLM_SERVER_URL).
  3. Убедитесь, что базовый URL, API-ключ и имя модели в конфигурации пользовательского LLM-провайдера корректны и доступны из контейнера. Если вы назначаете разные модели для каждого типа агента, проверьте модель, используемую типом агента simple, поскольку выбор образа выполняется через него.
  4. Для пользовательских, OpenAI-совместимых, vLLM или SGLang бэкендов убедитесь, что модель поддерживает вызов инструментов (function calling) и что соответствующий парсер вызовов инструментов включён. Отсутствующий или несоответствующий парсер вызовов инструментов — известная причина этого сбоя.

Разработка

Требования к разработке

  • golang
  • nodejs
  • docker
  • postgres

Настройка окружения

Настройка бэкенда

Выполните один раз cd backend && go mod download для установки необходимых пакетов.

Для генерации файлов swagger необходимо выполнить

swag init -g ../../pkg/server/router.go -o pkg/server/docs/ --parseDependency --parseInternal --parseDepth 2 -d cmd/pentagi

перед установкой пакета swag через

go install github.com/swaggo/swag/cmd/swag@v1.8.7

Для генерации файлов graphql-резолверов необходимо выполнить

go run github.com/99designs/gqlgen --config ./gqlgen/gqlgen.yml

после этого вы можете увидеть сгенерированные файлы в папке pkg/graph.

Для генерации ORM-методов (пакет базы данных) из конфигурации sqlc

docker run --rm -v $(pwd):/src -w /src --network pentagi-network -e DATABASE_URL="{URL}" sqlc/sqlc:1.27.0 generate -f sqlc/sqlc.yml

Для генерации Langfuse SDK из спецификации OpenAPI

fern generate --local

и для установки fern-cli

pnpm add -g fern-api

Тестирование

Для запуска тестов: cd backend && go test -v ./...

Настройка фронтенда

Выполните один раз cd frontend && pnpm install для установки необходимых пакетов.

Для генерации graphql-файлов необходимо выполнить pnpm run graphql:generate, который использует файл graphql-codegen.ts.

Убедитесь, что graphql-codegen установлен глобально:

pnpm add -g graphql-codegen

После этого вы можете запустить: * pnpm run prettier для проверки форматирования кода * pnpm run prettier:fix для исправления * pnpm run lint для проверки линтера * pnpm run lint:fix для исправления

Для генерации SSL-сертификатов необходимо выполнить pnpm run ssl:generate, который использует файл generate-ssl.ts, или они будут сгенерированы автоматически при запуске pnpm run dev.

Конфигурация бэкенда

Отредактируйте конфигурацию для backend в файле .vscode/launch.json: - DATABASE_URL — URL базы данных PostgreSQL (например, postgres://postgres:postgres@localhost:5432/pentagidb?sslmode=disable) - DOCKER_HOST — API Docker SDK (например, для macOS DOCKER_HOST=unix:///Users/<my-user>/Library/Containers/com.docker.docker/Data/docker.raw.sock) подробнее

Опционально: - SERVER_PORT — порт для запуска сервера (по умолчанию: 8443) - SERVER_USE_SSL — включить SSL для сервера (по умолчанию: false)

Размер пула соединений PostgreSQL / pgvector

PentAGI открывает два независимых пула соединений к одному экземпляру Postgres:

Пул Переменная окружения По умолчанию Используется
Общий sql.DB DATABASE_MAX_OPEN_CONNS 25 Все sqlc-запросы и GORM-обработчики используют один общий *sql.DB
Общий pgxpool DATABASE_VECTOR_MAX_CONNS 10 Все pgvector-хранилища (память агента + API знаний) используют один общий пул

Дополнительный параметр настройки: - DATABASE_MAX_IDLE_CONNS — максимальное количество бездействующих соединений, удерживаемых открытыми в пуле sql.DB между запросами (по умолчанию: 5).

Бюджет для стандартного образа vxcontrol/pgvector (max_connections = 100, superuser_reserved_connections = 3):

Available for client connections  = 97
  pentagi sql.DB  (DATABASE_MAX_OPEN_CONNS)   = 25
  pentagi pgxpool (DATABASE_VECTOR_MAX_CONNS) = 10
  pgexporter                                  =  3
  autovacuum workers                          =  3
  ─────────────────────────────────────────
  Total consumed                              = 41
  Free buffer                                 = 56  (≈ 58 %)

Значения по умолчанию рассчитаны на 10 параллельных потоков с одновременными API-запросами. Если вы запускаете больше потоков или развертываете несколько экземпляров PentAGI против одного и того же Postgres, увеличьте max_connections через переопределение command в docker-compose.yml и пропорционально увеличьте размеры пулов:

pgvector:
  image: vxcontrol/pgvector:latest
  command: postgres -c max_connections=200

Чтобы проверить живой бюджет соединений в работающем развертывании:

# Postgres limits
docker exec pgvector sh -c 'psql -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c \
  "SELECT name, setting FROM pg_settings
   WHERE name IN ('"'"'max_connections'"'"', '"'"'superuser_reserved_connections'"'"');"'

# Current usage vs. available
docker exec pgvector sh -c 'psql -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c \
  "SELECT max_conn, used, max_conn - used AS available
   FROM (SELECT current_setting('"'"'max_connections'"'"')::int AS max_conn,
                count(*) AS used FROM pg_stat_activity) t;"'

# Breakdown by client
docker exec pgvector sh -c 'psql -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c \
  "SELECT application_name, client_addr, state, count(*)
   FROM pg_stat_activity
   WHERE pid <> pg_backend_pid()
   GROUP BY 1, 2, 3 ORDER BY count DESC;"'
Внешний PostgreSQL и обработка схем

DATABASE_URL может указывать на любой экземпляр PostgreSQL, а не только на встроенный контейнер pgvector. Два дополнительных параметра применяются тогда — и только тогда — когда установлен TENANT_ID, потому что именно тогда PentAGI создает свою собственную схему и переписывает search_path соединения:

Переменная окружения По умолчанию Назначение
DATABASE_EXTENSIONS_SCHEMA public Схема, содержащая общие расширения vector и pg_trgm, которые должен достигать search_path каждого тенанта
DATABASE_SEARCH_PATH_VIA_OPTIONS false Отправлять search_path тенанта внутри стартового параметра options вместо отдельного параметра соединения

Supabase (облачный или самостоятельный) требует учета обоих параметров, и именно для этого они существуют:

  • Supabase устанавливает свои встроенные расширения в схему extensions вместо public, поэтому установите DATABASE_EXTENSIONS_SCHEMA=extensions. Без этого запуск прерывается с ошибкой, указывающей схему, где фактически был найден vector — нет необходимости перемещать управляемое провайдером расширение с помощью ALTER EXTENSION.
  • Пулер Supabase (Supavisor) не гарантирует надежную передачу отдельного параметра соединения search_path. Предпочитайте прямое подключение к PostgreSQL: при самостоятельном размещении откройте порт службы db и обойдите службу supavisor; в облаке используйте строку «Direct connection» (или надстройку IPv4 в сетях только с IPv4). Если пулер невозможно обойти, используйте его сеансовый режим и попробуйте DATABASE_SEARCH_PATH_VIA_OPTIONS=true — PentAGI проверяет эффективную схему при загрузке и отказывается запускаться, если она не вступила в силу, поэтому бесшумное смешивание данных между тенантами невозможно.

Оба параметра управляются установщиком в разделе Server Settings, рядом с TENANT_ID — см. Запуск нескольких экземпляров для этого сценария и Развертывание нескольких экземпляров для полной матрицы, включая рецепт PgBouncer (pool_mode = session, ignore_startup_parameters, connect_query для каждого тенанта).

Конфигурация фронтенда

Измените конфигурацию для frontend в файле .vscode/launch.json: - VITE_API_URL - URL API бэкенда. Опустите схему URL (например, localhost:8080, а НЕ http://localhost:8080) - VITE_USE_HTTPS - Включить SSL для сервера (по умолчанию: false) - VITE_PORT - Порт для запуска сервера (по умолчанию: 8000) - VITE_HOST - Хост для запуска сервера (по умолчанию: 0.0.0.0)

Запуск приложения

Бэкенд

Выполните команды в папке backend: - Используйте файл .env для установки переменных окружения, например source .env - Запустите go run cmd/pentagi/main.go для запуска сервера

[!NOTE] Первый запуск может занять некоторое время, так как необходимо загрузить зависимости и docker-образы для настройки окружения бэкенда.

Фронтенд

Выполните команды в папке frontend: - Запустите pnpm install для установки зависимостей - Запустите pnpm run dev для запуска веб-приложения - Запустите pnpm run build для сборки веб-приложения

Откройте браузер и перейдите по URL веб-приложения.

Тестирование LLM-агентов

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

Утилита поддерживает параллельное тестирование нескольких агентов, детальные отчеты и гибкие параметры конфигурации.

Ключевые возможности

  • Параллельное тестирование: одновременное тестирование нескольких агентов для более быстрых результатов
  • Полный набор тестов: оценка базовых завершений, JSON-ответов, вызова функций и знаний по пентестингу
  • Детальные отчеты: генерация markdown-отчетов с показателями успешности и метриками производительности
  • Гибкая конфигурация: возможность тестировать отдельных агентов или группы агентов по необходимости
  • Специализированные тестовые группы: включает доменно-специфичные тесты для сценариев кибербезопасности и пентеста

Сценарии использования

Для разработчиков (с локальным окрущением Go)

Если вы клонировали реппозиторий и у вас установлен Go:

# Default configuration with .env file
cd backend
go run cmd/ctester/*.go -verbose

# Custom provider configuration
go run cmd/ctester/*.go -config ../examples/configs/openrouter.provider.yml -verbose

# Generate a report file
go run cmd/ctester/*.go -config ../examples/configs/deepinfra.provider.yml -report ../test-report.md

# Test specific agent types only
go run cmd/ctester/*.go -agents simple,simple_json,primary_agent -verbose

# Test specific test groups only
go run cmd/ctester/*.go -groups basic,advanced -verbose

Для пользователей (с использованием Docker-образа)

Если вы предпочитаете использовать готовый Docker-образ без настройки окружения разработки:

# Using Docker to test with default environment
docker run --rm -v $(pwd)/.env:/opt/pentagi/.env vxcontrol/pentagi /opt/pentagi/bin/ctester -verbose

# Test with your custom provider configuration
docker run --rm \
  -v $(pwd)/.env:/opt/pentagi/.env \
  -v $(pwd)/my-config.yml:/opt/pentagi/config.yml \
  vxcontrol/pentagi /opt/pentagi/bin/ctester -config /opt/pentagi/config.yml -agents simple,primary_agent,coder -verbose

# Generate a detailed report
docker run --rm \
  -v $(pwd)/.env:/opt/pentagi/.env \
  -v $(pwd):/opt/pentagi/output \
  vxcontrol/pentagi /opt/pentagi/bin/ctester -report /opt/pentagi/output/report.md

Использование предварительно настроенных провайдеров

Docker-образ включает встроенную поддержку основных провайдеров (OpenAI, Anthropic, Gemini, Ollama) и предварительно настроенные файлы провайдеров для дополнительных сервисов (OpenRouter, OpenCode, Atlas, OrcaRouter, DeepInfra, DeepSeek, Moonshot, Novita, xAI):

# Test with OpenRouter configuration
docker exec -it pentagi /opt/pentagi/bin/ctester -config /opt/pentagi/conf/openrouter.provider.yml

# Test with OpenCode Go plan configuration
docker exec -it pentagi /opt/pentagi/bin/ctester -config /opt/pentagi/conf/opencode.provider.yml

# Test with DeepInfra configuration
docker exec -it pentagi /opt/pentagi/bin/ctester -config /opt/pentagi/conf/deepinfra.provider.yml

# Test with DeepSeek configuration
docker exec -it pentagi /opt/pentagi/bin/ctester -provider deepseek

# Test with GLM configuration
docker exec -it pentagi /opt/pentagi/bin/ctester -provider glm

# Test with Kimi configuration
docker exec -it pentagi /opt/pentagi/bin/ctester -provider kimi

# Test with Qwen configuration
docker exec -it pentagi /opt/pentagi/bin/ctester -provider qwen

# Test with DeepSeek configuration file for custom provider
docker exec -it pentagi /opt/pentagi/bin/ctester -config /opt/pentagi/conf/deepseek.provider.yml

# Test with Moonshot configuration file for custom provider
docker exec -it pentagi /opt/pentagi/bin/ctester -config /opt/pentagi/conf/moonshot.provider.yml

# Test with Novita configuration
docker exec -it pentagi /opt/pentagi/bin/ctester -config /opt/pentagi/conf/novita.provider.yml

# Test with xAI configuration
docker exec -it pentagi /opt/pentagi/bin/ctester -config /opt/pentagi/conf/xai.provider.yml

# Test with OpenAI configuration
docker exec -it pentagi /opt/pentagi/bin/ctester -type openai

# Test with Anthropic configuration
docker exec -it pentagi /opt/pentagi/bin/ctester -type anthropic

# Test with Gemini configuration
docker exec -it pentagi /opt/pentagi/bin/ctester -type gemini

# Test with AWS Bedrock configuration
docker exec -it pentagi /opt/pentagi/bin/ctester -type bedrock

# Test with Custom OpenAI configuration
docker exec -it pentagi /opt/pentagi/bin/ctester -config /opt/pentagi/conf/custom-openai.provider.yml

# Test with Ollama configuration (local inference)
docker exec -it pentagi /opt/pentagi/bin/ctester -config /opt/pentagi/conf/ollama-llama318b.provider.yml

# Test with Ollama Qwen3 32B configuration (requires custom model creation)
docker exec -it pentagi /opt/pentagi/bin/ctester -config /opt/pentagi/conf/ollama-qwen332b-fp16-tc.provider.yml

# Test with Ollama QwQ 32B configuration (requires custom model creation and 71.3GB VRAM)
docker exec -it pentagi /opt/pentagi/bin/ctester -config /opt/pentagi/conf/ollama-qwq32b-fp16-tc.provider.yml

Для использования этих конфигураций ваш файл .env должен содержать только:

LLM_SERVER_URL=https://openrouter.ai/api/v1      # or https://api.deepinfra.com/v1/openai or https://api.openai.com/v1 or https://opencode.ai/zen/go/v1 or https://api.novita.ai/openai or https://api.atlascloud.ai/v1 or https://api.orcarouter.ai/v1 or https://api.x.ai/v1
LLM_SERVER_KEY=your_api_key
LLM_SERVER_MODEL=                                # Leave empty, as models are specified in the config
LLM_SERVER_CONFIG_PATH=/opt/pentagi/conf/openrouter.provider.yml  # or deepinfra.provider.ymll or opencode.provider.ymll or custom-openai.provider.yml or novita.provider.yml or atlas.provider.yml or orcarouter.provider.yml or xai.provider.yml
LLM_SERVER_PROVIDER=                             # Provider name for LiteLLM proxy (e.g., openrouter, deepseek, moonshot, novita, opencode, orcarouter, xai)
LLM_SERVER_LEGACY_REASONING=false                # Controls reasoning format, for OpenAI must be true (default: false)
LLM_SERVER_PRESERVE_REASONING=false              # Preserve reasoning content in multi-turn conversations (required by Moonshot, default: false)

# For OpenAI (official API)
OPEN_AI_KEY=your_openai_api_key                  # Your OpenAI API key
OPEN_AI_SERVER_URL=https://api.openai.com/v1     # OpenAI API endpoint

# For Anthropic (Claude models)
ANTHROPIC_API_KEY=your_anthropic_api_key         # Your Anthropic API key
ANTHROPIC_SERVER_URL=https://api.anthropic.com/v1  # Anthropic API endpoint

# For Gemini (Google AI)
GEMINI_API_KEY=your_gemini_api_key               # Your Google AI API key
GEMINI_SERVER_URL=https://generativelanguage.googleapis.com  # Google AI API endpoint

# For AWS Bedrock (enterprise foundation models)
BEDROCK_REGION=us-east-1                         # AWS region for Bedrock service
# Authentication (choose one method, priority: DefaultAuth > BearerToken > AccessKey):
BEDROCK_DEFAULT_AUTH=false                       # Use AWS SDK credential chain (env vars, EC2 role, ~/.aws/credentials)
BEDROCK_BEARER_TOKEN=                            # Bearer token authentication (takes priority over static credentials)
BEDROCK_ACCESS_KEY_ID=your_aws_access_key        # AWS access key ID (static credentials)
BEDROCK_SECRET_ACCESS_KEY=your_aws_secret_key    # AWS secret access key (static credentials)
BEDROCK_SESSION_TOKEN=                           # AWS session token (optional, for temporary credentials with static auth)
BEDROCK_SERVER_URL=                              # Optional custom Bedrock endpoint (VPC endpoints, local testing)
BEDROCK_CONFIG_PATH=                             # Optional path to a custom YAML provider config (overrides built-in model/pricing definitions)

# For Ollama (local server or cloud)
OLLAMA_SERVER_URL=                               # Local: http://ollama-server:11434, Cloud: https://ollama.com
OLLAMA_SERVER_API_KEY=                           # Required for Ollama Cloud (https://ollama.com/settings/keys), leave empty for local
OLLAMA_SERVER_MODEL=
OLLAMA_SERVER_CONFIG_PATH=
OLLAMA_SERVER_PULL_MODELS_TIMEOUT=
OLLAMA_SERVER_PULL_MODELS_ENABLED=
OLLAMA_SERVER_LOAD_MODELS_ENABLED=

# For DeepSeek (Chinese AI with strong reasoning)
DEEPSEEK_API_KEY=                                # DeepSeek API key
DEEPSEEK_SERVER_URL=https://api.deepseek.com     # DeepSeek API endpoint
DEEPSEEK_PROVIDER=                               # Optional: LiteLLM prefix (e.g., 'deepseek')

# For GLM (Zhipu AI)
GLM_API_KEY=                                     # GLM API key
GLM_SERVER_URL=https://api.z.ai/api/paas/v4      # GLM API endpoint (international)
GLM_PROVIDER=                                    # Optional: LiteLLM prefix (e.g., 'zai')

# For Kimi (Moonshot AI)
KIMI_API_KEY=                                    # Kimi API key
KIMI_SERVER_URL=https://api.moonshot.ai/v1       # Kimi API endpoint (international)
KIMI_PROVIDER=                                   # Optional: LiteLLM prefix (e.g., 'moonshot')

# For Qwen (Alibaba Cloud DashScope)
QWEN_API_KEY=                                    # Qwen API key
QWEN_SERVER_URL=https://dashscope-us.aliyuncs.com/compatible-mode/v1  # Qwen API endpoint (US)
QWEN_PROVIDER=                                   # Optional: LiteLLM prefix (e.g., 'dashscope')

# For Ollama (local inference) use variables above
OLLAMA_SERVER_URL=http://localhost:11434
OLLAMA_SERVER_MODEL=llama3.1:8b-instruct-q8_0
OLLAMA_SERVER_CONFIG_PATH=/opt/pentagi/conf/ollama-llama318b.provider.yml
OLLAMA_SERVER_PULL_MODELS_ENABLED=false
OLLAMA_SERVER_LOAD_MODELS_ENABLED=false

Использование OpenAI с неперифицированными организациями

Для аккаунтов OpenAI с непроверенными организациями, у которых нет доступа к новым моделям рассуждения (o1, o3, o4-mini), необходимо использовать пользовательскую конфигурацию.

Чтобы использовать OpenAI с непроверенными организациями, настройте файл .env следующим образом:

LLM_SERVER_URL=https://api.openai.com/v1
LLM_SERVER_KEY=your_openai_api_key
LLM_SERVER_MODEL=                                # Leave empty, models are specified in config
LLM_SERVER_CONFIG_PATH=/opt/pentagi/conf/custom-openai.provider.yml
LLM_SERVER_LEGACY_REASONING=true                 # Required for OpenAI reasoning format

Эта конфигурация использует предварительно созданный файл custom-openai.provider.yml, который сопоставляет все типы агентов с моделями, доступными для непроверенных организаций, используя o3-mini вместо таких моделей, как o1, o3 и o4-mini.

Вы можете протестировать эту конфигурацию с помощью:

# Test with custom OpenAI configuration for unverified accounts
docker exec -it pentagi /opt/pentagi/bin/ctester -config /opt/pentagi/conf/custom-openai.provider.yml

[!ПРИМЕЧАНИЕ] Настройка LLM_SERVER_LEGACY_REASONING=true критически важна для совместимости с OpenAI, поскольку она гарантирует, что параметры рассуждения отправляются в формате, ожидаемом API OpenAI.

Использование прокси LiteLLM

При использовании прокси LiteLLM для доступа к различным LLM-провайдерам имена моделей имеют префикс имени провайдера (например, moonshot/kimi-2.5 вместо kimi-2.5). Чтобы использовать одни и те же файлы конфигурации провайдеров как для прямого доступа к API, так и через прокси LiteLLM, задайте переменную LLM_SERVER_PROVIDER:

# Direct access to Moonshot API
LLM_SERVER_URL=https://api.moonshot.ai/v1
LLM_SERVER_KEY=your_moonshot_api_key
LLM_SERVER_CONFIG_PATH=/opt/pentagi/conf/moonshot.provider.yml
LLM_SERVER_PROVIDER=                             # Empty for direct access

# Access via LiteLLM proxy
LLM_SERVER_URL=http://litellm-proxy:4000
LLM_SERVER_KEY=your_litellm_api_key
LLM_SERVER_CONFIG_PATH=/opt/pentagi/conf/moonshot.provider.yml
LLM_SERVER_PROVIDER=moonshot                     # Provider prefix for LiteLLM

С LLM_SERVER_PROVIDER=moonshot система автоматически добавляет префикс moonshot/ ко всем именам моделей из файла конфигурации, что делает их совместимыми с соглашением об именах моделей LiteLLM.

Сопоставление имен провайдеров LiteLLM:

При использовании прокси LiteLLM задайте соответствующую переменную *_PROVIDER, чтобы включить префиксацию моделей:

  • deepseek — для моделей DeepSeek (DEEPSEEK_PROVIDER=deepseek → deepseek/deepseek-v4-flash)
  • zai — для моделей GLM (GLM_PROVIDER=zai → zai/glm-4)
  • moonshot — для моделей Kimi (KIMI_PROVIDER=moonshot → moonshot/kimi-k2.5)
  • dashscope — для моделей Qwen (QWEN_PROVIDER=dashscope → dashscope/qwen-plus)
  • openai, anthropic, gemini — для основных облачных провайдеров
  • opencode — для тарифного плана OpenCode Go
  • openrouter — для агрегатора OpenRouter
  • orcarouter — для агрегатора OrcaRouter
  • deepinfra — для хостинга DeepInfra
  • novita — для Novita AI
  • xai — для xAI (модели grok-*)
  • Любое другое имя провайдера, настроенное в вашем экземпляре LiteLLM

Пример с LiteLLM:

# Use DeepSeek models via LiteLLM proxy with model prefixing
DEEPSEEK_API_KEY=your_litellm_proxy_key
DEEPSEEK_SERVER_URL=http://litellm-proxy:4000
DEEPSEEK_PROVIDER=deepseek  # Models become deepseek/deepseek-v4-flash, deepseek/deepseek-v4-pro for LiteLLM

# Direct DeepSeek API usage (no prefix needed)
DEEPSEEK_API_KEY=your_deepseek_api_key
DEEPSEEK_SERVER_URL=https://api.deepseek.com
# Leave DEEPSEEK_PROVIDER empty

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

Запуск тестов в производственной среде

Если у вас уже есть запущенный контейнер PentAGI и вы хотите протестировать текущую конфигурацию:

# Run ctester in an existing container using current environment variables
docker exec -it pentagi /opt/pentagi/bin/ctester -verbose

# Test specific agent types with deterministic ordering
docker exec -it pentagi /opt/pentagi/bin/ctester -agents simple,primary_agent,pentester -groups basic,knowledge -verbose

# Generate a report file inside the container
docker exec -it pentagi /opt/pentagi/bin/ctester -report /opt/pentagi/data/agent-test-report.md

# Access the report from the host
docker cp pentagi:/opt/pentagi/data/agent-test-report.md ./

Параметры командной строки

Утилита принимает несколько параметров:

  • -env <путь> — путь к файлу окружения (по умолчанию: .env)
  • -type <провайдер> — тип провайдера: custom, openai, anthropic, ollama, bedrock, gemini (по умолчанию: custom)
  • -config <путь> — путь к конфигурации пользовательского провайдера (по умолчанию: из переменной окружения LLM_SERVER_CONFIG_PATH)
  • -tests <путь> — путь к пользовательскому YAML-файлу тестов (необязательно)
  • -report <путь> — путь для записи файла отчёта (необязательно)
  • -agents <список> — список типов агентов через запятую для тестирования (по умолчанию: all)
  • -groups <список> — список тестовых групп для запуска через запятую (по умолчанию: all)
  • -verbose — включить подробный вывод с детальными результатами тестов для каждого агента

Доступные типы агентов

Агенты тестируются в следующем детерминированном порядке:

  1. simple — базовые задачи завершения
  2. simple_json — ответы в структуре JSON
  3. primary_agent — основной агент рассуждения
  4. assistant — интерактивный режим ассистента
  5. generator — генерация контента
  6. refiner — уточнение и улучшение контента
  7. adviser — экспертное консультирование и советы
  8. reflector — самоанализ и рефлексия
  9. searcher — сбор информации и поиск
  10. enricher — обогащение и расширение данных
  11. coder — генерация и анализ кода
  12. installer — задачи установки и настройки
  13. pentester — тестирование на проникновение и оценка безопасности

Доступные тестовые группы

  • basic — базовые тесты завершения и ответов на запросы
  • advanced — тесты сложных рассуждений и вызова функций
  • json — проверка формата JSON и структуры (специально разработана для агента simple_json)
  • knowledge — тесты знаний в области кибербезопасности и тестирования на проникновение

Примечание: Тестовая группа json специально предназначена для типа агента simple_json, в то время как все остальные агенты тестируются с группами basic, advanced и knowledge. Эта специализация обеспечивает оптимальное покрытие тестами для каждого агента в соответствии с его назначением.

Пример конфигурации провайдера

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

simple:
  model: "provider/model-name"
  temperature: 0.7
  top_p: 0.95
  n: 1
  max_tokens: 4000

simple_json:
  model: "provider/model-name"
  temperature: 0.7
  top_p: 1.0
  n: 1
  max_tokens: 4000
  json: true

# ... other agent types ...

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

  1. Создайте базовый уровень: Запустите тесты с конфигурацией по умолчанию, чтобы установить эталонную производительность
  2. Проанализируйте производительность агентов: Просмотрите детерминированный порядок агентов, чтобы выявить отстающих
  3. Протестируйте специализированные конфигурации: Экспериментируйте с различными моделями для каждого типа агента, используя конфигурации, специфичные для провайдера
  4. Сосредоточьтесь на предметных знаниях: Уделите особое внимание тестам группы знаний для проверки экспертизы в кибербезопасности
  5. Проверьте вызов функций: Убедитесь, что тесты на основе инструментов стабильно проходят для критически важных типов агентов
  6. Сравните результаты: Ищите наилучший показатель успешности и производительности по всем тестовым группам
  7. Разверните оптимальную конфигурацию: Используйте в производстве с вашей оптимизированной настройкой

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

Конфигурация и тестирование эмбеддингов

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

Поддерживаемые провайдеры эмбеддингов

PentAGI поддерживает следующих провайдеров эмбеддингов:

  • OpenAI (по умолчанию): использует модели текстовых эмбеддингов OpenAI
  • Ollama: локальная модель эмбеддингов через Ollama
  • Mistral: модели эмбеддингов Mistral AI
  • Jina: сервис эмбеддингов Jina AI
  • HuggingFace: модели из HuggingFace
  • GoogleAI: модели эмбеддингов Google
  • VoyageAI: модели эмбеддингов VoyageAI

Сторонние сервисы, совместимые с OpenAI: любой провайдер, предоставляющий API /embeddings OpenAI, может быть подключен через EMBEDDING_PROVIDER=openai с пользовательским EMBEDDING_URL. Например, Qwen DashScope предлагает text-embedding-v4 через конечную точку /compatible-mode/v1 (только для международного и материкового Кита регионов — в регионе США эмбеддинги не предоставляются). См. раздел Альтернативные интеграции Qwen для полного фрагмента конфигурации.

Конфигурация провайдера эмбеддингов (нажмите, чтобы развернуть)

Переменные окружения

Чтобы настроить провайдера эмбеддингов, установите следующие переменные окружения в вашем файле .env:

# Primary embedding configuration
EMBEDDING_PROVIDER=openai       # Provider type (openai, ollama, mistral, jina, huggingface, googleai, voyageai)
EMBEDDING_MODEL=text-embedding-3-small  # Model name to use
EMBEDDING_URL=                  # Optional custom API endpoint
EMBEDDING_KEY=                  # API key for the provider (if required)
EMBEDDING_BATCH_SIZE=100        # Number of documents to process in a batch
EMBEDDING_STRIP_NEW_LINES=true  # Whether to remove new lines from text before embedding
EMBEDDING_MAX_TEXT_BYTES=8192   # Max bytes of text sent to embedding model per document (byte proxy for token limit)

# Advanced settings
PROXY_URL=                      # Optional proxy for all API calls
HTTP_CLIENT_TIMEOUT=600         # Timeout in seconds for external API calls (default: 600, 0 = no timeout)
TERMINAL_TOOL_TIMEOUT=1200      # Default timeout in seconds for terminal tool commands when timeout=0 or negative (range: 1–10800; values <= 0 or above 10800 are clamped to 10800 = 3 hours)

# SSL/TLS Certificate Configuration (for external communication with LLM backends and tool servers)
EXTERNAL_SSL_CA_PATH=           # Path to custom CA certificate file (PEM format) inside the container
                              # Must point to /opt/pentagi/ssl/ directory (e.g., /opt/pentagi/ssl/ca-bundle.pem)
EXTERNAL_SSL_INSECURE=false     # Skip certificate verification (use only for testing)
**Как добавить пользовательские корневые сертификаты CA (нажмите, чтобы развернуть)** Если вы видите эту ошибку: `tls: failed to verify certificate: x509: certificate signed by unknown authority` **Шаг 1:** Получите пакет корневых сертификатов CA в формате PEM (может содержать несколько сертификатов) **Шаг 2:** Поместите файл в каталог SSL на вашем хост-компьютере:
# Default location (if PENTAGI_SSL_DIR is not set)
cp ca-bundle.pem ./pentagi-ssl/

# Or custom location (if using PENTAGI_SSL_DIR in docker-compose.yml)
cp ca-bundle.pem /path/to/your/ssl/dir/
**Шаг 3:** Укажите путь в файле `.env` (путь должен находиться внутри контейнера):
# The volume pentagi-ssl is mounted to /opt/pentagi/ssl inside the container
EXTERNAL_SSL_CA_PATH=/opt/pentagi/ssl/ca-bundle.pem
EXTERNAL_SSL_INSECURE=false
**Шаг 4:** Перезапустите PentAGI:
docker compose restart pentagi
**Примечания:** - Тмо `pentagi-ssl` монтируется в `/opt/pentagi/ssl` внутри контейнера - Вы можете изменить каталог на хосте с помощью переменной `PENTAGI_SSL_DIR` в docker-compose.yml - Файл поддерживает несколько сертификатов и промежуточных центров сертификации в одном PEM-файле - Используйте `EXTERNAL_SSL_INSECURE=true` только для тестирования (не рекомендуется для продакшена) ### Ограничения, специфичные для провайдера Каждый провайдер имеет определенные ограничения и поддерживаемые функции: - **OpenAI**: поддерживает все параметры конфигурации - **Ollama**: не поддерживает `EMBEDDING_KEY`, так как использует локальные модели - **Mistral**: не поддерживает `EMBEDDING_MODEL` или пользовательский HTTP-клиент - **Jina**: не поддерживает пользовательский HTTP-клиент - **HuggingFace**: требует `EMBEDDING_KEY` и поддерживает все остальные опции - **GoogleAI**: не поддерживает `EMBEDDING_URL`, требует `EMBEDDING_KEY` - **VoyageAI**: поддерживает все параметры конфигурации Если `EMBEDDING_URL` и `EMBEDDING_KEY` не указаны, система попытается использовать соответствующие настройки LLM-провайдера (например, `OPEN_AI_KEY`, когда `EMBEDDING_PROVIDER=openai`). ### Почему важна согласованность провайдеров эмбеддингов Крайне важно использовать одного и того же провайдера эмбеддингов последовательно, потому что: 1. **Совместимость векторов**: разные провайдеры создают векторы с разными размерностями и математическими свойствами 2. **Семантическая согласованность**: смена провайдеров может нарушить семантическое сходство между ранее встроенными документами 3. **Повреждение памяти**: смешанные эмбеддинги могут привести к плохим результатам поиска и нарушению функциональности базы знаний Если вы меняете провайдера эмбеддингов, вам следует очистить и переиндексировать всю базу знаний (см. утилиту `etester` ниже).

Утилита тестирования эмбеддингов (etester)

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

Команды Etester (нажмите, чтобы развернуть)

# Test embedding provider and database connection
cd backend
go run cmd/etester/main.go test -verbose

# Show statistics about the embedding database
go run cmd/etester/main.go info

# Delete all documents from the embedding database (use with caution!)
go run cmd/etester/main.go flush

# Recalculate embeddings for all documents (after changing provider)
go run cmd/etester/main.go reindex

# Search for documents in the embedding database
go run cmd/etester/main.go search -query "How to install PostgreSQL" -limit 5

Использование Docker

Если вы запускаете PentAGI в Docker, вы можете использовать etester из контейнера:

# Test embedding provider
docker exec -it pentagi /opt/pentagi/bin/etester test

# Show detailed database information
docker exec -it pentagi /opt/pentagi/bin/etester info -verbose

Расширенные параметры поиска

Команда search поддерживает различные фильтры для сужения результатов:

# Filter by document type
docker exec -it pentagi /opt/pentagi/bin/etester search -query "Security vulnerability" -doc_type guide -threshold 0.8

# Filter by flow ID
docker exec -it pentagi /opt/pentagi/bin/etester search -query "Code examples" -doc_type code -flow_id 42

# All available search options
docker exec -it pentagi /opt/pentagi/bin/etester search -help

Доступные параметры поиска: - -query STRING: текст поискового запроса (обязательно) - -doc_type STRING: фильтр по типу документа (answer, memory, guide, code) - -flow_id NUMBER: фильтр по ID потока (положительное число) - -answer_type STRING: фильтр по типу ответа (guide, vulnerability, code, tool, other) - -guide_type STRING: фильтр по типу руководства (install, configure, use, pentest, development, other) - -limit NUMBER: максимальное количество результатов (по умолчанию: 3) - -threshold NUMBER: порог сходства (0.0-1.0, по умолчанию: 0.7)

Жизненный цикл памяти в рамках потоков

PentAGI хранит несколько видов векторных документов, и они служат разным целям:

  • memory фиксирует историю выполнения конкретного потока, такую как результаты инструментов и наблюдения агента
  • guide, answer и code предназначены для многократно используемых знаний, которые могут помочь будущим запускам

Если вы хотите просмотреть, что произошло в рамках одного взаимодействия, выполните поиск в векторном хранилище по соответствующему flow_id. Если вы хотите, чтобы знания сохранялись после однократного запуска, сохраняйте долговременный результат явно как документ guide, answer или code, а не полагайтесь только на память выполнения.

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

Удаление потока удаляет его из обычных запросов через механизм мягкого удаления PentAGI, поэтому многократно используемые знания следует рассматривать как отдельную задачу, отличную от истории выполнения каждого потока. Если вы включите опциональный граф знаний Graphiti, описанный ранее в этом README, считайте его текущий контекст поиска ограниченным активным потоком или взаимодействием, если только вы явно не создадите отдельный рабочий процесс повторного использования между потоками.

Частые сценарии устранения неполадок

  1. После смены провайдера эмбеддингов: всегда запускайте flush или reindex для обеспечения согласованности
  2. Плохие результаты поиска: попробуйте изменить порог сходства или проверьте, правильно ли генерируются эмбеддинги
  3. Проблемы с подключением к базе данных: убедитесь, что PostgreSQL запущен с установленным расширением pgvector
  4. Отсутствующие ключи API: проверьте переменные окружения для выбранного вами провайдера эмбеддингов

Устранение неполадок: зависание потока или остановка без прогресса

Если поток запускается, но затем, по-видимому, ожидает бесконечно, и никакие подзадачи не выполняются, распространенной причиной является неправильно настроенный или недоступный провайдер эмбеддингов. PentAGI использует провайдера эмбеддингов для хранения и поиска векторной памяти во время выполнения потока, поэтому вызовы эмбеддингов, которые завершаются ошибкой или зависают, могут оставить поток в ожидании вместо продвижения. 1. Сначала проверьте логи контейнера. Ошибки эмбеддингов отображаются в логах PentAGI:

docker logs pentagi

Ищите сбои, связанные с эмбеддингами, такие как ошибки аутентификации (401/403), ошибки неверной модели или не найдено (404), тайм-ауты соединения или ошибки TLS-сертификата. Это указывает на конфигурацию провайдера эмбеддингов, а не на сам поток.

2. Проверьте провайдера с помощью etester. Утилита тестирования эмбеддингов (etester) проверяет как провайдера эмбеддингов, так и подключение к базе данных без запуска потока:

docker exec -it pentagi /opt/pentagi/bin/etester test -verbose

Неудачный test подтверждает, что проблема в конфигурации эмбеддингов, а не в потоке.

3. Проверьте конфигурацию. Сверьте следующее в вашем файле .env со списком Поддерживаемых провайдеров эмбеддингов и документированными ограничениями каждого провайдера:

  • EMBEDDING_PROVIDER — один из поддерживаемых провайдеров (по умолчанию openai).
  • EMBEDDING_MODEL — допустимое имя модели для этого провайдера.
  • EMBEDDING_URL и EMBEDDING_KEY должны быть корректны для провайдера. Если оба оставлены пустыми, PentAGI использует настройки соответствующего LLM-провайдера (например, OPEN_AI_KEY и OPEN_AI_SERVER_URL, когда EMBEDDING_PROVIDER=openai), поэтому отсутствующий или неверный ключ там также может нарушить эмбеддинги.
  • Конечная точка должна быть доступна из контейнера. Если исходящие вызовы идут через прокси, убедитесь, что установлен PROXY_URL; если вызовы зависают, а не быстро завершаются ошибкой, HTTP_CLIENT_TIMEOUT управляет временем ожидания PentAGI от провайдера перед отказом.

Меняете провайдера? Если вы переключаете провайдера эмбеддингов после того, как данные уже были индексированы, запустите flush или reindex с помощью etester, чтобы старые и новые векторы не смешивались. См. Почему важна согласованность провайдеров эмбеддингов выше.

Тестирование функций с помощью ftester

PentAGI включает универсальную утилиту ftester для отладки, тестирования и разработки конкретных функций и поведения AI-агентов. В то время как ctester фокусируется на тестировании возможностей LLM-моделей, ftester позволяет напрямую вызывать отдельные системные функции и компоненты AI-агентов с точным контролем над контекстом выполнения.

Основные возможности

  • Прямой доступ к функциям: тестируйте отдельные функции без запуска всей системы
  • Режим имитации: тестируйте функции без работающего развертывания PentAGI с помощью встроенных имитаций
  • Интерактивный ввод: заполняйте аргументы функций интерактивно для исследовательского тестирования
  • Подробный вывод: цветовая кодировка терминала с форматированными ответами и ошибками
  • Контекстно-зависимое тестирование: отладка AI-агентов в контексте конкретных потоков, задач и подзадач
  • Интеграция наблюдаемости: все вызовы функций регистрируются в Langfuse и стеке наблюдаемости

Режимы использования

Аргументы командной строки

Запустите ftester с конкретной функцией и аргументами непосредственно из командной строки:

# Basic usage with mock mode
cd backend
go run cmd/ftester/main.go [function_name] -[arg1] [value1] -[arg2] [value2]

# Example: Test terminal command in mock mode
go run cmd/ftester/main.go terminal -command "ls -la" -message "List files"

# Using a real flow context
go run cmd/ftester/main.go -flow 123 terminal -command "whoami" -message "Check user"

# Testing AI agent in specific task/subtask context
go run cmd/ftester/main.go -flow 123 -task 456 -subtask 789 pentester -message "Find vulnerabilities"

Интерактивный режим

Запустите ftester без аргументов для управляемого интерактивного взаимодействия:

# Start interactive mode
go run cmd/ftester/main.go [function_name]

# For example, to interactively fill browser tool arguments
go run cmd/ftester/main.go browser

Доступные функции (нажмите, чтобы развернуть)

Функции окружения

  • terminal: выполняет команды в контейнере и возвращает вывод
  • file: выполняет файловые операции (чтение, запись, список) в контейнере

Функции поиска

  • browser: доступ к веб-сайтам и создание снимков экрана
  • web_search: единый оркестратор поиска, который фактически вызывают агенты — передайте query и mode (links, answer, research, exploit), и он автоматически выбирает, повторяет попытки и переключается между движками ниже, так что вам никогда не нужно явно указывать движок
  • google: поиск в интернете с помощью Google Custom Search
  • duckduckgo: поиск в интернете с помощью DuckDuckGo
  • tavily: поиск с помощью поискового движка Tavily AI
  • firecrawl: поиск с помощью Firecrawl с извлечением основного содержимого в формате Markdown
  • traversaal: поиск с помощью поискового движка Traversaal AI
  • perplexity: поиск с помощью Perplexity AI
  • sploitus: поиск эксплойтов, уязвимостей (CVE) и инструментов для пентеста
  • searxng: поиск с помощью мета-поисковика Searxng (агрегирует результаты из нескольких движков)
  • internal (отладочная функция только для ftester, не инструмент агента): дополнительный резервный движок браузерной аналитики, который обнаруживает ссылки, извлекает содержимое каждой страницы и суммирует результат; требует WEB_SEARCH_INTERNAL_ENABLED=true, настроенный скрапер и хотя бы один доступный движок ссылок

Функции векторной базы данных

  • search_in_memory: Поиск информации в векторной базе данных
  • search_guide: Поиск руководств в векторной базе данных
  • search_answer: Поиск ответов на вопросы в векторной базе данных
  • search_code: Поиск примеров кода в векторной базе данных

Функции AI-агента

  • advice: Получение экспертных советов от AI-агента
  • coder: Запрос на генерацию или модификацию кода
  • maintenance: Выполнение задач обслуживания системы
  • memorist: Хранение и организация информации в векторной базе данных
  • pentester: Выполнение тестов безопасности и анализа уязвимостей
  • search: Комплексный поиск по нескольким источникам

Утилитарные функции

  • describe: Показ информации о потоках, задачах и подзадачах

Контекст отладки потоков (щелкните, чтобы развернуть)

Функция describe предоставляет подробную информацию о задачах и подзадачах в рамках потока. Это особенно полезно для диагностики проблем, когда PentAGI сталкивается с ошибками или зависает.

# List all flows in the system
go run cmd/ftester/main.go describe

# Show all tasks and subtasks for a specific flow
go run cmd/ftester/main.go -flow 123 describe

# Show detailed information for a specific task
go run cmd/ftester/main.go -flow 123 -task 456 describe

# Show detailed information for a specific subtask
go run cmd/ftester/main.go -flow 123 -task 456 -subtask 789 describe

# Show verbose output with full descriptions and results
go run cmd/ftester/main.go -flow 123 describe -verbose

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

Справка по функциям и их обнаружение (щелкните, чтобы развернуть)

Каждая функция имеет режим справки, показывающий доступные параметры:

# Get help for a specific function
go run cmd/ftester/main.go [function_name] -help

# Examples:
go run cmd/ftester/main.go terminal -help
go run cmd/ftester/main.go browser -help
go run cmd/ftester/main.go describe -help

Вы также можете запустить ftester без аргументов, чтобы увидеть список всех доступных функций:

go run cmd/ftester/main.go

Формат вывода (щелкните, чтобы развернуть)

Утилита ftester использует цветовое кодирование вывода для упрощения интерпретации:

  • Синие заголовки: Названия разделов и ключевые имена
  • Голубой [INFO]: Общие информационные сообщения
  • Зеленый [SUCCESS]: Успешные операции
  • Красный [ERROR]: Сообщения об ошибках
  • Желтый [WARNING]: Предупреждения
  • Желтый [MOCK]: Указывает на работу в режиме имитации
  • Пурпурные значения: Аргументы функций и результаты

Ответы в формате JSON и Markdown автоматически форматируются для удобочитаемости.

Продвинутые сценарии использования (щелкните, чтобы развернуть)

Отладка зависших AI-потоков

Когда PentAGI зависает в потоке:

  1. Приостановите поток через пользовательский интерфейс
  2. Используйте describe, чтобы определить текущую задачу и подзадачу
  3. Напрямую вызовите функцию агента с теми же идентификаторами задачи/подзадачи
  4. Изучите подробный вывод, чтобы выявить проблему
  5. Возобновите поток или вмешайтесь вручную при необходимости

Проверка переменных окружения

Убедитесь, что ключи API и внешние сервисы настроены правильно:

# Test Google search API configuration
go run cmd/ftester/main.go google -query "pentesting tools"

# Test browser access to external websites
go run cmd/ftester/main.go browser -url "https://example.com"

Разработка новых поведений AI-агента

При разработке новых шаблонов промптов или поведений агента:

  1. Создайте тестовый поток в пользовательском интерфейсе
  2. Используйте ftester для прямого вызова агента с различными промптами
  3. Наблюдайте за ответами и корректируйте промпты соответственно
  4. Проверьте Langfuse для получения подробных трассировок всех вызовов функций

Проверка настройки Docker-контейнера

Убедитесь, что контейнеры настроены правильно:

go run cmd/ftester/main.go -flow 123 terminal -command "env | grep -i proxy" -message "Check proxy settings"

Использование в Docker-контейнере (щелкните, чтобы развернуть)

Если PentAGI работает в Docker, вы можете использовать ftester из контейнера:

# Run ftester inside the running PentAGI container
docker exec -it pentagi /opt/pentagi/bin/ftester [arguments]

# Examples:
docker exec -it pentagi /opt/pentagi/bin/ftester -flow 123 describe
docker exec -it pentagi /opt/pentagi/bin/ftester -flow 123 terminal -command "ps aux" -message "List processes"

Это особенно полезно для производственных развертываний, где нет локальной среды разработки.

Интеграция с инструментами наблюдаемости (щелкните, чтобы развернуть)

Все вызовы функций, сделанные через ftester, регистрируются в:

  1. Langfuse: Захватывает всю цепочку взаимодействий AI-агента, включая промпты, ответы и вызовы функций
  2. OpenTelemetry: Записывает метрики, трассировки и журналы для анализа производительности системы
  3. Вывод в терминал: Обеспечивает немедленную обратную связь о выполнении функций

Для доступа к подробным журналам:

  • Проверьте интерфейс Langfuse для трассировок AI-агента (обычно по адресу http://localhost:4000)
  • Используйте панели Grafana для системных метрик (обычно по адресу http://localhost:3000)
  • Просмотрите вывод в терминале для немедленных результатов и ошибок

Параметры командной строки

Основная утилита принимает несколько параметров:

  • -env <путь> - Путь к файлу окружения (необязательно, по умолчанию: .env)
  • -provider <тип> - Тип провайдера для использования (по умолчанию: custom, варианты: openai, anthropic, gemini, bedrock, ollama, deepseek, glm, kimi, qwen, minimax, custom)
  • -flow <идентификатор> - Идентификатор потока для тестирования функций, требующих его (0 означает использование имитаций, по умолчанию: 0)
  • -user <id> - идентификатор пользователя для тестирования функций, требующих его (по умолчанию: 0; 1 — администратор по умолчанию)
  • -task <id> - идентификатор задачи для контекста агента (необязательно)
  • -subtask <id> - идентификатор подзадачи для контекста агента (необязательно)

Аргументы, специфичные для функции, передаются после имени функции в формате -name value.

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

При уточнении промптов для работ по активной безопасности дайте агенту четкую методологию вместо плоского списка полезных нагрузок (payloads):

  1. Начните с явного определения области, авторизации и критериев успеха.
  2. Сначала составьте карту приложения: роли, маршруты, параметры, загрузки, интеграции и границы доверия.
  3. Систематически определяйте приоритеты поверхностей атаки, а не тестируйте всё сразу.
  4. Подтверждайте находки воспроизводимыми доказательствами перед переходом к более глубокой эксплуатации.
  5. Завершите заметками, готовыми для отчета, с указанием влияния, предварительных условий и следующих шагов.

Для получения рекомендаций по промптам, специфичным для PentAGI, см. backend/docs/prompt_engineering_pentagi.md. Для практической отправной точки используйте и адаптируйте examples/prompts/base_web_pentest.md в соответствии с целевым приложением, технологическим стеком и областью взаимодействия.

Сборка

Сборка Docker-образа

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

Linux/macOS

# Load version variables
source ./scripts/version.sh

# Standard build
docker build \
  --build-arg PACKAGE_VER=$PACKAGE_VER \
  --build-arg PACKAGE_REV=$PACKAGE_REV \
  -t pentagi:$PACKAGE_VER .

# Multi-platform build
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  --build-arg PACKAGE_VER=$PACKAGE_VER \
  --build-arg PACKAGE_REV=$PACKAGE_REV \
  -t pentagi:$PACKAGE_VER .

# Build and push
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  --build-arg PACKAGE_VER=$PACKAGE_VER \
  --build-arg PACKAGE_REV=$PACKAGE_REV \
  -t myregistry/pentagi:$PACKAGE_VER \
  --push .

Windows (PowerShell)

# Load version variables
. .\scripts\version.ps1

# Standard build
docker build `
  --build-arg PACKAGE_VER=$env:PACKAGE_VER `
  --build-arg PACKAGE_REV=$env:PACKAGE_REV `
  -t pentagi:$env:PACKAGE_VER .

# Multi-platform build
docker buildx build `
  --platform linux/amd64,linux/arm64 `
  --build-arg PACKAGE_VER=$env:PACKAGE_VER `
  --build-arg PACKAGE_REV=$env:PACKAGE_REV `
  -t pentagi:$env:PACKAGE_VER .

Быстрая сборка без версии

Для сборок для разработки без отслеживания версий:

docker build -t pentagi:dev .

[!NOTE] - Скрипты сборки автоматически определяют версию по git-тегам - Релизные сборки (на коммите тега) не имеют суффикса ревизии - Сборки для разработки (после тега) включают хэш коммита как ревизию (например, 1.1.0-bc6e800) - Чтобы использовать собранный образ локально, обновите имя образа в docker-compose.yml или используйте опцию build

Благодарности

Этот проект стал возможен благодаря следующим исследованиям и разработкам: - Новые архитектуры для LLM-приложений - Обзор автономных LLM-агентов - Codel от Андрея Семенца — первоначальное архитектурное вдохновение для автоматизации на основе агентов

Лицензия

PentAGI лицензирован в соответствии с лицензией MIT.

Авторские права (c) 2025 Команда разработчиков PentAGI

Зависимости от сторонних компонентов

Все сторонние зависимости используют лицензии, совместимые с MIT. См. каталог licenses/ для получения подробных отчетов о лицензиях.

Облачные сервисы VXControl

⚠️ Примечание: Хотя код VXControl Cloud SDK лицензирован по MIT, доступ к облачным сервисам VXControl (анализ угроз, поддержка ИИ, расширенные функции) требует отдельного лицензионного ключа и соблюдения Условий предоставления услуг.

Сам код SDK можно использовать бесплатно — доступ к сервисам требует регистрации.

По вопросам обращайтесь: info@pentagi.com или info@vxcontrol.com

Войдите, чтобы оставить комментарий