aviaryvision / app.py
kittendev's picture
Change model to gemini flash
ac7f87d verified
raw
history blame
No virus
5.89 kB
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()