my-vet / app.py
alperenunlu's picture
Init commit
f08f9cc
raw
history blame
No virus
1.6 kB
import os
import google.generativeai as genai
import gradio as gr
from fastai.learner import load_learner
from PIL import Image
API_KEY = os.getenv("GENAI_API_KEY")
genai.configure(api_key=API_KEY)
model = genai.GenerativeModel(model_name="gemini-pro-vision")
learn = load_learner("pets.pkl")
categories = learn.vocab
prompt = (
"You are and animal expert and a veterinarian.\n"
"Give your expert opinion on the following questions based on"
"the image of the animal.\n"
"Only answer answer the last question.\n"
"Don't give anything besides the answer."
)
def classify_image(img):
pred, idx, probs = learn.predict(img)
return dict(zip(categories, map(float, probs)))
def random_response(message, history, image=None):
if image is not None:
image = Image.fromarray(image)
message = "Q: " + message.strip()
history = history[-5:] if len(history) > 0 else ""
history = "\n".join([f"Q: {i[0]}\nA:{i[1]}\n" for i in history])
message = prompt + '\n\n' + history + '\n' + message + "\nA: "
print(f"The new message is : \n{message}")
return model.generate_content([message, image]).text
else:
return "Please provide an image."
with gr.Blocks() as demo:
image = gr.Image()
label = gr.Label(num_top_classes=5)
gr.Interface(
classify_image,
inputs=image,
outputs=label,
title="Pet Classifier",
description="Classify an image of a pet into different categories.",
)
gr.ChatInterface(random_response, additional_inputs=[image])
demo.launch()