Skip to content

Adapt Bayesian

adapt_bayesian — mvp.adapt_bayesian

Cluster: ML & Optimisation | Type: component | MCP Tools: 48

Overview

Bayesian probabilistic modelling block that computes posterior distributions for Gaussian, Bernoulli, and Poisson models using analytic conjugate priors — no MCMC required. When PyMC is installed it can be extended to full HMC/NUTS sampling; without it the block falls back to pure-Python closed-form conjugate updates with Box-Muller posterior sampling and credible interval calculation. Results include the posterior mean, standard deviation, and a configurable credible interval.

When to use:

  • Estimating the posterior mean of a measurement process from observed samples
  • Computing credible intervals for A/B test conversion rates (Bernoulli model)
  • Modelling event-rate uncertainty in count data (Poisson model)
  • Integrating uncertainty estimates into a goal-engine planning loop

Example:

from mvp.adapt_bayesian import AdaptBayesianBlock, BayesianInput

block = AdaptBayesianBlock(name="bayes")
result = block.infer(BayesianInput(
    data=[0.82, 0.79, 0.85, 0.88, 0.76],
    model_type="gaussian",
    prior_mean=0.8,
    prior_std=0.1,
    credible_interval=0.95,
))
# result.value.posterior_mean → ~0.82; result.value.credible_interval_high → upper bound

Works well with: adapt_sklearn, align_evals, adapt_learning

Public API

BayesianPriorRecommendation

Validated prior + likelihood recommendation decision record.

Field Type Default
prior dict[str, Any] required
likelihood str required
reasoning str required
source str required
notes str ''
context str ''

Methods:

distribution() -> str

to_dict() -> dict[str, Any]

The advisory payload as elicitation.handle_suggest_prior returns it.

to_metadata() -> dict[str, Any]

BayesianDecisionError(ValueError)

The LLM did not produce a usable, validated prior recommendation.

LLMBayesianRuntime

Provider-neutral prior + likelihood recommendation runtime over G6's LLM caller.

Constructor:

Parameter Type Default
llm LLMCaller \| None None

Methods:

recommend(data: list[float], context: str = '') -> Result[dict]

BayesianPriorPlanner

Runtime-first facade with the deterministic floor as honest fallback.

Constructor:

Parameter Type Default
runtime BayesianRuntime \| None None

Methods:

recommend(data: list[float], context: str = '') -> BayesianPriorRecommendation

AdaptBayesianBlock(AIBlock[BayesianInput, BayesianOutput, None])

Bayesian probabilistic modelling.

Field Type Default
name str 'adapt_bayesian'
resource_bounds ResourceBounds \| None None
usage ResourceUsage field(default_factory=ResourceUsage)

Methods:

infer(data: BayesianInput) -> Result[BayesianOutput]

BayesianInput(BaseModel)

Input to AdaptBayesianBlock.

Field Type Default
data list[float] required
model_type Literal['gaussian', 'bernoulli', 'poisson'] 'gaussian'
prior_mean float 0.0
prior_std float 1.0
n_samples int 1000
credible_interval float 0.95
random_seed int \| None 42

BayesianOutput(BaseModel)

Output from AdaptBayesianBlock.

Field Type Default
posterior_mean float required
posterior_std float required
credible_interval_low float required
credible_interval_high float required
n_samples int required
model_type str required
backend str required
interpretation str ''
diagnostic DiagnosticReport Field(default_factory=DiagnosticReport)
degraded bool False
degradation_reason str \| None None

Methods:

credible_interval() -> tuple[float, float]

Backward-compatible combined interval used by older integrations.

AdaptBayesianMCPBlock(AIBlock[MCPBayesInput, MCPBayesOutput, dict])

Full-featured Bayesian inference block with SQLite persistence.

Field Type Default
name str 'adapt_bayesian_mcp'
state dict \| None None
db_path str ':memory:'
traces_dir str ''
resource_bounds ResourceBounds \| None None
usage ResourceUsage field(default_factory=ResourceUsage)

