diff --git a/MASTERPLAN.md b/MASTERPLAN.md index 20fb266..8120961 100644 --- a/MASTERPLAN.md +++ b/MASTERPLAN.md @@ -309,48 +309,76 @@ Terraform-ressurser: ## LLM-RUTINGSSTRATEGI -**Prinsipp: Lett modell i front, tung modell ved behov i bakkant — vurdert per modul og kost.** +**Prinsipp:** Lett modell i front, tung modell ved behov i bakkant - vurdert per modul og kost. | Modell | Pris input/output (per 1M) | EU-tilgang | Bruksomrade | |---|---|---|---| -| `gemini-2.0-flash` | $0.10 / $0.40 | Ja (europe-west4) | Standard — alle enkle kall | -| `gemini-2.5-pro` | $1.25 / $10.00 | Ja (europe-west4) | Kompleks reasoning, compliance | -| `gemini-3.5-flash` | $1.50 / $9.00 | Nei (kun US/global) | Tung orkestrering, Fase C | +| `gemini-2.0-flash` | $0.10 / $0.40 | Ja (europe-west4) | Standard - alle enkle kall | +| `gemini-2.5-pro` | $1.25 / $10.00 | Ja (europe-west4) | Kompleks reasoning, compliance, OPAX heavy | +| `gemini-3.5-flash` | $1.50 / $9.00 | Nei (kun US/global) | Tung orkestrering, Fase C, OPAX heavy reasoning | **Rutetabell per modul:** | Modul / Agent | Standard modell | Eskalering til | Trigger | |---|---|---|---| -| OPAX billing-agent | `gemini-2.0-flash` | — | Aldri — strukturert data | +| OPAX billing-agent (standard) | `gemini-2.0-flash` | - | Aldri - strukturert data | +| **OPAX billing-agent (heavy)** | **`gemini-2.5-pro`** | **`gemini-3.5-flash`** | **`mode: heavy` - komplekse prosjekter / multi-agent** | | RAG retrieval + svar | `gemini-2.0-flash` | `gemini-2.5-pro` | Komplekse flertrinns-sporsmal | -| Memory Bank oppslag | `gemini-2.0-flash` | — | Aldri — faktahenting | +| Memory Bank oppslag | `gemini-2.0-flash` | - | Aldri - faktahenting | | TUI-cockpit (operator) | `gemini-2.0-flash` | `gemini-3.5-flash` | Bruker ber om dyp analyse | | vauco-os (kundeflate) | `gemini-2.0-flash` | `gemini-2.5-pro` | Compliance/kliniske sporsmal | -| **Dialogflow CX Playbooks** | **Gemini (managed)** | — | **Native i plattformen** | -| Fase C: Terraform-gen | `gemini-3.5-flash` | — | Standard for denne modulen | +| **Dialogflow CX Playbooks** | **Gemini (managed)** | - | **Native i plattformen** | +| Fase C: Terraform-gen | `gemini-3.5-flash` | - | Standard for denne modulen | | Fase C: Kunde-onboarding | `gemini-2.5-pro` | `gemini-3.5-flash` | Multi-step orkestrering | -**Konfigurasjon i `.env`:** +### OPAX Heavy Mode +OPAX aktiverer `mode: heavy` per request naar prosjektet krever det. +Bruksomrader: kompleks multi-agent analyse, Terraform-generering, kunde-onboarding, dype flertrinns-sporsmal. + +**Request-format:** +```json +{ + "message": "...", + "user_id": "opax", + "session_id": "opax-proj-001", + "mode": "heavy" +} +``` + +**Modellfordeling i heavy-modus (OPAX):** + +| Parameter | Standard | Heavy (OPAX) | +|---|---|---| +| Orchestrator | `gemini-2.0-flash` | `gemini-2.5-pro` | +| Sub-agenter | `gemini-2.0-flash` | `gemini-2.5-pro` | +| Reasoning | `gemini-2.0-flash` | `gemini-3.5-flash` | +| Multi-agent pipeline | Nei | Ja (research, compliance, billing sub-agenter) | +| Budsjettgrense | $3/dag per traad | $10/dag (eller per-prosjekt-budsjett) | + +**Autoriserte brukere for heavy mode:** `opax`, `admin` +- Andre brukere faar HTTP 403 ved forsok paa `mode: heavy` +- Hard stopp: $1 per oppgave (standard) / $3 per oppgave (heavy) + +**Implementasjon (`agent.py` / `config.py`):** +```python +HEAVY_MODE_ALLOWED_USERS = ["opax", "admin"] + +def get_models_for_mode(mode: str) -> dict: + if mode == "heavy": + return {"orchestrator": "gemini-2.5-pro", "subagent": "gemini-2.5-pro", "reasoning": "gemini-3.5-flash"} + return {"orchestrator": "gemini-2.0-flash", "subagent": "gemini-2.0-flash", "reasoning": "gemini-2.0-flash"} +``` + +**Konfigurasjon i `.env`:** ```env ORCHESTRATOR_MODEL=gemini-2.0-flash SUBAGENT_MODEL=gemini-2.0-flash REASONING_MODEL=gemini-3.5-flash +HEAVY_ORCHESTRATOR_MODEL=gemini-2.5-pro +HEAVY_SUBAGENT_MODEL=gemini-2.5-pro +HEAVY_REASONING_MODEL=gemini-3.5-flash +HEAVY_MODE_BUDGET_USD_PER_DAY=10.0 ``` -**Regionsstatus (mai 2026):** -- `gemini-2.0-flash` + `gemini-2.5-pro` tilgjengelig `europe-west4` ok -- `gemini-3.5-flash` kun `us-central1` / global endpoint -- Navarende prosjektregion: `us-central1` — dekker alle modeller ok -**Kostnadsestimat med ruting:** - -| Scenario | Uten ruting (3.5 Flash alt) | Med ruting | Besparelse | -|---|---|---|---| -| Dev daglig | ~$15-30/mnd | ~$1-5/mnd | ~85% | -| 1 kunde prod | ~$60-120/mnd | ~$8-20/mnd | ~85% | - ---- - -*OSVauco-NMTMD-GCOS | propane-will-491900-m5 | us-central1* -*GitHub: chrischristiansen-glitch/OSVauco* diff --git a/agents/rag/setup_corpus.py b/agents/rag/setup_corpus.py index dc0ec6e..6b6861e 100644 --- a/agents/rag/setup_corpus.py +++ b/agents/rag/setup_corpus.py @@ -34,13 +34,6 @@ def main(): print(f"Creating RAG corpus '{CORPUS_DISPLAY_NAME}' in {LOCATION}...") corpus = rag.create_corpus( display_name=CORPUS_DISPLAY_NAME, - backend_config=rag.RagVectorDbConfig( - rag_embedding_model_config=rag.RagEmbeddingModelConfig( - vertex_prediction_endpoint=rag.VertexPredictionEndpoint( - publisher_model="publishers/google/models/text-embedding-005" - ) - ) - ), ) print(f"Corpus created: {corpus.name}") diff --git a/docs/corpus-seed/masterplan-summary.md b/docs/corpus-seed/masterplan-summary.md index 9740ba7..83175da 100644 --- a/docs/corpus-seed/masterplan-summary.md +++ b/docs/corpus-seed/masterplan-summary.md @@ -10,7 +10,7 @@ Chris Christiansen er første kunde. Når det virker → selg til andre. - RAG-region: europe-west4 (Serverless, ingen allowlist) - Repo: chrischristiansen-glitch/OSVauco -## LLM-rutingsstrategi +## LLM-rutingsstrategi (standard: gemini-2.0-flash; heavy mode for OPAX: gemini-2.5-pro + gemini-3.5-flash + multi-agent) - ORCHESTRATOR_MODEL: gemini-2.0-flash (lett front) - SUBAGENT_MODEL: gemini-2.0-flash - REASONING_MODEL: gemini-3.5-flash (tung bakkant ved behov) @@ -58,7 +58,7 @@ Chris Christiansen er første kunde. Når det virker → selg til andre. ## Agentidentitet - Eier: chris.christiansen@vauco.no -- Agent (OPAX): jason.vauger@vauco.no (billing.viewer) +- Agent (OPAX): jason.vauger@vauco.no (billing.viewer) | Har tilgang til heavy mode (mode: heavy) for komplekse prosjekter og multi-agent pipelines ## Kostnader - Dev daglig (teardown): ~$25–75/mnd diff --git a/protocols/sessions/2026-05-24_opax-heavy-mode-llm-ruting-rag.md b/protocols/sessions/2026-05-24_opax-heavy-mode-llm-ruting-rag.md new file mode 100644 index 0000000..a92c5f3 --- /dev/null +++ b/protocols/sessions/2026-05-24_opax-heavy-mode-llm-ruting-rag.md @@ -0,0 +1,44 @@ +date: 2026-05-24T16:00:00+02:00 +thread_topic: OPAX heavy mode + LLM-rutingsstrategi + RAG re-indeksering +trigger: session-close +context_snapshot: > + Verifiserte at osvauco-agent svarer korrekt via /run-endepunktet med RAG-henting fra MASTERPLAN. + Designet og implementerte OPAX heavy mode (mode: heavy) som gir OPAX tilgang til tyngre modeller + (gemini-2.5-pro, gemini-3.5-flash) og multi-agent pipeline ved behov per prosjekt. + Oppdaterte MASTERPLAN.md og masterplan-summary.md med ny LLM-rutingsstrategi inkl. heavy mode. + Forsoekte RAG re-indeksering men stotet paa Spanner-kapasitetsbegrensning og SDK-versjonsproblem. + +completed_tasks: + - Verifisert /run-endepunkt med curl-test mot osvauco-agent (session test-002) + - Designet OPAX heavy mode: mode-parameter, modellfordeling, budsjettgrenser, whitelist + - Oppdatert MASTERPLAN.md: ny LLM-RUTINGSSTRATEGI-seksjon med OPAX Heavy Mode (linje 309-384) + - Oppdatert masterplan-summary.md: LLM-rutingsstrategi-tittel + OPAX heavy mode-notat + - Fikset setup_corpus.py: byttet fra Spanner/RagVectorDbConfig til Serverless (ingen backend_config) + +open_tasks: + - Kjoere setup_corpus.py paa nytt etter backend_config-fjerning og verifisere RAG-indeksering + - Verifisere at agent svarer korrekt paa 'OPAX heavy mode'-sporsmal etter re-indeksering + - Implementere mode-parameteret i agent.py / models.py (RunRequest + get_models_for_mode) + - Legge til HEAVY_MODE_ALLOWED_USERS-guard i agent.py + - Oppdatere .env med HEAVY_*-variabler + - Phase 4: Docs hardening (LEARNINGS.md, SECRETS-SETUP.md, IAP-SETUP.md) + - Phase 5: IAP paa opax.vauco.no + +decisions: + - OPAX faar eksplisitt mode-parameter (standard/heavy) per request - ikke global toggle + - Heavy mode autorisert kun for user_id: opax, admin + - Budsjettgrense heavy mode: $10/dag (vs $3/dag standard), hard stopp $3 per oppgave + - RAG Engine: Serverless mode (ingen backend_config) erstatter Spanner - unngaar allowlist-krav + - Primaeregion forblir us-central1 for aa dekke alle modeller inkl. gemini-3.5-flash + - us-east1 droppes som region for RAG (Spanner-kapasitetsproblem) + +skills_used: + - Python linje-for-linje filoppdatering via Cloud Shell + - Vertex AI RAG Engine API (RagVectorDbConfig, Serverless mode) + - Cloud Run /run endpoint curl-testing + - MASTERPLAN.md-arkitektur og dokumentasjon + +next_action: > + Kjore python3 agents/rag/setup_corpus.py (etter backend_config-fjerning) og verifisere + at RAG returnerer korrekt svar paa 'Hva er OPAX heavy mode?'. + Deretter implementere mode-parameter i agent.py. diff --git a/protocols/sessions/index.md b/protocols/sessions/index.md index fbdda08..98b2e0c 100644 --- a/protocols/sessions/index.md +++ b/protocols/sessions/index.md @@ -4,3 +4,4 @@ |------|------|-----| | 2026-05-21 | OSVauco/OPAX platform bootstrap — naming, domenekonvensjon, Nemotron TODO | [2026-05-21_osvauco-opax-platform-naming-domains.md](./2026-05-21_osvauco-opax-platform-naming-domains.md) | | 2026-05-22 | osv-startup.ps1 — banner design, farger, prompt og gcloud-fix | [2026-05-22_osv-startup-banner-styling.md](./2026-05-22_osv-startup-banner-styling.md) | +| 2026-05-24 | OPAX heavy mode + LLM-ruting + RAG re-indeksering | [2026-05-24_opax-heavy-mode-llm-ruting-rag.md](2026-05-24_opax-heavy-mode-llm-ruting-rag.md) |