ZeppFusion / app.py
Xyro123's picture
Update app.py
d1b4d56 verified
raw
history blame
3.69 kB
import gradio as gr
import google.generativeai as genai
import os
# ----------------- ТОХИРГОО -----------------
# ЧУХАЛ: API түлхүүрээ орчны хувьсагч (environment variable) болгож тохируулна уу.
# Google AI Studio-с API түлхүүрээ авна уу: https://aistudio.google.com/app/apikey
#
# Терминал дээрээ дараах байдлаар тохируулж болно:
# export GOOGLE_API_KEY="ЭНД_API_ТҮЛХҮҮРЭЭ_ОРУУЛНА_УУ"
try:
genai.configure(api_key=os.environ["GOOGLE_API_KEY"])
except KeyError:
print("АЛДАА: GOOGLE_API_KEY орчны хувьсагч тохируулагдаагүй байна.")
# Хэрэв түлхүүр байхгүй бол Gradio интерфэйс дээр алдаа харуулна
api_key_set = False
else:
api_key_set = True
# Аюулгүй байдлын тохиргоог зөөлрүүлэх (зарим тохиолдолд хариулт блоклогдохоос сэргийлнэ)
safety_settings = [
{"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"},
{"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},
{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},
{"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"},
]
# Gemini Pro загварыг сонгох
model = genai.GenerativeModel('gemini-pro', safety_settings=safety_settings)
# Чатны түүхийг хадгалах (Gradio-ийн session state)
chat = model.start_chat(history=[])
# ----------------- GRADIO ФУНКЦ -----------------
def gemini_chat(message, history):
"""
Gradio чатны интерфэйст зориулсан функц.
Хэрэглэгчийн зурвасыг Gemini API руу илгээж, хариултыг нь буцаана.
"""
if not api_key_set:
yield "АЛДАА: Google API түлхүүр тохируулагдаагүй байна. Програмыг унтрааж, API түлхүүрээ тохируулаад дахин ажиллуулна уу."
return
try:
# Mesasge-ийг загвар луу илгээнэ
response = chat.send_message(message, stream=True)
# Хариултыг хэсэгчлэн (stream) авах
full_response = ""
for chunk in response:
full_response += chunk.text
yield full_response
except Exception as e:
yield f"Алдаа гарлаа: {e}"
# ----------------- GRADIO ИНТЕРФЕЙС -----------------
with gr.Blocks(theme=gr.themes.Soft(), title="Gemini Chat") as demo:
gr.Markdown(
"""
# Gemini Chat 🤖
Энэ бол Google-ийн Gemini Pro загварыг ашигласан чатбот юм.
"""
)
# ChatGPT-тэй ижил дизайнтай чат интерфэйс
chatbot = gr.ChatInterface(
fn=gemini_chat,
chatbot=gr.Chatbot(
height=600,
show_label=False,
avatar_images=(None, "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"),
),
textbox=gr.Textbox(
placeholder="Энд бичнэ үү...",
container=False,
scale=7,
),
title=None,
submit_btn="Илгээх",
retry_btn=None,
undo_btn="Буцаах",
clear_btn="Цэвэрлэх",
)
# ----------------- АЖИЛЛУУЛАХ -----------------
if __name__ == "__main__":
# Gradio аппликейшнийг ажиллуулах
demo.launch(debug=True)