feat(gtm): upgrade to google-genai, fix image gen & frontend crash
This commit is contained in:
@@ -14,7 +14,7 @@ import gtm_db_manager as db_manager
|
||||
|
||||
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
from helpers import call_gemini_flash, scrape_website_details
|
||||
from helpers import call_gemini_flash, scrape_website_details, call_gemini_image
|
||||
from config import Config, BASE_DIR # Import Config and BASE_DIR
|
||||
|
||||
LOG_DIR = "Log_from_docker"
|
||||
@@ -401,21 +401,31 @@ def translate(payload):
|
||||
return {"report": "Translated report will be here."}
|
||||
|
||||
def image(payload):
|
||||
prompt = payload.get('prompt', 'No Prompt')[:50] + "..."
|
||||
# Create a simple SVG placeholder to avoid frontend crash
|
||||
svg = f"""
|
||||
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="100%" height="100%" fill="#eee"/>
|
||||
<text x="50%" y="50%" font-family="Arial" font-size="20" fill="#555" text-anchor="middle" dy=".3em">
|
||||
Image Generation Not Configured
|
||||
</text>
|
||||
<text x="50%" y="60%" font-family="Arial" font-size="12" fill="#888" text-anchor="middle" dy=".3em">
|
||||
{prompt}
|
||||
</text>
|
||||
</svg>
|
||||
"""
|
||||
svg_b64 = base64.b64encode(svg.encode('utf-8')).decode('utf-8')
|
||||
return {"imageBase64": f"data:image/svg+xml;base64,{svg_b64}"}
|
||||
prompt = payload.get('prompt', 'No Prompt')
|
||||
project_id = payload.get('projectId')
|
||||
|
||||
# Versuche, ein Referenzbild aus dem Payload zu holen (für Image-to-Image)
|
||||
# Frontend sendet "referenceImagesBase64" (Array)
|
||||
ref_images = payload.get('referenceImagesBase64')
|
||||
ref_image = None
|
||||
|
||||
if ref_images and isinstance(ref_images, list) and len(ref_images) > 0:
|
||||
ref_image = ref_images[0]
|
||||
elif payload.get('referenceImage'): # Fallback für alte Calls
|
||||
ref_image = payload.get('referenceImage')
|
||||
|
||||
log_and_save(project_id, "image", "prompt", prompt)
|
||||
if ref_image:
|
||||
logging.info(f"Image-Mode: Reference Image found (Length: {len(ref_image)})")
|
||||
|
||||
try:
|
||||
# Aufruf mit optionalem Referenzbild
|
||||
image_b64 = call_gemini_image(prompt, reference_image_b64=ref_image)
|
||||
log_and_save(project_id, "image", "response_b64_preview", image_b64[:100] + "...")
|
||||
return {"imageBase64": f"data:image/png;base64,{image_b64}"}
|
||||
except Exception as e:
|
||||
logging.error(f"Failed to generate image: {e}", exc_info=True)
|
||||
return {"error": "Image generation failed.", "details": str(e)}
|
||||
|
||||
def main():
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user