feat(competitor-analysis): Fix 404, SDK compatibility, and update docs
Resolved multiple issues preventing the 'competitor-analysis' app from running and serving its frontend:
1. **Fixed Python SyntaxError in Prompts:** Corrected unterminated string literals and ensure proper multi-line string formatting (using .format() instead of f-strings for complex prompts) in .
2. **Addressed Python SDK Compatibility (google-generativeai==0.3.0):**
* Removed for and by adapting the orchestrator to pass JSON schemas as direct Python dictionaries, as required by the older SDK version.
* Updated with detailed guidance on handling / imports and dictionary-based schema definitions for older SDKs.
3. **Corrected Frontend Build Dependencies:** Moved critical build dependencies (like , , ) from to in .
* Updated to include this pitfall, ensuring frontend build tools are installed in Docker.
4. **Updated Documentation:**
* : Added comprehensive lessons learned regarding dependencies, Python SDK versioning (specifically and imports for ), and robust multi-line prompt handling.
* : Integrated specific details of the encountered errors and their solutions, making the migration report a more complete historical record and guide.
These changes collectively fix the 404 error by ensuring the Python backend starts correctly and serves the frontend assets after a successful build.
This commit is contained in:
@@ -12,11 +12,12 @@
|
||||
|
||||
Bevor Code kopiert wird, m.ssen die Grundlagen stimmen.
|
||||
|
||||
### 1.1 Package.json Check
|
||||
Generierte Apps haben oft kein `express`, da sie keinen Server erwarten.
|
||||
* **Aktion:** "."ffne `package.json` der App.
|
||||
* **Pr.fung:** Steht `express` unter `dependencies`?
|
||||
* **Fix:**
|
||||
### 1.1 Package.json Check (Frontend Build-Falle)
|
||||
Generierte Apps haben oft kein `express`, da sie keinen Server erwarten. Noch wichtiger ist, dass kritische Build-Tools oft fälschlicherweise in `devDependencies` deklariert werden.
|
||||
|
||||
* **Aktion:** Öffne `package.json` der App.
|
||||
* **Prüfung 1 (Backend):** Steht `express` unter `dependencies`?
|
||||
* **Fix 1:**
|
||||
```json
|
||||
"dependencies": {
|
||||
...
|
||||
@@ -24,6 +25,8 @@ Generierte Apps haben oft kein `express`, da sie keinen Server erwarten.
|
||||
"cors": "^2.8.5"
|
||||
}
|
||||
```
|
||||
* **Prüfung 2 (Frontend Build):** Stehen Build-Tools wie `vite`, `@vitejs/plugin-react` oder `typescript` unter `devDependencies`?
|
||||
* **Fix 2 (KRITISCH):** Verschiebe **alle** `devDependencies` in die `dependencies`. Der `npm install`-Befehl im `Dockerfile` installiert `devDependencies` standardmäßig nicht, was zu einem fehlgeschlagenen `npm run build` führt.
|
||||
|
||||
### 1.2 Datenbank-Datei
|
||||
Docker kann keine einzelne Datei mounten, wenn sie auf dem Host nicht existiert.
|
||||
@@ -151,16 +154,21 @@ Das System entscheidet automatisch, welches Modell genutzt wird:
|
||||
* **Szenario B: Produkt-Integration (Image-to-Image)**
|
||||
* **Modell:** `gemini-2.5-flash-image`.
|
||||
|
||||
### A.6 Gemini SDK-Chaos & Modell-Verf.gbarkeit (Kritische Erkenntnis)
|
||||
### A.6 Gemini SDK-Chaos & Modell-Verfügbarkeit (Kritische Erkenntnis)
|
||||
|
||||
Ein wiederkehrendes Problem bei der Migration ist der Konflikt zwischen SDK-Versionen und regionalen Modell-Beschr.nkungen.
|
||||
Ein wiederkehrendes Problem bei der Migration ist der Konflikt zwischen SDK-Versionen und regionalen Modell-Beschränkungen, sowie die schnelle Evolution der API-Schnittstellen.
|
||||
|
||||
**1. Das SDK-Dilemma**
|
||||
Es existieren zwei parallele Google SDKs:
|
||||
1. **`google-generativeai` (Legacy):** Veraltet, oft instabil bei neuen Modellen, wirft Deprecation-Warnungen. Import: `import google.generativeai`.
|
||||
2. **`google-genai` (Modern):** Erforderlich f.r Imagen 4 und Gemini 2.x Features. Import: `from google import genai`.
|
||||
Es existieren zwei parallele Google SDKs, und selbst innerhalb von `google-generativeai` ändern sich die Modulstrukturen schnell:
|
||||
1. **`google-generativeai` (Legacy):** Versionen wie `0.3.0` verhalten sich anders als neuere. Oft instabil bei neuen Modellen, wirft Deprecation-Warnungen. Import: `import google.generativeai`.
|
||||
2. **`google-genai` (Modern):** Erforderlich für Imagen 4 und Gemini 2.x Features. Import: `from google import genai`.
|
||||
|
||||
**L.SUNG:** Nutze den **Dual-Support-Ansatz** in `helpers.py`. Importiere beide und verwende die neue Lib f.r Bilder und die alte (da stabiler f.r bestehende Text-Prompts) f.r Flash 1.5/2.0.
|
||||
**KRITISCHES PROBLEM: `ImportError` für `Schema` und `Content` mit `google-generativeai==0.3.0`**
|
||||
* **Fehler:** `ImportError: cannot import name 'Schema' from 'google.generativeai.types'` oder `ImportError: cannot import name 'Content' from 'google.generativeai.types'`.
|
||||
* **Ursache:** In älteren Versionen des `google-generativeai`-SDK (z.B. `0.3.0`, wie in diesem Projekt verwendet) existierten diese Klassen (`Schema`, `Content`) nicht an den gleichen Importpfaden wie in neueren Versionen oder wurden gar nicht als separate Klassen verwendet.
|
||||
* **LÖSUNG (für `google-generativeai==0.3.0`):**
|
||||
* Entferne **alle** Importe für `Schema` und `Content` (z.B. `from google.generativeai.types import HarmCategory, HarmBlockThreshold`).
|
||||
* Ersetze **alle** Instanziierungen von `Schema(...)` durch einfache Python-Dictionaries, die direkt das JSON-Schema repräsentieren. Die `generation_config` akzeptiert in dieser Version direkt das Dictionary.
|
||||
|
||||
**2. Der "404 Not Found" Modell-Fehler**
|
||||
Oft liefert die API einen 404 Fehler f.r ein Modell (z.B. `gemini-1.5-flash`), obwohl es laut Dokumentation existiert.
|
||||
@@ -179,7 +187,7 @@ candidates = ['imagen-4.0-generate-001', 'imagen-3.0-generate-001']
|
||||
for model in candidates:
|
||||
try:
|
||||
# Versuch des API-Calls
|
||||
break
|
||||
break
|
||||
except ClientError as e:
|
||||
if "404" in str(e): continue
|
||||
raise e
|
||||
|
||||
Reference in New Issue
Block a user