aviaryvision / app.py
kittendev's picture
initial commit
693649c
raw
history blame
3.88 kB
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.messages import HumanMessage, SystemMessage
import gradio as gr
import tensorflow as tf
from tensorflow import keras
import json
import numpy as np
from PIL import Image
bird_cnn = keras.models.load_model('bird_model.h5')
with open('class_names.json', 'r') as class_name:
class_names = json.load(class_name)
llm = ChatGoogleGenerativeAI(model="gemini-1.5-pro-latest", convert_system_message_to_human=True)
def get_info(img):
img = img.resize((224, 224), resample=Image.NEAREST)
img_array = keras.utils.img_to_array(img)
img_array = tf.expand_dims(img_array, 0)
predictions = bird_cnn.predict(img_array)
score = tf.nn.softmax(predictions[0])
species = class_names[np.argmax(score)]
result = llm(
[
SystemMessage(content=f'Anda adalah sistem penulis ensiklopedia yang memberikan informasi teraktual dan '
f'bersifat fakta mengenai dunia aves.'
f'Setiap kali memberikan informasi, berikan dengan struktur yang terformat layaknya '
f'buku ensiklopedia.'
f'Informasi yang diberikan antara lain adalah taksonomi, habitat, populasi, tingkah '
f'laku, serta sebarannya diseluruh dunia.'
f'Berikan Output yang detail mengenai Species Burungnya tambahkan Infomasi yang '
f'berkaitan dengan Informasi yang diinginkan sebelumnya'
f'Jadikan Struktur output rapih dan bersih agar lebih mudah dibaca dan dipahami'
f'Tampilkan Domain, Kingdom, Phylum, Class, Order, Family, Genus, dan Species dari '
f'Species Burung sebagai infomasi Taksonomi'
f'Berikan output tanpa format teks dan hanya berupa raw string dengan garis baru dan '
f'pemaragrafan seperti docs'
f'Output tidak perlu menggunakan markdown'
f'Nama Species Burung (Nama Latin)'
f''
f'Taksonomi'
f'- Domain :'
f'- Kingdom :'
f'- Phylum :'
f'- Class :'
f'- Order :'
f'- Family :'
f'- Genus :'
f'- Species :'
f''
f'Habitat'
f''
f'Populasi'
f''
f'Tingkah Laku'
f''
f'Penyebaran'
f'Jadikan struktur diatas menjadi default untuk output dari species burung dan selalu '
f'gunakan struktur ini tanpa perlu markdown'
f'Jangan tambahkan simbol sebagain pembeda judul dan sub-judul dengan teks biasa'
f'Tambahkan Referensi darimana informasi didapatkan dalam bentuk journal, website '
f'atau referensi manapun, gunakan formatting seperti mendeley untuk referensi'),
HumanMessage(content=f'Berikan informasi taksonomi, habitat, Populasi, Tingkah Laku, dan Penyebaran '
f'mengenai burung {species}'),
]
)
return result.content
demo = gr.Interface(
fn=get_info,
inputs=gr.Image(type="pil"),
outputs=['text'],
allow_flagging="never"
)
demo.launch()