import os from PIL import Image from pyrogram import Client, filters, enums from pyrogram.types import Message from utils.misc import modules_help, prefix from utils.scripts import format_exc, import_library genai = import_library("google.generativeai", "google-generativeai") from utils.config import gemini_key genai.configure(api_key=gemini_key) generation_config_cook = { "temperature": 0.35, "top_p": 0.95, "top_k": 40, "max_output_tokens": 1024, } model = genai.GenerativeModel("gemini-1.5-flash-latest") model_cook = genai.GenerativeModel( model_name="gemini-1.5-flash-latest", generation_config=generation_config_cook ) @Client.on_message(filters.command("getai", prefix) & filters.me) async def getai(_, message: Message): try: await message.edit_text("Please Wait...") try: base_img = await message.reply_to_message.download() except AttributeError: return await message.edit_text("Please reply to an image...") img = Image.open(base_img) prompt = "Get details of given image, be as accurate as possible." response = model.generate_content([prompt, img]) await message.edit_text( f"**Detail Of Image:** {response.text}", parse_mode=enums.ParseMode.MARKDOWN ) os.remove(base_img) return except Exception as e: await message.edit_text(f"An error occurred: {format_exc(e)}") @Client.on_message(filters.command("aicook", prefix) & filters.me) async def aicook(_, message: Message): if message.reply_to_message: try: await message.edit_text("Cooking...") try: base_img = await message.reply_to_message.download() except AttributeError: return await message.edit_text( "Please reply to an image..." ) img = Image.open(base_img) cook_img = [ "Accurately identify the baked good in the image and provide an appropriate and recipe consistent with your analysis. ", img, ] response = model_cook.generate_content(cook_img) await message.edit_text( f"{response.text}", parse_mode=enums.ParseMode.MARKDOWN ) os.remove(base_img) return except Exception as e: await message.edit_text(str(e)) return await message.edit_text("Please reply to an image...") @Client.on_message(filters.command("aiseller", prefix) & filters.me) async def aiseller(_, message: Message): if message.reply_to_message: try: await message.edit_text("Generating...") if len(message.command) > 1: taud = message.text.split(maxsplit=1)[1] else: return await message.edit_text( f"Usage: {prefix}aiseller [target audience] [reply to product image]" ) try: base_img = await message.reply_to_message.download() except AttributeError: return await message.edit_text( "Please reply to an image..." ) img = Image.open(base_img) sell_img = [ "Given an image of a product and its target audience, write an engaging marketing description", "Product Image: ", img, "Target Audience: ", taud, ] response = model.generate_content(sell_img) await message.edit_text( f"{response.text}", parse_mode=enums.ParseMode.MARKDOWN ) os.remove(base_img) return except Exception: await message.edit_text( f"Usage: {prefix}aiseller [target audience] [reply to product image]" ) return await message.edit_text("Please reply to an image...") modules_help["aimage"] = { "getai [reply to image]*": "Get details of image with Ai", "aicook [reply to image]*": "Generate Cooking instrunctions of the given food image", "aiseller [target audience] [reply to product image]*": "Generate a promotional message for the given image product for the given target audience", }