Methods:

close() -> None

Release resources (DB connection).

infer(data: MCPBayesInput) -> Result[MCPBayesOutput]

MCPBayesInput(BaseModel)

Field Type Default
op Literal['model_define', 'model_list', 'model_info', 'model_delete', 'sample', 'sample_prior', 'sample_posterior_predictive', 'find_map', 'summary', 'diagnose', 'compare', 'predict', 'observation_add', 'observation_list', 'observation_delete', 'trace_save', 'trace_load', 'trace_list', 'trace_delete', 'ema_update', 'ema_query', 'ema_reset', 'ab_create', 'ab_record', 'ab_status', 'ab_conclude', 'suggest_prior', 'list_templates', 'list_conjugates', 'list_patterns', 'batch_sample', 'get_info', 'sensitivity', 'conjugate_update', 'query_posterior', 'bayes_factor', 'regression_fit', 'gp_fit', 'gp_predict', 'gp_optimize', 'model_export', 'model_import', 'plot_posterior', 'plot_trace', 'plot_ppc', 'bayes_discover_capabilities', 'bayes_dependency_health', 'bayes_backend_native_op'] required
request_id str ''
name str ''
spec_json str '{}'
obs_name str ''
data_json str '[]'
trace_name str ''
compare_models list[str] Field(default_factory=list)
new_obs_json str '{}'
n_samples int 1000
n_chains int 2
tune int 500
target_accept float 0.9
random_seed int 42
limit int 20
notes str ''
max_seconds float 120.0
value float 0.0
alpha float 0.1
variants_json str '[]'
variant str ''
success bool False
significance float 0.05
data list[float] Field(default_factory=list)
conjugate_type str ''
query_type str ''
threshold float 0.0
bound_lower float 0.0
bound_upper float 0.0
param_a str ''
param_b str ''
model_a str ''
model_b str ''
formula str ''
standardize bool False
kernel str 'rbf'
x_json str '[]'
y_json str '[]'
x_pred_json str '[]'
export_format str 'json'
include_samples bool False
figsize_json str '[8, 6]'
native_backend str ''
native_operation str ''
native_params_json str '{}'
safety_context_json str '{}'

MCPBayesOutput(BaseModel)

Field Type Default
op str required
ok bool True
request_id str ''
name str ''
backend str ''
summary str ''
message str ''
models list[dict[str, Any]] Field(default_factory=list)
traces list[dict[str, Any]] Field(default_factory=list)
observations list[dict[str, Any]] Field(default_factory=list)
experiments list[dict[str, Any]] Field(default_factory=list)
stats dict[str, Any] Field(default_factory=dict)
diagnostics dict[str, Any] Field(default_factory=dict)
predictions list[Any] Field(default_factory=list)
map_estimates dict[str, Any] Field(default_factory=dict)
count int 0
metadata dict[str, Any] Field(default_factory=dict)
figure_base64 str ''
export_data str ''
degraded bool False
degradation_reason str \| None None
degradation DegradationNotice \| None None
available_with list[str] Field(default_factory=list)
completion_state Literal['verified', 'qualified-draft', 'blocked-escalated'] 'qualified-draft'
warning_card WarningCard \| None None
evidence list[dict[str, Any]] Field(default_factory=list)
task_id str ''
run_id str ''
assumption_card BayesianAssumptionCard \| None None
prior_sensitivity PriorSensitivityReport \| None None
likelihood_assessment LikelihoodAssessment \| None None
interpretation_limits PosteriorInterpretationLimits \| None None
computational_diagnostics ComputationalDiagnostics \| None None
capability_discovery BayesianCapabilityDiscovery \| None None

BayesianStore

Sync SQLite store with 6 tables for Bayesian metadata.

Constructor:

Parameter Type Default
db_path str ':memory:'

Methods:

close() -> None

