Spaces:
Running
Running
import gradio as gr | |
from langchain_google_genai import ChatGoogleGenerativeAI | |
from langchain_core.messages import HumanMessage, SystemMessage | |
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-flash-latest", convert_system_message_to_human=True) | |
def get_info(language, 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'Jika jenis burung bukan merupakan spesies spesifik, ' | |
f'berikan informasi umum mengenai burung dan ' | |
f'pada kolom species berikan setiap species yang termasuk dalam jenis burung tersebut' | |
f'lalu pada nama spesies burung, ' | |
f'berikan nama latin untuk genus saja. Kasuari (Casuarius). ' | |
f'Nama burung disesuaikan dengan bahasa yang dipilih oleh pengguna, jika pengguna ' | |
f'memilih bahasa indonesia, maka nama burung harus disesuaikan dengan bahasa indonesia' | |
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} menggunakan bahasa {language}'), | |
] | |
) | |
return result.content | |
title = "Aviary Vision" | |
description = """ | |
<div style="display: flex; flex-direction: column; align-items: center;"> | |
<h1 style="margin: 0; font-size: 60px;">Aviary Vision</h1> | |
<p style="margin: 0; font-size: 20px;">By: A2 Si Paling Data</p> | |
</div> | |
<p>Aviary Vision is a system that can identify bird species from an image and provide | |
information about the species in the selected language.</p> | |
<i>Note: The information provided is AI generated and may not be accurate. Use at your own risk.</i> | |
""" | |
examples = [ | |
['English', 'bali_starling.png'], | |
['Bahasa Indonesia', 'cassowary.png'] | |
] | |
demo = gr.Interface( | |
fn=get_info, | |
inputs=[ | |
gr.Dropdown(choices=[ | |
'English', | |
'Bahasa Indonesia', | |
'日本語', | |
'中文', | |
'한국어', | |
'Español', | |
'Français', | |
'Deutsch', | |
'Русский' | |
], | |
label="Select Language", | |
type="value", | |
info="Select the language you want to use"), | |
gr.Image(type="pil", | |
label="Upload Image") | |
], | |
outputs=['text'], | |
allow_flagging="never", | |
title=title, | |
description=description, | |
examples=examples, | |
cache_examples=False | |
) | |
demo.launch() | |