File size: 1,940 Bytes
b6d23dc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from google import genai
from google.genai.types import Content, Part  # 引入 Content 類型

import gradio as gr
system_prompt = '''
你是一個圖書管理員,根據使用者給你書本的內容來分析並進行分類。
類別只能從下面的類別內容中進行多選:
[程式語言, Data Science, 人工智慧, 分散式架構, 系統開發, 行動軟體開發, 資料庫, 資訊科學, 軟體架構, 軟體測試, 軟體工程, 資訊安全, 網站開發, 前端開發, 架站軟體, 網頁設計, Adobe 軟體應用, Office 系列, 遊戲開發設計, UI/UX, 雲端運算, 區塊鏈與金融科技, 物聯網 IoT, 商業管理類, 電子電路電機類, 嵌入式系統, 視覺影音設計, 考試認證, 數學, 微軟技術, MAC OS 蘋果電腦, 其他, 兒童專區, 製圖軟體應用, 語言學習, 國家考試, 職涯發展, Java, 理工類, 網路通訊, 量子電腦]

輸出請按照下面的格式:
[類別1,  類別2, ....] 
'''
model_name = 'gemini-2.0-flash'

def classification(api_key, books):
    client = genai.Client(api_key=api_key)
    user_prompt = books
    contents = [
        Content(role="user", parts=[Part(text=system_prompt)]),
        Content(role="user", parts=[Part(text=user_prompt)]),
    ]
    response = client.models.generate_content(model=model_name, contents=contents)    
    return f"這本書的分類是:\n {response.text}!"

with gr.Blocks() as demo: #定義區塊
    gr.Markdown("# 書籍分類") #顯示Markdown格式的物件
    api_key = gr.Textbox(label="Gemini API KEY", placeholder="這裡輸入Gemini的API KEY")
    book_content = gr.Textbox(label="書籍資訊", placeholder="這裡輸入書籍的資訊", lines=15)
    btn = gr.Button("進行分類") #按鍵
    out = gr.Textbox(label='書籍的類別')
    btn.click( 
        fn=classification,
        inputs=[api_key, book_content],
        outputs=out)

demo.launch() #執行區塊