Close the database connection (idempotent).

upsert_model(name: str, spec: dict, backend: str) -> int

get_model(name: str) -> dict[str, Any] | None

list_models(limit: int = 50) -> list[dict[str, Any]]

delete_model(name: str) -> bool

delete_model_cascade(name: str) -> tuple[bool, list[str]]

Delete a model and every row that references it, atomically.

count_model_traces(name: str) -> int

upsert_trace(name: str, model_name: str, n_samples: int, n_chains: int, path: str, backend: str, summary: dict) -> int

get_trace(name: str) -> dict[str, Any] | None

list_traces(limit: int = 50) -> list[dict[str, Any]]

delete_trace(name: str) -> dict[str, Any] | None

upsert_observation(name: str, data: list, shape: list, dtype: str, x_data: list | None = None) -> int

get_observation(name: str) -> dict[str, Any] | None

list_observations(limit: int = 50) -> list[dict[str, Any]]

delete_observation(name: str) -> bool

add_experiment(model_name: str, obs_name: str, waic: float, loo: float, backend: str, notes: str) -> int

list_experiments(limit: int = 50) -> list[dict[str, Any]]

count_all() -> dict[str, int]

upsert_ema(name: str, alpha: float, value: float, count: int) -> int

get_ema(name: str) -> dict[str, Any] | None

delete_ema(name: str) -> bool

create_ab_experiment(name: str, variants: list[str]) -> int

get_ab_variants(name: str) -> list[dict[str, Any]]

record_ab_outcome(name: str, variant: str, success: bool) -> None

get_conjugate_state(name: str) -> dict[str, Any] | None

upsert_conjugate_state(name: str, conj_type: str, params: dict, n_obs: int) -> int

delete_conjugate_state(name: str) -> bool

delete_ab_experiment(name: str) -> bool

Functions

agentic_planner_enabled(default_enabled: bool = True) -> bool

Decide whether the agentic bayesian prior-planner should be used.

validate_prior_recommendation(rec: dict) -> dict

Reject any prior recommendation outside the canonical shape / bounds.

recommend_prior_floor(data: list[float], context: str = '') -> BayesianPriorRecommendation

Deterministic heuristic prior selector (the honest floor).

MCP Tools

Operation Source
model_define bayesian_mcp
model_list bayesian_mcp
model_info bayesian_mcp
model_delete bayesian_mcp
sample bayesian_mcp
sample_prior bayesian_mcp
sample_posterior_predictive bayesian_mcp
find_map bayesian_mcp
summary bayesian_mcp
diagnose bayesian_mcp
compare bayesian_mcp
predict bayesian_mcp
observation_add bayesian_mcp
observation_list bayesian_mcp
observation_delete bayesian_mcp
trace_save bayesian_mcp
trace_load bayesian_mcp
trace_list bayesian_mcp
trace_delete bayesian_mcp
ema_update bayesian_mcp
ema_query bayesian_mcp
ema_reset bayesian_mcp
ab_create bayesian_mcp
ab_record bayesian_mcp
ab_status bayesian_mcp
ab_conclude bayesian_mcp
suggest_prior bayesian_mcp
list_templates bayesian_mcp
list_conjugates bayesian_mcp
list_patterns bayesian_mcp
batch_sample bayesian_mcp
get_info bayesian_mcp
sensitivity bayesian_mcp
conjugate_update bayesian_mcp
query_posterior bayesian_mcp
bayes_factor bayesian_mcp
regression_fit bayesian_mcp
gp_fit bayesian_mcp
gp_predict bayesian_mcp
gp_optimize bayesian_mcp
model_export bayesian_mcp
model_import bayesian_mcp
plot_posterior bayesian_mcp
plot_trace bayesian_mcp
plot_ppc bayesian_mcp
bayes_discover_capabilities bayesian_mcp
bayes_dependency_health bayesian_mcp
bayes_backend_native_op bayesian_mcp