chore(gemini): upgrade to Claude Opus 4.6 via Vertex AI EU endpoint
This commit is contained in:
parent
800c47ef85
commit
50ddeeb46b
|
|
@ -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.
|
||||||
|
|
@ -140,7 +177,7 @@ 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.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user