Xyro123 commited on
Commit
d1b4d56
·
verified ·
1 Parent(s): 36fa7f6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +89 -65
app.py CHANGED
@@ -1,66 +1,90 @@
1
  import gradio as gr
2
-
3
- ----------------- SIMPLE AUTH SYSTEM -----------------
4
-
5
- users = {"admin": "1234"}
6
-
7
- def login(username, password): if username in users and users[username] == password: return gr.update(visible=False), gr.update(visible=True), f"Welcome, {username}!" return gr.update(), gr.update(), "❌ Invalid credentials!"
8
-
9
- def signup(username, password): if username in users: return "❌ User already exists!" users[username] = password return "✅ Account created! You can now log in."
10
-
11
- ----------------- CHATBOT FUNCTION -----------------
12
-
13
- def chat_bot(msg, history): history = history + [(msg, "✨ Your bot reply will appear here...")] return history, history
14
-
15
- ----------------- CUSTOM CSS (Clean Modern UI) -----------------
16
-
17
- css = """ body { background: #0d0d0d; font-family: Inter, sans-serif; } #main_title { color: white; text-align: center; margin-top: 40px; font-size: 36px; font-weight: 900; }
18
-
19
- .card-btn { background: linear-gradient(145deg, #1a1a1a, #111); border-radius: 20px; padding: 18px; border: 1px solid #2a2a2a; color: white; font-size: 18px; width: 100%; transition: 0.25s; } .card-btn:hover { background: #222; transform: translateY(-3px); } .chatbox-holder { border-radius: 18px; overflow: hidden; } """
20
-
21
- ----------------- APP UI -----------------
22
-
23
- with gr.Blocks(css=css, theme="soft") as app:
24
-
25
- # -------- AUTH SCREEN --------
26
- with gr.Group(visible=True) as auth_screen:
27
- gr.Markdown("<h1 id='main_title'>Welcome</h1>")
28
-
29
- with gr.Tabs():
30
- with gr.Tab("Login"):
31
- login_user = gr.Textbox(label="Username")
32
- login_pass = gr.Textbox(label="Password", type="password")
33
- login_btn = gr.Button("Log In")
34
- login_status = gr.Markdown("")
35
-
36
- with gr.Tab("Sign Up"):
37
- sign_user = gr.Textbox(label="New Username")
38
- sign_pass = gr.Textbox(label="New Password", type="password")
39
- sign_btn = gr.Button("Create Account")
40
- signup_status = gr.Markdown("")
41
-
42
- # -------- MAIN HOME SCREEN --------
43
- with gr.Group(visible=False) as home_screen:
44
-
45
- gr.Markdown("<h1 id='main_title'>What can I help you with?</h1>")
46
-
47
- with gr.Row():
48
- gr.Button("🎨 Create Image", elem_classes="card-btn")
49
- gr.Button("💻 Write Code", elem_classes="card-btn")
50
-
51
- with gr.Row():
52
- gr.Button("📝 Summarize Text", elem_classes="card-btn")
53
- gr.Button("📅 Make a Plan", elem_classes="card-btn")
54
-
55
- chatbot = gr.Chatbot(height=450, elem_classes="chatbox-holder")
56
- msg = gr.Textbox(placeholder="Ask something...", scale=8)
57
- send = gr.Button("Send", scale=2)
58
-
59
- send.click(chat_bot, [msg, chatbot], [chatbot, chatbot])
60
- msg.submit(chat_bot, [msg, chatbot], [chatbot, chatbot])
61
-
62
- # -------- BUTTON EVENTS --------
63
- login_btn.click(login, [login_user, login_pass], [auth_screen, home_screen, login_status])
64
- sign_btn.click(signup, [sign_user, sign_pass], signup_status)
65
-
66
- app.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import gradio as gr
2
+ import google.generativeai as genai
3
+ import os
4
+
5
+ # ----------------- ТОХИРГОО -----------------
6
+ # ЧУХАЛ: API түлхүүрээ орчны хувьсагч (environment variable) болгож тохируулна уу.
7
+ # Google AI Studio-с API түлхүүрээ авна уу: https://aistudio.google.com/app/apikey
8
+ #
9
+ # Терминал дээрээ дараах байдлаар тохируулж болно:
10
+ # export GOOGLE_API_KEY="ЭНД_API_ТҮЛХҮҮРЭЭ_ОРУУЛНА_УУ"
11
+
12
+ try:
13
+ genai.configure(api_key=os.environ["GOOGLE_API_KEY"])
14
+ except KeyError:
15
+ print("АЛДАА: GOOGLE_API_KEY орчны хувьсагч тохируулагдаагүй байна.")
16
+ # Хэрэв түлхүүр байхгүй бол Gradio интерфэйс дээр алдаа харуулна
17
+ api_key_set = False
18
+ else:
19
+ api_key_set = True
20
+
21
+ # Аюулгүй байдлын тохиргоог зөөлрүүлэх (зарим тохиолдолд хариулт блоклогдохоос сэргийлнэ)
22
+ safety_settings = [
23
+ {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"},
24
+ {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},
25
+ {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},
26
+ {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"},
27
+ ]
28
+
29
+ # Gemini Pro загварыг сонгох
30
+ model = genai.GenerativeModel('gemini-pro', safety_settings=safety_settings)
31
+
32
+ # Чатны түүхийг хадгалах (Gradio-ийн session state)
33
+ chat = model.start_chat(history=[])
34
+
35
+ # ----------------- GRADIO ФУНКЦ -----------------
36
+ def gemini_chat(message, history):
37
+ """
38
+ Gradio чатны интерфэйст зориулсан функц.
39
+ Хэрэглэгчийн зурвасыг Gemini API руу илгээж, хариултыг нь буцаана.
40
+ """
41
+ if not api_key_set:
42
+ yield "АЛДАА: Google API түлхүүр тохируулагдаагүй байна. Програмыг унтрааж, API түлхүүрээ тохируулаад дахин ажиллуулна уу."
43
+ return
44
+
45
+ try:
46
+ # Mesasge-ийг загвар луу илгээнэ
47
+ response = chat.send_message(message, stream=True)
48
+
49
+ # Хариултыг хэсэгчлэн (stream) авах
50
+ full_response = ""
51
+ for chunk in response:
52
+ full_response += chunk.text
53
+ yield full_response
54
+
55
+ except Exception as e:
56
+ yield f"Алдаа гарлаа: {e}"
57
+
58
+
59
+ # ----------------- GRADIO ИНТЕРФЕЙС -----------------
60
+ with gr.Blocks(theme=gr.themes.Soft(), title="Gemini Chat") as demo:
61
+ gr.Markdown(
62
+ """
63
+ # Gemini Chat 🤖
64
+ Энэ бол Google-ийн Gemini Pro загварыг ашигласан чатбот юм.
65
+ """
66
+ )
67
+ # ChatGPT-тэй ижил дизайнтай чат интерфэйс
68
+ chatbot = gr.ChatInterface(
69
+ fn=gemini_chat,
70
+ chatbot=gr.Chatbot(
71
+ height=600,
72
+ show_label=False,
73
+ avatar_images=(None, "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"),
74
+ ),
75
+ textbox=gr.Textbox(
76
+ placeholder="Энд бичнэ үү...",
77
+ container=False,
78
+ scale=7,
79
+ ),
80
+ title=None,
81
+ submit_btn="Илгээх",
82
+ retry_btn=None,
83
+ undo_btn="Буцаах",
84
+ clear_btn="Цэвэрлэх",
85
+ )
86
+
87
+ # ----------------- АЖИЛЛУУЛАХ -----------------
88
+ if __name__ == "__main__":
89
+ # Gradio аппликейшнийг ажиллуулах
90
+ demo.launch(debug=True)