File size: 3,042 Bytes
86886cf
95f5acf
 
 
f85e718
 
 
 
95f5acf
 
 
3051b4e
5b2c8aa
316d61e
 
5b2c8aa
87c2d88
5b2c8aa
95f5acf
f85e718
95f5acf
 
3051b4e
5b2c8aa
86886cf
3051b4e
5b2c8aa
95f5acf
3051b4e
95f5acf
86886cf
95f5acf
 
 
86886cf
95f5acf
 
26043fa
f85e718
 
 
 
 
 
 
 
 
 
5b2c8aa
 
e3f8969
f85e718
5b2c8aa
f85e718
5b2c8aa
86886cf
5b2c8aa
 
 
 
 
86886cf
 
5b2c8aa
 
 
 
 
86886cf
 
5b2c8aa
86886cf
 
5b2c8aa
86886cf
5b2c8aa
87c2d88
86886cf
 
5b2c8aa
f85e718
5b2c8aa
86886cf
e3f8969
86886cf
f85e718
5b2c8aa
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import gradio as gr
from azure.ai.inference import ChatCompletionsClient
from azure.ai.inference.models import (
    SystemMessage,
    UserMessage,
    TextContentItem,
    ImageContentItem,
    ImageUrl,
    ImageDetailLevel,
)
from azure.core.credentials import AzureKeyCredential

# Azure API credentials
token = "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"
endpoint = "https://models.inference.ai.azure.com"
model_name = "gpt-4o"

# Initialize the ChatCompletionsClient
client = ChatCompletionsClient(
    endpoint=endpoint,
    credential=AzureKeyCredential(token),
)

# Define the function to handle the image and get predictions
def analyze_leaf_disease(image_path, leaf_type):
    try:
        # Prepare and send the request to the Azure API
        response = client.complete(
            messages=[
                SystemMessage(
                    content=f"You are a subject matter expert that describes leaf disease in detail for {leaf_type} leaves."
                ),
                UserMessage(
                    content=[
                        TextContentItem(text="What's the name of the leaf disease in this image and what is the confidence score? What is the probable reason? What are the medicine or stops to prevent the disease"),
                        ImageContentItem(
                            image_url=ImageUrl.load(
                                image_file=image_path,
                                image_format="jpg",
                                detail=ImageDetailLevel.LOW,
                            )
                        ),
                    ],
                ),
            ],
            model=model_name,
        )

        # Extract and return the response content
        return response.choices[0].message.content

    except Exception as e:
        return f"An error occurred: {e}"

# Define the Gradio interface
def handle_proceed(image_path, leaf_type):
    # Display detecting status
    detecting_status = "Detecting..."
    result = analyze_leaf_disease(image_path, leaf_type)
    # Clear detecting status after processing
    return "", result

with gr.Blocks() as interface:
    with gr.Row():
        gr.Markdown("""
        # Leaf Disease Detector
        Upload a leaf image, select the leaf type, and let the AI analyze the disease.
        """)

    with gr.Row():
        image_input = gr.Image(type="filepath", label="Upload an Image or Take a Photo")
        leaf_type = gr.Dropdown(
            choices=["Tomato", "Tobacco", "Corn", "Paddy", "Maze", "Potato", "Wheat"],
            label="Select Leaf Type",
        )
        proceed_button = gr.Button("Proceed")

    with gr.Row():
        detecting_label = gr.Label("Detecting...", visible=False)
        output_box = gr.Textbox(label="Results", placeholder="Results will appear here.")

    # Update the detecting_label and result in outputs
    proceed_button.click(handle_proceed, inputs=[image_input, leaf_type], outputs=[detecting_label, output_box])

if __name__ == "__main__":
    interface.launch()