File size: 3,875 Bytes
693649c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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()