chore(gemini): upgrade to Claude Opus 4.6 via Vertex AI EU endpoint

This commit is contained in:
chrischristiansen-glitch 2026-05-31 12:42:12 +02:00
parent 800c47ef85
commit 50ddeeb46b

View File

@ -1,6 +1,6 @@
# GEMINI.md — OSVauco / OPAX # GEMINI.md — OSVauco / OPAX
> Gemini 2.5 Pro · Nemotron session protocol · HITL-safe > Claude Opus 4.6 · Vertex AI EU endpoint · Nemotron session protocol · HITL-safe
--- ---
@ -12,9 +12,12 @@ MCP_PROTOCOL: OPAX Protocol
ROOT_DOMAIN: vauco.no ROOT_DOMAIN: vauco.no
HUB_URL: https://opax.vauco.no HUB_URL: https://opax.vauco.no
GCP_PROJECT: propane-will-491900-m5 GCP_PROJECT: propane-will-491900-m5
GCP_REGION: us-central1 GCP_REGION: europe-west1
GCP_VERTEX_LOC: eu
CLOUD_RUN_SVC: osvauco-agent CLOUD_RUN_SVC: osvauco-agent
ARTIFACT_REPO: gcr.io/propane-will-491900-m5 ARTIFACT_REPO: gcr.io/propane-will-491900-m5
MODEL: claude-opus-4-6@20260301
MODEL_PROVIDER: Vertex AI (Anthropic Claude via Google Cloud)
OPERATOR: Chris Christiansen (chris.christiansen@vauco.no) OPERATOR: Chris Christiansen (chris.christiansen@vauco.no)
OPERATOR_ROLE: Eier, arkitekt og primær operatør av OSVauco / OS-Vauco OPERATOR_ROLE: Eier, arkitekt og primær operatør av OSVauco / OS-Vauco
``` ```
@ -23,6 +26,40 @@ OPERATOR_ROLE: Eier, arkitekt og primær operatør av OSVauco / OS-Vauco
--- ---
## Modell: Claude Opus 4.6 via Vertex AI
Denne agenten kjøres med **Claude Opus 4.6** tilgjengelig via Vertex AI EU multi-region endpoint.
- Data forblir innenfor EU-grensen (GDPR-compliant) [cite:76]
- Ingen separat Anthropic API-nøkkel — billing via eksisterende GCP-konto
- EU endpoint auto-routes internt mellom europeiske regioner for kapasitet
```python
# Korrekt initialisering
import anthropic
client = anthropic.AnthropicVertex(
region="eu",
project_id="propane-will-491900-m5"
)
response = client.messages.create(
model="claude-opus-4-6@20260301",
max_tokens=8192,
messages=[{"role": "user", "content": "..."}]
)
```
```bash
# Aktiver model i Vertex AI Model Garden (kun første gang)
# Console → Vertex AI → Model Garden → søk "Claude Opus" → Enable
# Auth
gcloud auth application-default login --project=propane-will-491900-m5
```
---
## Kontekst: Hvem og hvordan ## Kontekst: Hvem og hvordan
**Operatør: Chris Christiansen** — eier og arkitekt bak OSVauco og OS-Vauco. **Operatør: Chris Christiansen** — eier og arkitekt bak OSVauco og OS-Vauco.
@ -139,8 +176,8 @@ gcloud artifacts docker images list \
### Regel 3: Aldri fiks symptomer — fiks rot-årsak ### Regel 3: Aldri fiks symptomer — fiks rot-årsak
❌ Feil: «build feiler → legg til --no-cache» ❌ Feil: «build feiler → legg til --no-cache»
✅ Riktig: «build feiler → les logg → Step 3/8 feiler på apt-get → dependency mangler → fiks Dockerfile" ✅ Riktig: «build feiler → les logg → Step 3/8 feiler på apt-get → dependency mangler → fiks Dockerfile»
### Regel 4: Bekreft alltid før du konkluderer at noe virker ### Regel 4: Bekreft alltid før du konkluderer at noe virker
@ -175,7 +212,7 @@ VERIFY: [kommando for å bekrefte fix]
### BOOT ### BOOT
- Read `docs/AGENT_RULEBOOK.md`, `docs/VAUCO_OS_ROADMAP.md`, and `docs/OSVAUCO_OPAX_SESSION_LOG.md`. - Read `docs/AGENT_RULEBOOK.md`, `docs/VAUCO_OS_ROADMAP.md`, and `docs/OSVAUCO_OPAX_SESSION_LOG.md`.
- Print LOCKED DEFINITIONS (`MCP_NAME`, `MCP_PROTOCOL`, `HUB_URL`, `ROOT_DOMAIN`, `GCP_PROJECT`, `OPERATOR`). - Print LOCKED DEFINITIONS (`MCP_NAME`, `MCP_PROTOCOL`, `HUB_URL`, `ROOT_DOMAIN`, `GCP_PROJECT`, `MODEL`, `OPERATOR`).
- Print the last `## NESTE OPPGAVE` block found in the session log. - Print the last `## NESTE OPPGAVE` block found in the session log.
- If no NESTE OPPGAVE found → warn and read ROADMAP NOW section instead. - If no NESTE OPPGAVE found → warn and read ROADMAP NOW section instead.
- Sjekk gjeldende GCP auth: `gcloud auth list` og `gcloud config get-value project` - Sjekk gjeldende GCP auth: `gcloud auth list` og `gcloud config get-value project`
@ -241,7 +278,6 @@ VERIFY: [kommando for å bekrefte fix]
### 🔴 Cloud Build feiler ### 🔴 Cloud Build feiler
```bash ```bash
# Steg 1: Hent siste build-ID og vis hele loggen
BUILD_ID=$(gcloud builds list \ BUILD_ID=$(gcloud builds list \
--project=propane-will-491900-m5 \ --project=propane-will-491900-m5 \
--limit=1 \ --limit=1 \
@ -251,122 +287,73 @@ gcloud builds log $BUILD_ID \
--project=propane-will-491900-m5 2>&1 | tail -100 --project=propane-will-491900-m5 2>&1 | tail -100
``` ```
Les output:
- Finn linjen `Step X/Y` som feilet
- Les error-meldingen på den linjen
- Sjekk Dockerfile/cloudbuild.yaml mot feilen
- IKKE søk på nett før du har lest og forstått feilen
Vanlige årsaker: Vanlige årsaker:
- `exit 125` → Docker ukjent flagg eller image-pull feil → les «Step» som feilet - `exit 125` → Docker ukjent flagg eller image-pull feil
- `exit 1` på apt-get → dependency ikke funnet → sjekk pakkenavn - `exit 1` på apt-get → dependency ikke funnet
- `exit 1` på COPY → fil eksisterer ikke i build-kontekst → sjekk .dockerignore - `exit 1` på COPY → fil eksisterer ikke i build-kontekst
- `exit 1` på pip install → requirements-konflikt → les pip-output i loggen - `exit 1` på pip install → requirements-konflikt
### 🔴 Cloud Run svarer ikke / returnerer feil ### 🔴 Cloud Run svarer ikke / returnerer feil
```bash ```bash
# Steg 1: Sjekk om tjenesten er oppe
gcloud run services describe osvauco-agent \ gcloud run services describe osvauco-agent \
--project=propane-will-491900-m5 \ --project=propane-will-491900-m5 \
--region=us-central1 \ --region=europe-west1 \
--format="value(status.conditions)" --format="value(status.conditions)"
# Steg 2: Les runtime-logger
gcloud logging read \ gcloud logging read \
'resource.type=cloud_run_revision AND resource.labels.service_name=osvauco-agent' \ 'resource.type=cloud_run_revision AND resource.labels.service_name=osvauco-agent' \
--project=propane-will-491900-m5 \ --project=propane-will-491900-m5 \
--limit=50 \ --limit=50 \
--order=desc \ --order=desc \
--format="table(timestamp,textPayload,jsonPayload.message)" --format="table(timestamp,textPayload,jsonPayload.message)"
# Steg 3: Test endepunktet direkte (bypasser IAP)
curl -sv -o /dev/null \
-H "Authorization: Bearer $(gcloud auth print-identity-token)" \
https://osvauco-agent-357036551735.us-central1.run.app/health
``` ```
### 🔴 Auth / IAP-feil ### 🔴 Auth / IAP-feil
```bash ```bash
# Sjekk hvem du er autentisert som
gcloud auth list gcloud auth list
gcloud config get-value project gcloud config get-value project
# Hent identity token for testing
gcloud auth print-identity-token gcloud auth print-identity-token
# Sjekk IAP-tilgang
gcloud iap web get-iam-policy \ gcloud iap web get-iam-policy \
--project=propane-will-491900-m5 \ --project=propane-will-491900-m5 \
--resource-type=cloud-run \ --resource-type=cloud-run \
--service=osvauco-agent --service=osvauco-agent
``` ```
### 🔴 Docker-feil lokalt ### 🔴 Claude / Vertex AI-feil
```bash ```bash
# Bygg image lokalt for å isolere feilen # Test Claude Opus 4.6 via Vertex EU endpoint
docker build -t osvauco-test . 2>&1 | tail -40 curl -X POST \
"https://eu-aiplatform.googleapis.com/v1/projects/propane-will-491900-m5/locations/eu/publishers/anthropic/models/claude-opus-4-6@20260301:rawPredict" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"anthropic_version": "vertex-2023-10-16",
"max_tokens": 256,
"messages": [{"role": "user", "content": "ping"}]
}'
# Kjør image lokalt for å teste # Sjekk at Claude er aktivert i Model Garden
docker run --rm -p 8080:8080 \ gcloud ai models list \
-e PORT=8080 \ --region=eu \
osvauco-test --project=propane-will-491900-m5 \
--filter="displayName:claude"
# Test lokalt
curl -s http://localhost:8080/health
```
### 🔴 Secret Manager-feil
```bash
# List secrets
gcloud secrets list --project=propane-will-491900-m5
# Les en secret-verdi
gcloud secrets versions access latest \
--secret=<SECRET_NAME> \
--project=propane-will-491900-m5
# Sjekk tilgang
gcloud secrets get-iam-policy <SECRET_NAME> \
--project=propane-will-491900-m5
``` ```
### 🔴 .env mangler ved oppstart ### 🔴 .env mangler ved oppstart
```bash ```bash
# 1. Sjekk om den finnes
ls -la .env ls -la .env
# 2. Sjekk Secret Manager
gcloud secrets list --project=propane-will-491900-m5 | grep -i env gcloud secrets list --project=propane-will-491900-m5 | grep -i env
# 3. Sjekk GCS backup
gsutil ls gs://propane-will-491900-m5-*/ 2>/dev/null | grep -i env gsutil ls gs://propane-will-491900-m5-*/ 2>/dev/null | grep -i env
# 4. Sjekk andre lokasjoner på disk
find ~ -name ".env" -not -path "*/OSVauco/*" 2>/dev/null find ~ -name ".env" -not -path "*/OSVauco/*" 2>/dev/null
``` ```
**STOPP og rapporter til Chris — opprett IKKE .env fra .env.example.** **STOPP og rapporter til Chris — opprett IKKE .env fra .env.example.**
### 🔴 Git/kode-feil
```bash
# Aldri gjett hva som er i en fil — les den
cat agents/core-logic/main.py | head -50
# Finn hva som endret seg sist
git log --oneline -10
git diff HEAD~1 HEAD -- <fil>
# Sjekk hva som faktisk deployes
git log --oneline -1
gcloud builds list --limit=1 --format="value(source.repoSource.commitSha)"
```
### Prioritert diagnose-rekkefølge ### Prioritert diagnose-rekkefølge
``` ```
@ -402,6 +389,7 @@ ALDRI: Opprett .env fra template
| Cloud Run 500 | `gcloud logging read` → les stack trace | Endre kode uten å se feilen | | Cloud Run 500 | `gcloud logging read` → les stack trace | Endre kode uten å se feilen |
| Cloud Run 404 | `curl` + les rutekonfig | Anta routing er feil | | Cloud Run 404 | `curl` + les rutekonfig | Anta routing er feil |
| Auth 403 | `gcloud iap get-iam-policy` | Anta token er utløpt | | Auth 403 | `gcloud iap get-iam-policy` | Anta token er utløpt |
| Claude API feil | Test EU endpoint direkte med curl | Anta det er koden sin feil |
| .env mangler | Rapporter til Chris, hent fra Secret Manager | Opprett fra .env.example | | .env mangler | Rapporter til Chris, hent fra Secret Manager | Opprett fra .env.example |
| Noe «virker ikke» | `gcloud run services describe` | Anta det er koden sin feil | | Noe «virker ikke» | `gcloud run services describe` | Anta det er koden sin feil |
@ -412,7 +400,7 @@ ALDRI: Opprett .env fra template
```bash ```bash
# Alltid bruk eksplisitt prosjekt og region # Alltid bruk eksplisitt prosjekt og region
--project=propane-will-491900-m5 --project=propane-will-491900-m5
--region=us-central1 --region=europe-west1
# Cloud Run service # Cloud Run service
CLOUD_RUN_SVC=osvauco-agent CLOUD_RUN_SVC=osvauco-agent
@ -423,11 +411,11 @@ IMAGE=gcr.io/propane-will-491900-m5/osvauco-agent
# Cloud Build # Cloud Build
gcloud builds submit --config=cloudbuild.yaml --project=propane-will-491900-m5 gcloud builds submit --config=cloudbuild.yaml --project=propane-will-491900-m5
# Deploy manuelt (hvis nødvendig) # Deploy manuelt
gcloud run deploy osvauco-agent \ gcloud run deploy osvauco-agent \
--image=$IMAGE:latest \ --image=$IMAGE:latest \
--project=propane-will-491900-m5 \ --project=propane-will-491900-m5 \
--region=us-central1 \ --region=europe-west1 \
--platform=managed --platform=managed
``` ```
@ -447,7 +435,7 @@ Auth: Google OAuth now. BankID on `-os` later (Medioteq first).
## Standard Boot Prompt ## Standard Boot Prompt
Paste this at the start of every Gemini TUI session: Lim inn dette ved start av HVER sesjon i Gemini TUI:
``` ```
BOOT: Read docs/AGENT_RULEBOOK.md, docs/VAUCO_OS_ROADMAP.md, docs/OSVAUCO_OPAX_SESSION_LOG.md. BOOT: Read docs/AGENT_RULEBOOK.md, docs/VAUCO_OS_ROADMAP.md, docs/OSVAUCO_OPAX_SESSION_LOG.md.