Files
boc/academy-gemini-integration.md
T
Bernt aee0f09db8 landvex: Fixar och tester klara för alla komponenter
- Datafabrik: Dockerfile fix, agentorkestrering fungerar
- Vision: Identify-modell, FAISS, OCR alla testade
- API: Alla 7 integrationstester passerade
- Upplösare: Entitetsupplösning verifierad
2026-07-05 06:41:32 +00:00

174 lines
4.2 KiB
Markdown

# quiXzoom Academy — Gemini Integration Guide
> Hur du kopplar AAMOS Gemini till Academy för bildgenerering
---
## 🔍 Hitta din Gemini i AAMOS
### Steg 1: Leta efter Gemini-tjänsten
```bash
# Sök efter Gemini-relaterade filer
find /opt/amos -type f \( -name "*.py" -o -name "*.yaml" -o -name "*.env" \) \
-exec grep -l "gemini\|vertex.*ai\|generativelanguage" {} \; 2>/dev/null
# Kolla om det finns en körande tjänst
curl -s http://localhost:8080/health
curl -s http://localhost:5000/health
netstat -tlnp | grep -E "8080|5000|3000"
```
### Steg 2: Hitta API-nyckeln
```bash
# Kolla miljövariabler
env | grep -i "gemini\|google\|vertex"
# Kolla i AAMOS-config
cat /opt/amos/.env 2>/dev/null | grep -i "gemini\|google"
cat /opt/amos/config.yaml 2>/dev/null | grep -i "gemini\|google"
# Kolla i Kubernetes secrets (om det körs i k8s)
kubectl get secrets -n aamos 2>/dev/null | grep -i gemini
```
---
## 🔧 Integration
### Alternativ A: Direkt API-anrop (enklaste)
```python
# academy_gemini_direct.py
import os
import requests
import json
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
def generate_academy_image(lesson_title: str, description: str) -> str:
"""
Generera pedagogisk bild för Academy-lektion
"""
url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp-image-generation:generateContent?key={GEMINI_API_KEY}"
payload = {
"contents": [{
"parts": [{
"text": f"""Generera en pedagogisk illustration för en online-utbildning.
Titel: {lesson_title}
Beskrivning: {description}
Krav:
- Modern, ren stil
- Färger: blå (#0066FF), grön (#00C853), svart (#0A0A0A)
- Pedagogisk och lätt att förstå
- Ingen text i bilden
- Format: 16:9
"""
}]
}],
"generationConfig": {
"responseModalities": ["Text", "Image"]
}
}
response = requests.post(url, json=payload)
if response.status_code == 200:
data = response.json()
# Extrahera bild från response
# Spara till fil
return "image_url"
else:
raise Exception(f"Fel: {response.status_code} - {response.text}")
# Exempel
image = generate_academy_image(
"Fotokvalitet — Ljus och exponering",
"Visa skillnaden mellan underexponerad, korrekt exponerad och överexponerad bild"
)
```
### Alternativ B: Via AAMOS Gemini-tjänst (om den finns)
```python
# academy_gemini_aamos.py
import requests
AAMOS_GEMINI_URL = "http://localhost:8080/v1/generate" # eller annan port
def generate_via_aamos(prompt: str) -> bytes:
"""
Använd AAMOS interna Gemini-tjänst
"""
response = requests.post(
AAMOS_GEMINI_URL,
json={
"prompt": prompt,
"model": "gemini-2.0-flash-exp-image-generation",
"output_format": "png"
}
)
return response.content
```
---
## 🚀 Automatisk bildgenerering
```bash
# Kör skriptet för att generera alla bilder
python academy-image-generator.py --generate
# Eller generera en specifik bild
python -c "
from academy_image_generator import generate_image
import os
os.environ['GEMINI_API_KEY'] = 'din-nyckel-här'
generate_image('m2l2', 'din-nyckel-här')
"
```
---
## 📁 Filstruktur
```
academy/
├── index.html # Huvudsida
├── api.json # API-specifikation
├── module1/
│ └── lesson1/
│ └── index.html # Lektion med bilder
├── module2/
│ └── lesson1/
│ └── index.html # Lektion med bilder
└── images/ # Genererade bilder
├── m1l1-welcome.png
├── m2l1-ai-review.png
├── m2l2-lighting.png
└── ...
```
---
## 🎯 Nästa steg
1. **Hitta din Gemini-nyckel** i AAMOS
2. **Testa generering** av en bild
3. **Ladda upp** till S3
4. **Uppdatera** lektionerna med bild-URLer
5. **Automatisera** med GitHub Actions eller cron
---
## 📞 Support
Om du inte hittar Gemini i AAMOS:
1. Kolla med Johan (CTO) om det finns en central AI-tjänst
2. Eller skapa ett nytt Google Cloud-projekt för quiXzoom
3. Aktivera Vertex AI API
4. Skapa service account och ladda ner JSON-nyckel