Spaces:
Sleeping
Sleeping
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() | |