Derma / app.py
Alphar3d's picture
Update app.py
23aa1c3 verified
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)