Spaces:
Runtime error
Runtime error
| import google.generativeai as genai | |
| from pathlib import Path | |
| import gradio as gr | |
| from dotenv import load_dotenv | |
| import os | |
| # Load environment variables from a .env file | |
| load_dotenv() | |
| # Configure the GenerativeAI API key using the loaded environment variable | |
| genai.configure(api_key=os.getenv("AIzaSyDGsO9HM1KDZ0BdZ1RGWP8lC2XR4A_Oz5w")) | |
| # Set up the model configuration for text generation | |
| generation_config = { | |
| "temperature": 0.4, | |
| "top_p": 1, | |
| "top_k": 32, | |
| "max_output_tokens": 4096, | |
| } | |
| # Define safety settings for content generation | |
| safety_settings = [ | |
| {"category": f"HARM_CATEGORY_{category}", | |
| "threshold": "BLOCK_MEDIUM_AND_ABOVE"} | |
| for category in ["HARASSMENT", "HATE_SPEECH", "SEXUALLY_EXPLICIT", "DANGEROUS_CONTENT"] | |
| ] | |
| # Initialize the GenerativeModel with the specified model name, configuration, and safety settings | |
| model = genai.GenerativeModel( | |
| model_name="gemini-pro-vision", | |
| generation_config=generation_config, | |
| safety_settings=safety_settings, | |
| ) | |
| # Function to read image data from a file path | |
| def read_image_data(file_path): | |
| image_path = Path(file_path) | |
| if not image_path.exists(): | |
| raise FileNotFoundError(f"Could not find image: {image_path}") | |
| return {"mime_type": "image/jpeg", "data": image_path.read_bytes()} | |
| # Function to generate a response based on a prompt and an image path | |
| def generate_gemini_response(prompt, image_path): | |
| image_data = read_image_data(image_path) | |
| response = model.generate_content([prompt, image_data]) | |
| return response.text | |
| # Initial input prompt for the plant pathologist | |
| input_prompt = """ | |
| As a highly skilled dermatologist, your expertise is indispensable. You will be provided with information or samples related to Skin diseases, and your role involves conducting a detailed analysis to identify the specific issues, propose solutions, and offer recommendations. | |
| **Analysis Guidelines:** | |
| 1. **Disease Identification:** Examine the provided information or samples to identify and characterize Skin diseases accurately. | |
| 2. **Detailed Findings:** Provide in-depth findings on the nature and extent of the identified Skin diseases, including affected parts, symptoms, and potential causes. | |
| 3. **Next Steps:** Outline the recommended course of action for managing and controlling the identified diseases. This may involve treatment options, preventive measures, or further investigations. | |
| 4. **Recommendations:** Offer informed recommendations for maintaining plant health, preventing disease spread, and optimizing overall plant well-being. | |
| 5. **Important Note:** As a dermatologist, your insights are vital for informed decision-making. Your response should be thorough, concise, and focused on Skin health. | |
| **Disclaimer:** | |
| *"Please note that the information provided is based on human Skin analysis and should not replace professional dermatologist advice. Consult with qualified dermatologist experts before implementing any strategies or treatments."* | |
| Your role is pivotal in ensuring the health and productivity of humans. Proceed to analyze the provided information or samples, adhering to the structured | |
| """ | |
| # Function to process uploaded files and generate a response | |
| def process_uploaded_files(files): | |
| file_path = files[0].name if files else None | |
| response = generate_gemini_response( | |
| input_prompt, file_path) if file_path else None | |
| return file_path, response | |
| # Gradio interface setup | |
| with gr.Blocks() as demo: | |
| file_output = gr.Textbox() | |
| image_output = gr.Image() | |
| combined_output = [image_output, file_output] | |
| # Upload button for user to provide images | |
| upload_button = gr.UploadButton( | |
| "Click to Upload an Image", | |
| file_types=["image"], | |
| file_count="multiple", | |
| ) | |
| # Set up the upload button to trigger the processing function | |
| upload_button.upload(process_uploaded_files, | |
| upload_button, combined_output) | |
| # Launch the Gradio interface with debug mode enabled | |
| demo.launch(debug=True) | |