Полностью автономная система AI-агентов, способная выполнять комплексные задачи пентестинга в изолированных Docker-окружениях.
Автономные AI-агенты для пентестинга, которые динамически запускают код, находят уязвимости и подтверждают их работающими proof-of-concept эксплойтами, …
Автономная система пентестинга на базе GPT, автоматизирующая разведку, анализ уязвимостей, эксплуатацию и пост-эксплуатационные действия.
Открытый мультиагентный оркестратор для наступательной безопасности, координирующий несколько AI-агентов через восьмиэтапную цепочку операций для автономной разведки, …
Автономный фреймворк для пентестинга, использующий рой AI-агентов со стигмерджик-координацией для оркестрации разведки, эксплуатации и подготовки отчётов.
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
Pентест Aртифициальный Gенеральный Iнтеллект
Присоединяйтесь к сообществу! Общайтесь с исследователями безопасности, энтузиастами ИИ и этичными хакерами. Получайте поддержку, делитесь знаниями и будьте в курсе последних новостей PentAGI.
PentAGI — это инновационный инструмент для автоматизированного тестирования безопасности, использующий передовые технологии искусственного интеллекта. Проект предназначен для специалистов по информационной безопасности, исследователей и энтузиастов, которым нужно мощное и гибкое решение для проведения пентестов.
Вы можете посмотреть видео Обзор PentAGI:
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 включает сложные многоуровневые механизмы контроля агентов для обеспечения эффективного выполнения задач, предотвращения бесконечных циклов и интеллектуального восстановления из застрявших состояний:
<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.
<task_assignment> с планом выполнения и инструкциями.AGENT_PLANNING_STEP_ENABLED (по умолчанию: false).Лучше всего подходит для: Моделей < 32B параметров, сложных рабочих процессов тестирования на проникновение, повышения успешности выполнения сложных задач.
Расширенная конфигурация советника: Работает исключительно хорошо, когда советник использует более сильную модель или улучшенные настройки. Например, использование той же базовой модели с максимальным режимом рассуждения для советника (см. vllm-qwen3.5-27b-fp8.provider.yml) обеспечивает комплексный анализ задач и стратегическое планирование на основе идентичной архитектуры модели.
Влияние на производительность: Добавляет накладные расходы на планирование, но значительно повышает процент успешного завершения и сокращает избыточную работу
MAX_GENERAL_AGENT_TOOL_CALLS (по умолчанию: 100)MAX_LIMITED_AGENT_TOOL_CALLS (по умолчанию: 20)done, ask)Обязательно для моделей с параметрами < 32B: Тестирование с Qwen3.5-27B-FP8 показывает, что включение как мониторинга выполнения, так и планирования задач необходимо для небольших моделей с открытым исходным кодом: - Улучшение качества: результаты в 2 раза лучше по сравнению с базовым выполнением без наблюдения - Предотвращение циклов: значительно сокращает бесконечные циклы и избыточную работу - Разнообразие атак: поощряет исследование множества векторов атак вместо фиксации на одном подходе - Изолированные развертывания: обеспечивает автономное тестирование на проникновение производственного уровня в закрытых сетевых средах с локальным выводом LLM
Компромиссы: - Потребление токенов: увеличение в 2-3 раза из-за вызовов наставника/планировщика - Время выполнения: в 2-3 раза дольше из-за этапов анализа и планирования - Качество результатов: улучшение в 2 раза по полноте, точности и охвату атак - Требования к модели: работает лучше всего, когда советник использует расширенную конфигурацию (более высокие параметры рассуждения, более сильная версия модели или другая модель)
Стратегия конфигурации:
Для оптимальной производительности с небольшими моделями настройте агента-советника с расширенными параметрами:
- Используйте ту же модель с максимальным режимом рассуждений (пример: vllm-qwen3.5-27b-fp8.provider.yml)
- Или используйте более сильную модель для советника, сохраняя базовую модель для других агентов
- Настройте пороги мониторинга в зависимости от сложности задачи и возможностей модели
Архитектура PentAGI спроектирована как модульная, масштабируемая и безопасная. Вот ключевые компоненты:
Основные сервисы
Опциональный граф знаний
Стек мониторинга
Аналитическая платформа
Инструменты безопасности
Системы памяти
Система использует Docker-контейнеры для изоляции и простого развертывания, с отдельными сетями для основных сервисов, мониторинга и аналитики для обеспечения надлежащих границ безопасности. Каждый компонент спроектирован для горизонтального масштабирования и может быть настроен для высокой доступности в производственных средах.
Для пошагового руководства, которое связывает установку, настройку, тестирование LLM и провайдеров эмбеддингов, а также ваш первый вход в систему, обратитесь к руководству Установка и настройка PentAGI. Разделы ниже остаются подробным справочником для каждого шага.
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), что требует одного из следующих вариантов:
bash
sudo ./installerВариант 2 (среды разработки): Предоставьте вашему пользователю доступ к Docker-сокету, добавив его в группу docker:
```bash
# Добавьте вашего пользователя в группу docker
sudo usermod -aG docker $USER
newgrp docker
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 уже управляет несколькими областями настроек после запуска сервера:
Следующие области конфигурации по-прежнему должны задаваться на сервере через переменные окружения, compose-файлы или подключаемые конфигурационные файлы:
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_*.Для продакшена и повышенной безопасности:
Для продакшен-развертываний или сред, чувствительных к безопасности, мы настоятельно рекомендуем использовать распределённую двухузловую архитектуру, где операции воркеров изолированы на отдельном сервере. Это предотвращает выполнение недоверенного кода и проблемы с сетевым доступом на вашей основной системе.
См. подробное руководство: Настройка узла-воркера
Двухузловая схема обеспечивает: - Изолированное выполнение: Контейнеры воркеров работают на выделенном оборудовании. - Сетевая изоляция: Отдельные сетевые границы для тестирования на проникновение. - Границы безопасности: Docker-in-Docker с TLS-аутентификацией. - Поддержка OOB-атак: Выделенные диапазоны портов для внеполосных техник.
Многие рабочие процессы пентеста требуют 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). Это имеет два режима отказа:
/ и скомпрометировать весь узел, включая 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 использует фиксированные имена контейнеров и сетей, поэтому его необходимо адаптировать под вашу собственную сетевую конфигурацию.
См.: Развёртывание нескольких экземпляров для правил проверки, примечаний по обновлению и полного списка обязанностей оператора.
mkdir pentagi && cd pentagi
.env.example в .env или скачайте его:curl -o .env https://raw.githubusercontent.com/vxcontrol/pentagi/master/.env.example
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
.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
.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 для скрейпера, если вы хотите использовать другой сервер скрейпера для публичных URLSCRAPER_PRIVATE_URL — приватный URL для скрейпера (локальный сервер скрейпера в файле docker-compose.yml для доступа к локальным URL)PENTAGI_POSTGRES_USER и PENTAGI_POSTGRES_PASSWORD — учётные данные PostgreSQLNEO4J_USER и NEO4J_PASSWORD — учётные данные Neo4j (для графа знаний Graphiti).env, если вы хотите использовать его в VSCode или других IDE в качестве параметра envFile:perl -i -pe 's/\s+#.*$//' .env
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.comadminПри первом входе измените пароль по умолчанию перед использованием экземпляра для реальной работы. Если пароль администратора позже будет утерян, используйте меню обслуживания установщика для сброса пароля учётной записи 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 привязывается к 127.0.0.1 (только localhost) в целях безопасности. Чтобы получить доступ к PentAGI с других машин в вашей сети, необходимо настроить внешний доступ.
.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для гибкости
docker compose down
docker compose up -d --force-recreate
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"
Затем снова пересоздайте контейнеры.
# 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
https://localhost:8443https://your-server-ip:8443[!ПРИМЕЧАНИЕ] При доступе по IP-адресу вам потребуется принять предупреждение браузера о самозаверяющем SSL-сертификате.
PentAGI полностью поддерживает Podman в качестве альтернативы Docker. Однако при использовании Podman в rootless-режиме служба скрапера требует специальной настройки, поскольку rootless-контейнеры не могут привязываться к привилегированным портам (портам ниже 1024).
Конфигурация скрапера по умолчанию использует порт 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-режиме (с sudo), вы можете использовать конфигурацию по умолчанию без изменений. Скрапер будет работать на порту 443 как задумано.
Все конфигурации Podman полностью совместимы с Docker. Подход с непривилегированным портом работает одинаково в обоих контейнерных средах.
PentAGI позволяет настроить поведение ассистентов по умолчанию:
| Переменная | По умолчанию | Описание |
|---|---|---|
ASSISTANT_USE_AGENTS |
false |
Управляет значением по умолчанию для использования агентов при создании новых ассистентов |
Настройка ASSISTANT_USE_AGENTS влияет на начальное состояние переключателя «Использовать агентов» при создании нового ассистента в пользовательском интерфейсе:
- false (по умолчанию): Новые ассистенты создаются с отключенным делегированием агентов по умолчанию.
- true: новые ассистенты создаются с делегированием агентов, включенным по умолчанию
Обратите внимание, что пользователи всегда могут изменить эту настройку, переключив кнопку «Использовать агентов» в интерфейсе при создании или редактировании ассистента. Эта переменная окружения управляет только начальным состоянием по умолчанию.
Когда стек запущен и вы можете войти в веб-интерфейс, самый быстрый способ начать работу — через рабочий процесс Flows.
Хорошие первые подсказки обычно включают:
Пример:
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 для требований к допустимому использованию.
Форма нового потока включает выбор шаблона, который может пред заполнить поле сообщения сохраненным шаблоном потока. Это полезно, когда вы регулярно выполняете похожие оценки.
examples/prompts/base_web_pentest.md, если вам нужна практическая базовая линия для веб-тестированияШаблоны — это отправные точки. Вам не нужен специальный синтаксис для использования PentAGI: простые инструкции на естественном языке работают хорошо, если цель и задача ясны.
После отправки потока PentAGI автоматически открывает страницу потока.
Когда в потоке будет достаточно результатов, используйте меню Отчет на странице потока, чтобы:
Каждый поток также включает представление Ассистент для интерактивного руководства. Это полезно, когда автономный запуск обнаруживает что-то, что требует человеческого вмешательства, а не полного перезапуска.
Каждый поток имеет собственную вкладку Файлы на странице потока. Файлы привязаны к родительскому потоку: они хранятся в {dataDir}/flow-{id}-data/ на хосте и никогда не попадают в другие потоки.
Вкладка предоставляет три источника файлов:
uploads/): файлы, которые вы предоставляете через веб-интерфейс. Используйте действие Загрузить файлы или перетащите их прямо на вкладку «Файлы». Пока контейнер агента работает, загруженные файлы также помещаются в него по пути /work/uploads/, чтобы агент мог читать их обычными инструментами оболочки.resources/): файлы, прикрепленные из вашей сохраненной библиотеки пользовательских ресурсов через Прикрепить ресурсы из библиотеки. Прикрепленные ресурсы копируются в поток и помещаются в работающий контейнер по пути /work/resources/.container/): снимки, полученные из запущенного контейнера агента через Извлечь файл или каталог из контейнера. Они доступны только для чтения на стороне потока и никогда не отправляются обратно в контейнер.Действия для отдельных файлов на вкладке «Файлы» включают Скачать, Копировать путь, Сохранить как ресурс (переместить файл потока в вашу библиотеку переиспользуемых ресурсов) и Удалить. Действие «Извлечь» отключено, когда контейнер не запущен, с подсказкой «Контейнер не запущен».
Загруженные файлы и прикрепленные ресурсы автоматически перечисляются в системных подсказках агента через переменную шаблона {{.UserFiles}}, которая отображает компактный XML-блок <task_files> (с вложенными разделами <uploads> и <resources>), поэтому ассистент и агенты автоматизации могут ссылаться на них по пути без необходимости вставлять содержимое в чат. Снимки контейнера видны только в интерфейсе и не автоматически внедряются обратно в подсказку.
Текущие ограничения и лимиты, о которых следует знать:
/work/uploads/ и /work/resources/; файлы, записанные в другие пути контейнера, не автоматически зеркалируются обратно в файловую модель потока. Снимки контейнера могут быть получены из любого пути контейнера, который вы извлекаете (например, /etc/...), и кэшируются на стороне потока в container/; они не отправляются обратно в контейнер.flow-{id}-data/ на диске. Операторы по-прежнему должны вручную очищать каталог данных, если хотят освободить место.Для раннего тестирования начните с узкой цели и одной четкой задачи. Это упрощает проверку результатов и помогает уточнить подсказки перед проведением более масштабных оценок.
PentAGI предоставляет всесторонний программный доступ через REST и GraphQL API, позволяя интегрировать рабочие процессы тестирования на проникновение в ваши конвейеры автоматизации, процессы CI/CD и пользовательские приложения.
API-токены управляются через веб-интерфейс PentAGI:
Каждый токен связан с вашей учетной записью и наследует разрешения вашей роли.
Включите 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"
PentAGI предоставляет интерактивную документацию для изучения и тестирования конечных точек API:
Доступ к игровой площадке GraphQL по адресу https://your-pentagi-instance:8443/api/v1/graphql/playground
json
{
"Authorization": "Bearer YOUR_API_TOKEN"
}Доступ к документации REST API по адресу https://your-pentagi-instance:8443/api/v1/swagger/index.html
Bearer YOUR_API_TOKENВы можете генерировать типобезопасные API-клиенты для вашего предпочитаемого языка программирования, используя файлы схем, включенные в PentAGI:
Схема 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
Спецификация 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
bash
swagger-codegen generate \
-i https://your-pentagi-instance:8443/api/v1/swagger/doc.json \
-l typescript-axios \
-o ./pentagi-clientbash
npx swagger-typescript-api \
-p https://your-pentagi-instance:8443/api/v1/swagger/doc.json \
-o ./src/api \
-n pentagi-api.tsСоздание нового потока (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-токенами:
Список токенов показывает: - Имя токена (если указано) - ID токена (уникальный идентификатор) - Статус (активен/отозван/истёк) - Дата создания - Дата истечения срока действия
При использовании пользовательских 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-вызов инструмента для выбора образа контейнера; бэкенд, который не может вернуть корректный вызов инструмента, также завершится с ошибкой на этом шаге.Как исследовать:
docker compose logs -f pentagi) и журналы бэкенда вывода или прокси (llama.cpp, SGLang, vLLM или LiteLLM). Журнал бэкенда обычно показывает ту же ошибку парсинга, когда он генерирует поврежденный вызов инструмента.ctester, которая напрямую тестирует типы агентов, использующих вызовы инструментов. См. Тестирование LLM-агентов.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:
# 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 OllamaOLLAMA_SERVER_PULL_MODELS_ENABLED=true): первый запуск может занять несколько минут при загрузке моделейOLLAMA_SERVER_PULL_MODELS_TIMEOUT=900): 15 минут в секундахPentAGI требует модели с большими окнами контекста, чем стандартные конфигурации Ollama. Вам необходимо создать пользовательские модели с увеличенным параметром num_ctx через Modelfile. Хотя типичные рабочие процессы агентов потребляют около 64K токенов, PentAGI использует размер контекста 110K для запаса прочности и обработки сложных сценариев тестирования на проникновение.
Важно: параметр num_ctx можно установить только при создании модели через Modelfile — его нельзя изменить после создания модели или переопределить во время выполнения.
Создайте 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
Создайте 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/.
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 и реальными применениями в безопасности
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:
- Прямой API Anthropic:
ANTHROPIC_API_KEYиANTHROPIC_SERVER_URL(см. выше).- AWS Bedrock: переменные
BEDROCK_*(см. Конфигурация провайдера AWS Bedrock).Если вам нужно использовать 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 для всестороннего анализа кодовой базы - Вызов инструментов: Надёжный вызов функций с исключительной точностью для оркестрации инструментов безопасности - Потоковая передача: Потоковая передача ответов в реальном времени для интерактивных рабочих процессов тестирования на проникновение - Безопасность прежде всего: Встроенные механизмы безопасности, обеспечивающие ответственные практики тестирования безопасности - Мультимодальная поддержка: Возможности зрения в новейших моделях для анализа скриншотов и оценки безопасности пользовательских интерфейсов - Конституционный ИИ: Расширенное обучение безопасности, обеспечивающее надёжные и этичные рекомендации по безопасности
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)
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 запросов/мин для новых аккаунтов). Для производственного тестирования на проникновение:
- Запроосите увелиение квот через консоль AWS Service Quotas для моделей, которые вы планируете использовать
- Используйте модели Amazon Nova - более высокие квоты по умолчанию и отличная производительность
- Включите выделенную пропускную способность для последовательного высокообъемного тестирования ⁴. Отслеживайте использование - 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 инструментами для пентеста через вызов функций - Потоковая передача: потоковая передача ответов в реальном времени для интерактивных рабочих процессов оценки безопасности
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.
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.
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.
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).
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 предоставляет расширенные возможности для мониторинга и анализа операций AI-агентов.
.env.Полезные переменные окружения Langfuse
LANGFUSE_POSTGRES_USER и LANGFUSE_POSTGRES_PASSWORD — учётные данные PostgreSQL для LangfuseLANGFUSE_CLICKHOUSE_USER и LANGFUSE_CLICKHOUSE_PASSWORD — учётные данные ClickHouseLANGFUSE_REDIS_AUTH — пароль RedisLANGFUSE_SALT — соль для хеширования в веб-интерфейсе LangfuseLANGFUSE_ENCRYPTION_KEY — ключ шифрования (32 байта в hex)LANGFUSE_NEXTAUTH_SECRET — секретный ключ для NextAuthLANGFUSE_INIT_USER_EMAIL — email администратораLANGFUSE_INIT_USER_PASSWORD — пароль администратораLANGFUSE_INIT_USER_NAME — имя пользователя администратораLANGFUSE_INIT_PROJECT_PUBLIC_KEY — публичный ключ проекта (также используется со стороны PentAGI)LANGFUSE_INIT_PROJECT_SECRET_KEY — секретный ключ проекта (также используется со стороны PentAGI)LANGFUSE_S3_ACCESS_KEY_ID — идентификатор ключа доступа S3LANGFUSE_S3_SECRET_ACCESS_KEY — секретный ключ доступа S3.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}
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 — пароль администратораДля детального отслеживания работы системы доступна интеграция с инструментами мониторинга.
.env.OTEL_HOST=otelcol:8148
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"
[!IMPORTANT] Graphiti — это опциональная бета-интеграция и по умолчанию отключена. Ознакомьтесь с Ограничениями и безопасностью перед включением в производственной среде.
PentAGI интегрируется с Graphiti — системой темпоральных графов знаний на основе Neo4j, чтобы обеспечить расширенное семантическое понимание и отслеживание связей для операций AI-агентов. Форк vxcontrol предоставляет пользовательские типы сущностей и рёбер, специфичные для целей пентестинга.
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.
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 использует учётные данные активного 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.
Значения ниже являются рекомендуемыми 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.
Частые ошибки:
provider в YAML приводит к сбою проверки запуска контейнера Graphiti.LLM_CLIENT_TYPE=openai отклоняет локальные/пользовательские префиксы моделей; используйте пресет custom для локального сервера, совместимого с OpenAI.flowid запросы без идентификатора группы отклоняются. PentAGI автоматически предоставляет идентификатор группы, полученный из потока./queue-size сообщает счетчики ожидающих, обрабатываемых, активных групп и отброшенных.Обновляйте .env, docker-compose-graphiti.yml, образ Graphiti и каталог пресетов graphiti вместе. Только загрузка нового образа может сохранить старые настройки compose и незаметно изменить поведение извлечения.
127.0.0.1; защитите внешние развертывания сетевыми средствами контроля и аутентификацией на доверенном обратном прокси.GRAPHITI_ENABLED=false, чтобы явно отключить интеграцию.Интеграция OAuth с GitHub и Google позволяет пользователям проходить аутентификацию с использованием своих существующих учетных записей на этих платформах. Это дает несколько преимуществ:
PentAGI использует PUBLIC_URL как публичный источник/базовый URL для перенаправлений OAuth. В развертывании по умолчанию обратные вызовы и GitHub, и Google обрабатываются:
${PUBLIC_URL}/api/v1/auth/login-callback
Для GitHub OAuth:
PUBLIC_URL.${PUBLIC_URL}/api/v1/auth/login-callback..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:
${PUBLIC_URL}/api/v1/auth/login-callback..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 перенаправления.
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 Hub (docker.io), изменения переменных окружения PentAGI обычно недостаточно для устранения ошибок загрузки образов. PentAGI по-прежнему полагается на собственный доступ Docker к реестру для сервисов, управляемых Compose, а сетевые проверки установщика также проверяют доступность Docker Hub.
Для ограниченных сетей:
docker.io.PROXY_URL. Чтобы направлять загрузку Docker-образов через прокси, настройте прокси Docker daemon или Docker Desktop отдельно — Docker не использует PROXY_URL PentAGI для доступа к реестру.docker compose up.Пример конфигурации зеркала 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, обычно указывает на проблему с настроенным 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.
Для диагностики:
docker logs pentagi.LLM_SERVER_URL).simple, поскольку выбор образа выполняется через него.Выполните один раз 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)
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;"'
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 (облачный или самостоятельный) требует учета обоих параметров, и именно для этого они существуют:
extensions вместо public, поэтому установите DATABASE_EXTENSIONS_SCHEMA=extensions. Без этого запуск прерывается с ошибкой, указывающей схему, где фактически был найден vector — нет необходимости перемещать управляемое провайдером расширение с помощью ALTER EXTENSION.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 веб-приложения.
PentAGI включает мощную утилиту под названием ctester для тестирования и проверки возможностей LLM-агентов. Этот инструмент помогает убедиться, что конфигурации вашего LLM-провайдера корректно работают с различными типами агентов, позволяя оптимизировать выбор модели для каждой конкретной роли агента.
Утилита поддерживает параллельное тестирование нескольких агентов, детальные отчеты и гибкие параметры конфигурации.
Если вы клонировали реппозиторий и у вас установлен 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-образ без настройки окружения разработки:
# 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 с непроверенными организациями, у которых нет доступа к новым моделям рассуждения (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 для доступа к различным 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 Goopenrouter — для агрегатора OpenRouterorcarouter — для агрегатора OrcaRouterdeepinfra — для хостинга DeepInfranovita — для Novita AIxai — для xAI (модели grok-*)Пример с 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 — включить подробный вывод с детальными результатами тестов для каждого агентаАгенты тестируются в следующем детерминированном порядке:
simple_json) Примечание: Тестовая группа
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 ...
Этот инструмент помогает гарантировать, что ваши ИИ-агенты используют наиболее эффективные модели для своих конкретных задач, повышая надежность и оптимизируя затраты.
PentAGI использует векторные эмбеддинги для семантического поиска, хранения знаний и управления памятью. Система поддерживает несколько провайдеров эмбеддингов, которые можно настроить в соответствии с вашими потребностями и предпочтениями.
PentAGI поддерживает следующих провайдеров эмбеддингов:
Сторонние сервисы, совместимые с OpenAI: любой провайдер, предоставляющий API
/embeddingsOpenAI, может быть подключен через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` ниже).
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
Если вы запускаете 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, считайте его текущий контекст поиска ограниченным активным потоком или взаимодействием, если только вы явно не создадите отдельный рабочий процесс повторного использования между потоками.
flush или reindex для обеспечения согласованностиЕсли поток запускается, но затем, по-видимому, ожидает бесконечно, и никакие подзадачи не выполняются, распространенной причиной является неправильно настроенный или недоступный провайдер эмбеддингов. 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, чтобы старые и новые векторы не смешивались. См. Почему важна согласованность провайдеров эмбеддингов выше.
PentAGI включает универсальную утилиту ftester для отладки, тестирования и разработки конкретных функций и поведения AI-агентов. В то время как ctester фокусируется на тестировании возможностей LLM-моделей, ftester позволяет напрямую вызывать отдельные системные функции и компоненты AI-агентов с точным контролем над контекстом выполнения.
Запустите 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
Доступные функции (нажмите, чтобы развернуть)
query и mode (links, answer, research, exploit), и он автоматически выбирает, повторяет попытки и переключается между движками ниже, так что вам никогда не нужно явно указывать движокWEB_SEARCH_INTERNAL_ENABLED=true, настроенный скрапер и хотя бы один доступный движок ссылокКонтекст отладки потоков (щелкните, чтобы развернуть)
Функция 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 использует цветовое кодирование вывода для упрощения интерпретации:
Ответы в формате JSON и Markdown автоматически форматируются для удобочитаемости.
Продвинутые сценарии использования (щелкните, чтобы развернуть)
Когда PentAGI зависает в потоке:
describe, чтобы определить текущую задачу и подзадачуУбедитесь, что ключи 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"
При разработке новых шаблонов промптов или поведений агента:
Убедитесь, что контейнеры настроены правильно:
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, регистрируются в:
Для доступа к подробным журналам:
http://localhost:4000)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):
Для получения рекомендаций по промптам, специфичным для PentAGI, см. backend/docs/prompt_engineering_pentagi.md. Для практической отправной точки используйте и адаптируйте examples/prompts/base_web_pentest.md в соответствии с целевым приложением, технологическим стеком и областью взаимодействия.
Процесс сборки Docker автоматически внедряет информацию о версии из git-тегов. Чтобы правильно версионировать сборку, используйте предоставленные скрипты:
# 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 .
# 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 Cloud SDK лицензирован по MIT, доступ к облачным сервисам VXControl (анализ угроз, поддержка ИИ, расширенные функции) требует отдельного лицензионного ключа и соблюдения Условий предоставления услуг.
Сам код SDK можно использовать бесплатно — доступ к сервисам требует регистрации.
По вопросам обращайтесь: info@pentagi.com или info@vxcontrol.com