Some checks are pending
Check Python Version Consistency / Check Python Version (push) Waiting to run
3.9 KiB
3.9 KiB
ML-integrasjon i OSVauco
Fase: ML-1 implementert | ML-2 og ML-3 planlagt
Sist oppdatert: 2026-05-26
Hvorfor ML i OPAX?
OPAX er et multi-agent system. ML-laget gjør agentene sterkere på tre måter:
- Parallell kjøring (ML-1): Dask DAG lar agenter kjøre samtidig i stedet for sekvensielt.
- Adaptiv intelligens (ML-2): Agentene lærer fra faktisk bruk — heavy-mode aktiveres basert på historikk, ikke hardkodede regler.
- Strategisk innsikt (ML-3): XGBoost feature importance avslører hvilke agenter og signaler som faktisk driver vellykkede utfall.
Fase ML-1: Grunnlag (implementert)
Arkitektur
main.py → build_agent_dag([agent_a, agent_b], payload)
│
Dask task graph
│
┌──────────┴──────────┐
▼ ▼
run_agent_task(a) run_agent_task(b) ← parallelt
│ │
└──────────┬──────────┘
▼
execute_dag(tasks, scheduler="threads")
│
▼
[result_a, result_b] → AgentStateStore.push()
│
telemetry.log_agent_call()
Koble ML-laget inn i main.py
# Eksempel: erstatt sekvensielle kall med parallell DAG
from ml import build_agent_dag, execute_dag, get_store, log_agent_call
import time
@app.post("/run")
def run_agent(req: RunRequest):
store = get_store()
payload = {"message": req.message, "user_id": req.user_id,
"session_id": req.session_id, "mode": req.mode}
# Velg agenter basert på mode
if req.mode == "heavy":
agent_fns = [billing_agent_heavy, rag_agent, multi_agent]
else:
agent_fns = [billing_agent, rag_agent]
start = time.monotonic()
tasks = build_agent_dag(agent_fns, payload)
results = execute_dag(tasks, scheduler="threads")
total_dur = time.monotonic() - start
# Push resultater til state store
for r in results:
if r["success"]:
store.push(r["agent"], "last_result", r["result"])
store.push(r["agent"], "last_duration_s", r["duration_s"])
# Logg DAG-kjøring
from ml.telemetry import log_dag_execution
log_dag_execution(dag_id=req.session_id, agent_results=results,
total_duration_s=total_dur)
# Returner kombinert svar
return {"response": [r["result"] for r in results if r["success"]]}
Fase ML-2: Adaptiv intelligens (planlagt)
| Komponent | Fil | Repo |
|---|---|---|
| Inkrementell feedback-loop | ml/feedback_loop.py |
vauco-gemini-tui-bridge |
| ASHA hyperparametertuning | ml/hypertuner.py |
vauco-bootstrap |
| Heavy-mode predictor | ml/heavy_predictor.py |
OSVauco |
Krav: dask-ml>=2024.4.0, ray[tune]>=2.10.0 (vauco-bootstrap only)
Fase ML-3: Strategisk innsikt (planlagt)
| Komponent | Fil | Repo |
|---|---|---|
| XGBoost feature importance | ml/agent_importance.py |
OSVauco |
| Population-Based Training | experiments/pbt.py |
deep-dream |
Krav: xgboost>=2.0.0 (legg til requirements.txt i Fase ML-3)
Telemetri-ruting
| Miljø | TELEMETRY_DIR |
Arkivering |
|---|---|---|
| Lokal dev | /tmp/vauco_telemetry/ |
Manuell |
| Cloud Run | /tmp/vauco_telemetry/ |
10-cost-guard.sh cron → GCS |
| Prod skala | gs://propane-will-491900-m5-telemetry/ |
Auto via GCS sink |
Cross-repo referanser
| Repo | ML-relatert fil | Fase |
|---|---|---|
OSVauco |
ml/, AGENTS.md, docs/ml-integration.md |
ML-1 |
vauco-gemini-tui-bridge |
ml/feedback_loop.py (planlagt) |
ML-2 |
vauco-bootstrap |
ml/hypertuner.py (planlagt) |
ML-2 |
vauco-os |
Konsumerer beste konfig fra state store | ML-2 |
deep-dream |
experiments/pbt.py (planlagt) |
ML-3 |