Srikesh commited on
Commit
a53a67b
·
verified ·
1 Parent(s): e40f1ed

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -20
app.py CHANGED
@@ -1,7 +1,37 @@
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
 
 
 
 
 
 
3
 
 
 
 
 
 
 
 
 
 
 
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  def respond(
6
  message,
7
  history: list[dict[str, str]],
@@ -11,19 +41,13 @@ def respond(
11
  top_p,
12
  hf_token: gr.OAuthToken,
13
  ):
14
- """
15
- For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
16
- """
17
  client = InferenceClient(token=hf_token.token, model="openai/gpt-oss-20b")
18
 
19
  messages = [{"role": "system", "content": system_message}]
20
-
21
  messages.extend(history)
22
-
23
  messages.append({"role": "user", "content": message})
24
 
25
  response = ""
26
-
27
  for message in client.chat_completion(
28
  messages,
29
  max_tokens=max_tokens,
@@ -35,36 +59,37 @@ def respond(
35
  token = ""
36
  if len(choices) and choices[0].delta.content:
37
  token = choices[0].delta.content
38
-
39
  response += token
40
  yield response
41
 
42
-
43
- """
44
- For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
45
- """
46
  chatbot = gr.ChatInterface(
47
  respond,
48
  type="messages",
49
  additional_inputs=[
50
- gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
51
  gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
52
  gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
53
- gr.Slider(
54
- minimum=0.1,
55
- maximum=1.0,
56
- value=0.95,
57
- step=0.05,
58
- label="Top-p (nucleus sampling)",
59
- ),
60
  ],
61
  )
62
 
 
 
 
63
  with gr.Blocks() as demo:
64
  with gr.Sidebar():
 
 
65
  gr.LoginButton()
66
- chatbot.render()
 
 
 
 
 
67
 
 
 
68
 
69
  if __name__ == "__main__":
70
  demo.launch()
 
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
3
+ from transformers import AutoImageProcessor, AutoModelForImageClassification
4
+ from PIL import Image
5
+ import torch
6
+ import requests
7
+ import io
8
+ import numpy as np
9
 
10
+ # ------------------------
11
+ # 1. Plant Disease Detection Model
12
+ # ------------------------
13
+ processor = AutoImageProcessor.from_pretrained(
14
+ "linkanjarad/mobilenet_v2_1.0_224-plant-disease-identification"
15
+ )
16
+ model = AutoModelForImageClassification.from_pretrained(
17
+ "linkanjarad/mobilenet_v2_1.0_224-plant-disease-identification"
18
+ )
19
+ model.eval()
20
 
21
+ def predict_disease(img):
22
+ img = img.convert("RGB")
23
+ inputs = processor(images=img, return_tensors="pt")
24
+ with torch.no_grad():
25
+ outputs = model(**inputs)
26
+ logits = outputs.logits
27
+ pred_idx = logits.argmax(-1).item()
28
+ label = model.config.id2label[pred_idx]
29
+ confidence = torch.softmax(logits, dim=1)[0, pred_idx].item()
30
+ return f"Disease: {label}\nConfidence: {confidence:.2f}"
31
+
32
+ # ------------------------
33
+ # 2. Hugging Face Chatbot / Voice Assistant
34
+ # ------------------------
35
  def respond(
36
  message,
37
  history: list[dict[str, str]],
 
41
  top_p,
42
  hf_token: gr.OAuthToken,
43
  ):
 
 
 
44
  client = InferenceClient(token=hf_token.token, model="openai/gpt-oss-20b")
45
 
46
  messages = [{"role": "system", "content": system_message}]
 
47
  messages.extend(history)
 
48
  messages.append({"role": "user", "content": message})
49
 
50
  response = ""
 
51
  for message in client.chat_completion(
52
  messages,
53
  max_tokens=max_tokens,
 
59
  token = ""
60
  if len(choices) and choices[0].delta.content:
61
  token = choices[0].delta.content
 
62
  response += token
63
  yield response
64
 
 
 
 
 
65
  chatbot = gr.ChatInterface(
66
  respond,
67
  type="messages",
68
  additional_inputs=[
69
+ gr.Textbox(value="You are a friendly agricultural assistant.", label="System message"),
70
  gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
71
  gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
72
+ gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)"),
 
 
 
 
 
 
73
  ],
74
  )
75
 
76
+ # ------------------------
77
+ # 3. RootNet Gradio App Layout
78
+ # ------------------------
79
  with gr.Blocks() as demo:
80
  with gr.Sidebar():
81
+ gr.Markdown("# RootNet AI Dashboard")
82
+ gr.Markdown("Sign in with your Hugging Face account to use the Chatbot API.")
83
  gr.LoginButton()
84
+
85
+ with gr.Tab("Plant Disease Detection"):
86
+ gr.Markdown("Upload a leaf image to predict disease:")
87
+ image_input = gr.Image(type="pil")
88
+ disease_output = gr.Textbox(label="Prediction")
89
+ image_input.change(predict_disease, inputs=image_input, outputs=disease_output)
90
 
91
+ with gr.Tab("Voice Assistant / Chatbot"):
92
+ chatbot.render()
93
 
94
  if __name__ == "__main__":
95
  demo.launch()