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
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user