Spaces:
Sleeping
Sleeping
File size: 3,183 Bytes
4a35942 4a7d211 4a35942 a9c0001 4a35942 54e32c3 a9c0001 1e24c34 4a7d211 1e24c34 f79c98e a9c0001 4a35942 a9c0001 4a35942 074fe2f a9c0001 f79c98e 074fe2f 1e24c34 4a7d211 a9c0001 4a35942 1e24c34 074fe2f 4a35942 1e24c34 4a35942 074fe2f 1e24c34 4a35942 a9c0001 4a35942 f79c98e a9c0001 4a35942 a9c0001 4a7d211 a9c0001 1e24c34 4a35942 54e32c3 a9c0001 54e32c3 bf01995 4a35942 |
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 87 88 89 90 91 92 93 94 95 96 |
import os
import requests
import gradio as gr
import sqlite3
from openai import OpenAI
# 🔑 API keys
openai_api_key = os.getenv("OPENAI_API_KEY")
gemini_api_key = os.getenv("GEMINI_API_KEY")
print("OPENAI_API_KEY =", openai_api_key)
print("GEMINI_API_KEY =", gemini_api_key)
if openai_api_key is None:
raise ValueError("⚠️ OPENAI_API_KEY тохируулна уу!")
client = OpenAI(api_key=openai_api_key)
# SQLite db setup
conn = sqlite3.connect("chat_history.db", check_same_thread=False)
c = conn.cursor()
c.execute("""
CREATE TABLE IF NOT EXISTS history (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_input TEXT,
fusion_output TEXT
)
""")
conn.commit()
# ChatGPT (gpt-5)
def chatgpt_response(prompt):
try:
response = client.responses.create(model="gpt-5", input=prompt)
return response.output_text
except Exception as e:
return f"⚠️ ChatGPT error: {e}"
# Gemini
def gemini_response(prompt):
if gemini_api_key is None:
return "⚠️ GEMINI_API_KEY тохируулаагүй байна!"
try:
url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key={gemini_api_key}"
headers = {"Content-Type": "application/json"}
data = {"contents": [{"parts": [{"text": prompt}]}]}
res = requests.post(url, headers=headers, json=data)
res_json = res.json()
return res_json["candidates"][0]["content"]["parts"][0]["text"]
except Exception as e:
return f"⚠️ Gemini error: {e}"
# Fusion + summary
def fusion_ai(prompt, chat_history=[]):
gpt_reply = chatgpt_response(prompt)
gemini_reply = gemini_response(prompt)
if "ChatGPT error" in gpt_reply.lower():
combined = f"⚠️ ChatGPT quota дууссан тул Gemini хариу:\n\n{gemini_reply}"
else:
# Fusion summary: урт хариултаас сонгох
combined = f"ChatGPT 🧠: {gpt_reply}\nGemini 🌐: {gemini_reply}"
# Update SQLite history
c.execute("INSERT INTO history (user_input, fusion_output) VALUES (?, ?)", (prompt, combined))
conn.commit()
chat_history.append((prompt, combined))
return chat_history, chat_history
# Gradio interface
css = """
.gradio-container {background-color: #0d1117 !important; color: #e6edf3;}
h1, h3, h4, label {color: #00d9ff !important;}
textarea, input {background-color:#161b22 !important; color:#fff !important; border-radius:10px;}
button {background-color:#00d9ff !important; color:#000 !important; font-weight:bold; border-radius:10px;}
"""
with gr.Blocks(css=css, theme=gr.themes.Soft()) as app:
gr.Markdown("## 🚀 ZeppFusion AI — Persistent Fusion Chat")
chatbot = gr.Chatbot()
msg = gr.Textbox(placeholder="Таны асуулт...")
clear = gr.Button("🗑️ Clear History")
# Submit: add to history
msg.submit(fusion_ai, [msg, chatbot], [chatbot, chatbot])
# Clear button: delete SQLite history
def clear_history():
c.execute("DELETE FROM history")
conn.commit()
return []
clear.click(clear_history, None, chatbot)
if __name__ == "__main__":
app.launch() |