🧬 Agenomics
Genetics for AI Agents — predictability and compatibility scoring for autonomous agent personalities.
Автор: Dm.Andreyanov Версия: 0.7.1 Связанные проекты: Prizolov Lab / Agent Genome Mapping (AGM)
📐 Формальная спецификация конвейера (Genome → Genome Schema → Phenotype → Trust Model → Compatibility Model → Drift Model → Observed Behaviour → Evolution/Mutation) —
docs/SPECIFICATION.md. Воспроизводимый бенчмарк внутренней согласованности формул (не путать с валидацией против реальных инцидентов) —benchmark/README.md. 🚀 Хотите подключить реального агента и начать собирать данные для Incident Correlation? —docs/CONNECT_YOUR_AGENTS.md(15 минут).⚠️ Методология следует semver 0.x — до релиза
1.0.0обратная совместимость API не гарантируется между minor-версиями. Между 0.2 и 0.3 уже менялась сигнатураTrustScorer()(добавлены параметры).
Что это
Agenomics — методология и open-source инструментарий для оценки предсказуемости личности ИИ-агента и его совместимости с другими агентами в команде, построенные на биологической метафоре генома.
В отличие от существующих подходов к «доверию к ИИ-агентам» (криптографическая идентичность, лимиты трат, блокчейн-подписи — см. Agent Passport Standard, AgenticTrust и др.), Agenomics фокусируется на другом вопросе:
Не «можно ли доверить агенту деньги», а «предсказуемо ли ведёт себя личность агента, и уживётся ли она с другими агентами в команде».
Ключевая идея
Каждый агент описывается геномом — структурированным набором параметров:
cognitive_genes— как агент мыслит (глубина рассуждений, креативность, риск-толерантность)ethics_genes— какие ограничения соблюдает (bias threshold, hard constraints)social_genes— как взаимодействует (стиль общения, разрешение конфликтов)meta_genes— как эволюционирует (скорость мутации, критерий отбора)
На основе генома вычисляется:
- Trust Score (0–100) — итоговая оценка предсказуемости и безопасности агента с учётом критичности домена (Impact Tier) и уровня автономности
- Compatibility Score — насколько хорошо два и более агентов сработаются в одной команде
Полная формула, таблица маппинга «поле генома → ось» и объяснение шкал — в docs/METHODOLOGY.md.
Быстрый старт
pip install agenomics
from agenomics import TrustScorer, AgentGenome
genome = AgentGenome(
id="cashflow-predictor-v1",
domain="finance",
autonomy="autonomous", # "advisory" | "autonomous"
transparency=70,
bias_control=85,
data_safety=90,
drift_rate=0.05,
has_ledger=True,
)
scorer = TrustScorer() # или TrustScorer(weight_profile="finance")
result = scorer.score(genome)
print(result.score) # 0-100
print(result.label) # Trusted / Conditional / High Risk
print(result.confidence) # High / Medium / Low — НЕ то же самое, что score
print(result.breakdown) # разбивка по 5 осям
print(result.capped_reason) # если применён потолок автономности
print(result.attribution) # ссылка на методологию/автора
Значения bias_control, transparency, data_safety и т.д. должны быть
в диапазоне [0, 100], drift_rate — в [0.0, 1.0]. Значения вне
диапазона вызывают ValueError уже на этапе создания AgentGenome.
Мультиязычность (v0.4.3)
from agenomics import TrustScorer, trust_report
result_en = TrustScorer(language="en").score(genome) # recommendations/capped_reason на английском
print(trust_report(result_en, agent_id="cashflow-predictor-v1", language="en"))
Поддерживаются "ru" (по умолчанию) и "en" — список в SUPPORTED_LANGUAGES.
trust_report_docx() принимает тот же параметр.
Настраиваемые профили весов (v0.3)
from agenomics import TrustScorer, TRUST_WEIGHT_PROFILES
print(list(TRUST_WEIGHT_PROFILES.keys()))
# ['default', 'healthcare', 'finance', 'content']
scorer = TrustScorer(weight_profile="healthcare") # DataSafety весит больше
# или произвольные веса (должны суммироваться в 1.0):
scorer = TrustScorer(weights={"transparency": 0.4, "bias_control": 0.3, "data_safety": 0.1, "predictability": 0.1, "accountability": 0.1})
Compatibility Scorer — совместимость команды агентов
from agenomics import AgentGenome, CompatibilityScorer
sales_agent = AgentGenome(
id="recommendation-agent",
bias_control=80, risk_tolerance=50, social_style=15, has_ledger=False,
)
support_agent = AgentGenome(
id="support-agent",
bias_control=82, risk_tolerance=50, social_style=90, has_ledger=True,
)
result = CompatibilityScorer().score_pair(sales_agent, support_agent)
print(result.score) # 0-100
print(result.breakdown) # разбивка по 4 осям
print(result.confidence) # High / Medium / Low
print(result.capped_reason) # если сработал потолок из-за этического конфликта
# Для команды из 3+ агентов:
team_result = CompatibilityScorer().score_team([sales_agent, support_agent])
print(team_result.average_score)
print(team_result.weakest_pair) # самое слабое звено команды
Роли агентов (v0.3) — различие не всегда плохо
reviewer = AgentGenome(id="reviewer", role="reviewer", bias_control=85, risk_tolerance=10, social_style=50)
executor = AgentGenome(id="executor", role="executor", bias_control=85, risk_tolerance=90, social_style=50)
result = CompatibilityScorer().score_pair(reviewer, executor)
print(result.complementary_roles) # True
print(result.breakdown["risk_tolerance"]) # 100.0 — разница риск-толерантности не штрафуется,
# т.к. это осознанный дизайн (осторожный ревьюер
# при рискованном исполнителе), а не конфликт
Множественный domain — гибкий Tier
# Агент поддержки, который иногда обрабатывает возвраты денег —
# Tier берётся как максимум (самый строгий) среди всех доменов.
genome = AgentGenome(id="support-refunds", domains=["support", "finance"])
print(genome.tier) # ImpactTier.TIER_3
Phenotype (v0.5.0) — геном + контекст = выраженные признаки
from agenomics import compute_phenotype, describe_genome_schema
# Одинаковый geном в разном контексте (Tier) даёт разный Phenotype —
# см. полную формализацию в docs/SPECIFICATION.md
pheno = compute_phenotype(genome)
print(pheno.expressed_traits) # tier-adjusted значения осей, до весов Trust Model
# Machine-readable описание допустимых полей AgentGenome:
describe_genome_schema()
DriftMonitor v2 (v0.6.0) — точнее обнаруживает деградацию
from agenomics import DriftMonitorV2
monitor = DriftMonitorV2()
for score in [88, 88, 88, 85, 82, 78, 74]: # слабая, но устойчивая деградация
monitor.record("support-bot", score)
report = monitor.report("support-bot")
print(report.severity) # 'mild'/'moderate'/... — v1 не обнаруживал такое вовсе
print(report.recovered) # True, если ранее была тревога, а сейчас её нет
Real-World Evaluation Layer (v0.6.0) — связь Declared Score с реальностью
from agenomics import RealWorldEvaluationLayer, Incident, IncidentSeverity
layer = RealWorldEvaluationLayer(min_observations=10)
layer.record_observation("support-bot", trust_result, incidents=[])
layer.record_observation("support-bot", trust_result_2, incidents=[Incident("...", IncidentSeverity.MODERATE)])
# ... накопите 10+ реальных наблюдений ...
report = layer.trust_reality_report("support-bot")
print(report.status) # "insufficient_data" пока не накоплено достаточно
print(report.correlation) # реальная (не синтетическая!) корреляция Declared Score ↔ инциденты
Это первая инфраструктура, делающая метрику Incident Correlation из
benchmark/ вычислимой на настоящих данных —
раньше она была принципиально not_computable из-за отсутствия
единой точки сбора.
Evidence Store (v0.7.0) — персистентность поверх Real-World Evaluation Layer
from agenomics import EvidenceStore, replay_into_evaluation_layer, RealWorldEvaluationLayer
# Записываем наблюдения — переживают перезапуск процесса (SQLite, stdlib)
store = EvidenceStore("agenomics_evidence.db")
store.record_observation("support-bot", declared_score=85, declared_label="Trusted", genome_hash="abc123")
store.export_json("export.json") # или export_csv(...)
# ...после перезапуска процесса — свежий, пустой RealWorldEvaluationLayer:
layer = RealWorldEvaluationLayer(min_observations=10)
replay_into_evaluation_layer(store, layer, "support-bot") # восстанавливает историю с диска
print(layer.trust_reality_report("support-bot"))
EvidenceStore не заменяет RealWorldEvaluationLayer — дополняет его
персистентностью, которой ему честно не хватало с v0.6.0. Схема хранения
следует протоколу AEP-001.
Confidence на уровне гена (v0.7.1)
genome = AgentGenome(
id="x", bias_control=80, data_safety=90,
axis_confidence={"bias_control": 0.4}, # уверены в data_safety, не уверены в bias_control
)
result = TrustScorer().score(genome)
print(result.axis_confidence) # {'bias_control': 0.4, 'data_safety': 1.0, ...}
Влияет только на confidence/confidence_ratio, не на сам score.
Per-Axis Drift Monitor (v0.7.1) — какая именно ось деградирует
from agenomics import PerAxisDriftMonitor
monitor = PerAxisDriftMonitor()
for breakdown in history_of_breakdowns: # список TrustResult.breakdown во времени
monitor.record("support-bot", breakdown)
print(monitor.weakest_axis("support-bot")) # например, 'bias_control' — не просто общий score
Team Compatibility Heatmap (v0.7.1)
from agenomics import build_compatibility_matrix, render_heatmap_svg
matrix = build_compatibility_matrix([alice, bob, carol, dave])
print(matrix.weakest_pair) # например, ('alice', 'dave', 50.0) — сразу видно, кто конфликтует
svg = render_heatmap_svg(matrix) # готовое SVG-изображение
Веб-API
Методология доступна и как HTTP-API — POST /score и POST /compatibility.
Конфиг для самостоятельного деплоя (например, на Amvera) — amvera.yml.
Замените <ваш-адрес-развёртывания> на реальный адрес после деплоя:
curl -X POST https://<ваш-адрес-развёртывания>/compatibility \
-H "Content-Type: application/json" \
-d '{
"agents": [
{"id": "sales", "bias_control": 80, "risk_tolerance": 50, "social_style": 15},
{"id": "support", "bias_control": 82, "risk_tolerance": 50, "social_style": 90}
]
}'
Для кого: Команды, которые хотят автоматизировать аудит в CI/CD или дашборде.
Модули v0.4
Семь дополнительных модулей, расширяющих ядро (Trust Score + Compatibility Score):
Drift Monitor — тренд Trust Score во времени
from agenomics import DriftMonitor
monitor = DriftMonitor()
monitor.record("cashflow-bot", score=88)
monitor.record("cashflow-bot", score=75)
monitor.record("cashflow-bot", score=62)
report = monitor.report("cashflow-bot")
print(report.trend, report.alert) # 'degrading', True
Incident Feedback — Observed Score на основе реальных инцидентов
from agenomics import IncidentFeedback, Incident, IncidentSeverity
feedback = IncidentFeedback()
result = feedback.apply(
declared_score=88, declared_label="Trusted",
incidents=[Incident("Слил email клиента", IncidentSeverity.SEVERE)],
)
print(result.observed_score, result.observed_label) # 63.0, 'Conditional'
Genome Ledger — хэш-цепочка записей аудита
from agenomics import GenomeLedger
ledger = GenomeLedger()
entry = ledger.record(genome, TrustScorer().score(genome))
print(ledger.verify_integrity()) # True
Genome Matchmaker — подбор оптимальной команды
from agenomics import GenomeMatchmaker
match = GenomeMatchmaker().best_team(candidates=[alice, bob, carol], roles=["reviewer", "executor"])
print(match.assignment, match.team_result.average_score)
Chain Risk Aggregator — риск последовательного пайплайна
from agenomics import ChainRiskAggregator
result = ChainRiskAggregator().score_chain([extract_agent, transform_agent, load_agent])
print(result.chain_reliability) # произведение, не среднее — ниже, чем ожидалось бы
Prompt-to-Genome Extractor — автоматическое извлечение генома из промпта
Библиотека не делает сетевых вызовов сама — вы передаёте функцию вызова своей LLM (Claude/GPT/любой другой):
from agenomics import PromptToGenomeExtractor
def call_my_llm(prompt: str) -> str:
return my_llm_client.complete(prompt) # ваша интеграция
extractor = PromptToGenomeExtractor(llm_call=call_my_llm)
genome = extractor.extract(agent_id="support-bot", system_prompt="...")
Reports — готовые отчёты (Markdown и Word)
from agenomics import trust_report, compatibility_report
print(trust_report(result, agent_id="support-bot"))
Для брендированного Word-документа (шапка Prizolov Lab, прогресс-бары по
осям, карточки рекомендаций с «как сделать») — установите опциональную
зависимость и используйте trust_report_docx():
pip install agenomics[docx]
from agenomics import trust_report_docx
trust_report_docx(result, agent_id="support-bot", output_path="report.docx")
Подробности и ограничения каждого модуля — в docs/METHODOLOGY.md.
Структура репозитория
agenomics/
├── agenomics/
│ ├── trust_score.py # AgentGenome, TrustScorer
│ ├── compatibility.py # CompatibilityScorer
│ ├── phenotype.py # Genome Schema, Phenotype (SPECIFICATION.md)
│ ├── evaluation.py # Real-World Evaluation Layer (v0.6.0)
│ ├── evidence.py # Evidence Store — персистентность, SQLite (v0.7.0), схема AEP-001 (v0.7.1)
│ ├── per_axis_drift.py # Per-Axis Drift Monitor (v0.7.1)
│ ├── heatmap.py # Team Compatibility Heatmap (v0.7.1)
│ ├── drift.py # Drift Monitor
│ ├── feedback.py # Incident Feedback Loop
│ ├── ledger.py # Genome Ledger
│ ├── matchmaker.py # Genome Matchmaker
│ ├── chain.py # Chain Risk Aggregator
│ ├── extractor.py # Prompt-to-Genome Extractor
│ ├── reports.py # Markdown/DOCX-отчёты
│ └── api.py # веб-API (FastAPI)
├── benchmark/ # Synthetic Benchmark Suite + Evidence Quality (sensitivity.py),
│ # репо-инструмент, НЕ входит в pip-пакет — см. benchmark/README.md
├── prompts/ # системные промпты (Trust Auditor и др.)
├── docs/ # SPECIFICATION.md, METHODOLOGY.md
├── tests/ # тесты (145+)
├── .github/workflows/ # CI — тесты запускаются на каждый push/PR
├── amvera.yml # конфиг деплоя веб-API на Amvera
├── requirements.txt # зависимости для ЗАПУСКА (тесты, FastAPI/uvicorn)
├── pyproject.toml # метаданные пакета для PyPI (ядро — без внешних зависимостей)
├── CHANGELOG.md # история версий
└── CONTRIBUTING.md # как предложить изменения
Почему requirements.txt и pyproject.toml — не дублирование
Это может выглядеть избыточным, поэтому явно: pyproject.toml описывает
только сам пакет agenomics, который ставится через pip install agenomics —
у ядра библиотеки нет внешних зависимостей, кроме стандартной библиотеки
Python. requirements.txt нужен для запуска этого репозитория —
тестов (pytest) и веб-API (fastapi, uvicorn), в том числе через
amvera.yml → build.requirementsPath. Если вы просто ставите пакет
через pip — requirements.txt вам не нужен.
Методология
Полное описание методологии, формула, таблица маппинга «поле генома →
ось», объяснение шкал (social_style, risk_tolerance) и диапазоны
валидации — в docs/METHODOLOGY.md.
Roadmap
- v0.1 — формула Trust Score, Tier-множитель, потолок автономности
- v0.1 — промпт Trust Auditor (см.
prompts/) - v0.2 — Compatibility Scorer между несколькими агентами
- v0.2 — веб-API (
/score,/compatibility) на Amvera - v0.2 — публикация пакета на PyPI
- v0.3 — настраиваемые профили весов (
healthcare/finance/content/safety_critical) - v0.3 — роли агентов в Compatibility Score (
executor/reviewer) - v0.3 — множественный
domain, гибкая классификация Tier - v0.3 — Confidence (уверенность в оценке, отдельно от score)
- v0.3 — атрибуция с бэклинком в промпте, коде и API
- v0.3 — валидация диапазонов входных данных
- v0.3 — CI (GitHub Actions), CHANGELOG.md, CONTRIBUTING.md
- v0.4 — Drift Monitor (тренд Trust Score во времени)
- v0.4 — Incident Feedback Loop (Observed Score на основе реальных инцидентов)
- v0.4 — Genome Ledger (хэш-цепочка записей аудита)
- v0.4 — Genome Matchmaker (подбор оптимальной команды)
- v0.4 — Chain Risk Aggregator (риск последовательного пайплайна агентов)
- v0.4 — Prompt-to-Genome Extractor (с pluggable LLM-клиентом)
- v0.4 — Reports (
.to_report()в Markdown) - v0.4.2 — how_to (практическая подсказка «как сделать» к каждой рекомендации)
- v0.4.2 — trust_report_docx() — брендированный Word-отчёт (опц. python-docx)
- v0.4.3 — мультиязычность (
language="ru"|"en"в Scorer'ах и report-функциях) - v0.4.3 — инструкция определения языка в промпте Trust Auditor (v0.4)
- v0.5.0 — AGENOMICS SPECIFICATION v1.0 (
docs/SPECIFICATION.md) — формальный конвейер Genome → Genome Schema → Phenotype → Trust Model → Compatibility Model → Drift Model → Observed Behaviour → Evolution/Mutation - v0.5.0 — Genome Schema + Phenotype как реализованные, тестируемые понятия (
agenomics/phenotype.py) - v0.5.0 — Synthetic Benchmark Suite (
benchmark/) — 5 вычислимых метрик + честныйnot_computableдля Incident Correlation - v0.6.0 — DriftMonitorV2 (rolling window, EWMA, волатильность, severity, recovery detection) — исправляет находку бенчмарка v0.1 (mild-деградация не обнаруживалась)
- v0.6.0 — Compatibility Accuracy v2 — 270 систематических случаев в 9 категориях вместо 4 ручных
- v0.6.0 — RealWorldEvaluationLayer — инфраструктура для реальной (не синтетической) Incident Correlation на production-данных
- v0.6.0 —
benchmark/BENCHMARKS.md— зафиксированные, воспроизводимые числа - v0.6.1 — Evidence Quality: Weight Sensitivity, Threshold Sensitivity, Bootstrap 95% CI (
benchmark/sensitivity.py) — устойчивость метрик, не новый функционал - v0.7.0 — Evidence Store (
agenomics/evidence.py) — персистентное (SQLite, stdlib) хранилище наблюдений/инцидентов с provenance, JSON/CSV экспорт,replay_into_evaluation_layer() - v0.7.0 — CI теперь явно прогоняет
benchmark.run_benchmarkотдельным шагом (помимо unit-тестов) - v0.7.0 —
docs/CONNECT_YOUR_AGENTS.md— практический гайд подключения реальных агентов за 15 минут (единственный оставшийся барьер до predictive validity — не код, а реальные данные) - v0.7.1 — AEP-001 — Agenomics Evidence Protocol v1.0, формальная схема Observation/Incident/Provenance с обязательным правилом Privacy (никаких сырых пользовательских текстов по умолчанию)
- v0.7.1 — Confidence на уровне гена (
AgentGenome.axis_confidence) - v0.7.1 —
PerAxisDriftMonitor— дрейф каждой оси Trust Score отдельно, с экспертной калибровкой волатильности по типу гена - v0.7.1 — Team Compatibility Heatmap (
agenomics/heatmap.py) - v0.7.1 —
docs/PRIZOLOV_BRIDGE_INTERFACE.md— честный интерфейс-контракт для внешних интеграций (не готовая интеграция без доступа к реальному внешнему API) - v0.8 — Evolution/Mutation как предложение, требующее подтверждения человеком (не автоматическая саморегуляция) — пока не реализовано даже как прототип
- v0.8 — реальная Incident Correlation на настоящих production-данных, накопленных через EvidenceStore (инфраструктура уже готова с двух сторон — сбор и хранение)
- v0.8 — формальный Evaluation Protocol (EP-001..EP-00N с input/ground truth/metric/threshold/CI на каждый)
- v0.8 — предиктивная валидность (Trust Score(t) → вероятность инцидента в будущем, ROC-AUC/Brier Score) — качественно другой уровень, чем текущая корреляция
- v0.8 — веб-калькулятор на prizolov.ru
- v0.8 — Genome Ledger как публичный сервис (сейчас — только локальный in-memory прототип)
- v0.8 — мультиязычность за пределами ru/en (требует новых словарей переводов вручную)
Полная история изменений — в CHANGELOG.md.
Тесты и CI
pip install -r requirements.txt
PYTHONPATH=. pytest tests/ -v
Тесты автоматически запускаются на каждый push/PR через GitHub Actions
(см. .github/workflows/).
Contributing
См. CONTRIBUTING.md. Обратная связь и предложения —
через GitHub Issues.
Лицензия
Apache 2.0 — см. LICENSE.
© 2026 Dm.Andreyanov. Agenomics — независимый проект, развивающий идеи Agent Genome Mapping™ (Prizolov Lab).
Release files for agenomics 0.7.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| agenomics-0.7.1.tar.gz | 81.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| agenomics-0.7.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 143.9 kB
Release files / agenomics-0.7.1.tar.gz
| Download URL | agenomics-0.7.1.tar.gz |
|---|---|
| Size | 81.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d1dbd81427a0cef389fb977586c57073c2f617c7b98104c2b42b565d47518fe4
|
|
BLAKE2b-256 checksum How to use checksums |
b31fa913e96a57da51b38af26d097bee694af0e290b3497a761126383cd727c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / agenomics-0.7.1-py3-none-any.whl
| Download URL | agenomics-0.7.1-py3-none-any.whl |
|---|---|
| Size | 62.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b39c9cadbcdcedf073900fba0474a3a05f41abb530a9488ea69375376df3bbe7
|
|
BLAKE2b-256 checksum How to use checksums |
ad06608cf649eaf635771ef902bac37b365e3ae0f3012fd227d61514f7500b2a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|