Spaces:
Runtime error
Runtime error
| import logging | |
| from google import genai | |
| from huggingface_hub import InferenceClient | |
| from langchain_groq import ChatGroq | |
| from langchain_core.prompts import PromptTemplate | |
| from .config import settings | |
| logger = logging.getLogger(__name__) | |
| logging.basicConfig(level=logging.INFO) | |
| # --- LangChain (Groq LLM) --- | |
| def get_llm(): | |
| logger.info("Initializing ChatGroq LLM...") | |
| return ChatGroq( | |
| model="meta-llama/llama-4-scout-17b-16e-instruct", | |
| temperature=1, | |
| max_tokens=1024, | |
| api_key=settings.LANGCHAIN_API_KEY, | |
| ) | |
| def get_prompt_template(): | |
| """Returns the prompt enhancement template.""" | |
| return PromptTemplate.from_template(''' | |
| You are a Prompt Enhancement AI Assistant. Your task is to take the | |
| user's raw image prompt and convert it into a detailed, | |
| professional prompt optimized for generating high-quality AI images. | |
| Enhance the prompt by including relevant details such as: | |
| - Do not add anything except the final prompt. for example: do not write starting like here is the enhanced prompt or something like this. | |
| - Camera specifications (e.g., lens type, aperture, focal length) | |
| - Lighting setup (e.g., natural light, studio lighting, soft shadows) | |
| - Camera angle (e.g., top-down, macro, isometric, side view) | |
| - Background style (e.g., plain white, minimalistic, outdoor, studio backdrop) | |
| - Scene composition (e.g., centered product, depth of field, reflections) | |
| Focus only on *Poster photography* — do not include humans or models. | |
| Raw Prompt: | |
| {Raw_Prompt} | |
| Enhanced Prompt: | |
| ''') | |
| # --- Google GenAI (Gemini) --- | |
| def get_genai_client(): | |
| """Initializes and returns the Google GenAI client.""" | |
| if not settings.GOOGLE_API_KEY: | |
| raise RuntimeError("Missing GOOGLE_API_KEY in .env") | |
| try: | |
| logger.info("Initializing Google GenAI client...") | |
| client = genai.Client(api_key=settings.GOOGLE_API_KEY) | |
| logger.info("Google GenAI client initialized successfully.") | |
| return client | |
| except Exception as e: | |
| logger.exception("Failed to initialize GenAI client.") | |
| raise | |
| def get_genai_client1(): | |
| """Initializes and returns the Google GenAI client.""" | |
| if not settings.GOOGLE_API_KEY: | |
| raise RuntimeError("Missing GOOGLE_API_KEY in .env") | |
| try: | |
| logger.info("Initializing Google GenAI client...") | |
| client = genai.Client(api_key=settings.GOOGLE_API_KEY1) | |
| logger.info("Google GenAI client initialized successfully.") | |
| return client | |
| except Exception as e: | |
| logger.exception("Failed to initialize GenAI client.") | |
| raise | |
| # --- Hugging Face (FLUX) --- | |
| def get_flux_client(): | |
| """Initializes and returns the Hugging Face FLUX client.""" | |
| if not settings.HF_API_KEY: | |
| raise RuntimeError("Missing HF_API_KEY in .env") | |
| try: | |
| logger.info("Initializing Hugging Face InferenceClient...") | |
| client = InferenceClient(provider="hf-inference", api_key=settings.HF_API_KEY) | |
| logger.info("Hugging Face InferenceClient initialized successfully.") | |
| return client | |
| except Exception as e: | |
| logger.exception("Failed to initialize FLUX client.") | |
| raise | |
| # --- Export initialized clients --- | |
| llm = get_llm() | |
| prompt_template = get_prompt_template() | |
| genai_client = get_genai_client() | |
| flux_client = get_flux_client() | |
| genai_client1 = get_genai_client1() | |