Soacti's picture
Update app.py
765f19b verified
raw
history blame
5.07 kB
import gradio as gr
import json
import time
# Hardkodede spørsmål direkte i app.py
QUIZ_DATABASE = {
"oslo": [
{
"spørsmål": "Hva heter Oslos hovedflyplass?",
"alternativer": ["Fornebu", "Gardermoen", "Torp", "Rygge"],
"korrekt_svar": 1,
"forklaring": "Oslo lufthavn Gardermoen er Oslos hovedflyplass, åpnet i 1998."
},
{
"spørsmål": "Hvilken fjord ligger Oslo ved?",
"alternativer": ["Trondheimsfjorden", "Oslofjorden", "Hardangerfjorden", "Sognefjorden"],
"korrekt_svar": 1,
"forklaring": "Oslo ligger innerst i Oslofjorden."
},
{
"spørsmål": "Hva heter Oslos berømte operahus?",
"alternativer": ["Operaen", "Den Norske Opera", "Oslo Opera House", "Operahuset"],
"korrekt_svar": 3,
"forklaring": "Operahuset i Oslo åpnet i 2008."
}
],
"bergen": [
{
"spørsmål": "Hva kalles det fargerike kaiområdet i Bergen?",
"alternativer": ["Bryggen", "Fisketorget", "Torgallmenningen", "Nordnes"],
"korrekt_svar": 0,
"forklaring": "Bryggen er UNESCOs verdensarvsted."
},
{
"spørsmål": "Hvilket fjell kan man ta Fløibanen opp til?",
"alternativer": ["Ulriken", "Fløyen", "Løvstakken", "Sandviksfjellet"],
"korrekt_svar": 1,
"forklaring": "Fløibanen går opp til Fløyen, 320 meter over havet."
}
],
"norsk historie": [
{
"spørsmål": "Hvilket år ble Norge selvstendig fra Danmark?",
"alternativer": ["1814", "1905", "1821", "1830"],
"korrekt_svar": 0,
"forklaring": "Norge ble selvstendig fra Danmark i 1814."
}
]
}
def generate_quiz_for_soacti(tema, språk, antall, type_val, vanskelighet):
"""Quiz-generering som SoActi kan bruke"""
try:
# Normaliser tema
tema_lower = tema.lower().strip()
# Finn spørsmål
if tema_lower in QUIZ_DATABASE:
questions = QUIZ_DATABASE[tema_lower]
elif "oslo" in tema_lower:
questions = QUIZ_DATABASE["oslo"]
elif "bergen" in tema_lower:
questions = QUIZ_DATABASE["bergen"]
elif "historie" in tema_lower:
questions = QUIZ_DATABASE["norsk historie"]
else:
questions = QUIZ_DATABASE["oslo"] # Default
# Begrens antall
selected = questions[:antall]
# Format output for visning
output = f"✅ **Genererte {len(selected)} spørsmål om '{tema}'**\n\n"
output += f"🤖 **Modell:** Fallback (forhåndsdefinerte spørsmål)\n"
output += f"🌐 **Språk:** {språk}\n"
output += f"⏱️ **Tid:** 0.1s\n\n"
for i, q in enumerate(selected, 1):
output += f"📝 **Spørsmål {i}:** {q['spørsmål']}\n"
for j, alt in enumerate(q['alternativer']):
marker = "✅" if j == q['korrekt_svar'] else "❌"
output += f" {chr(65+j)}) {alt} {marker}\n"
output += f"💡 **Forklaring:** {q['forklaring']}\n\n"
return output
except Exception as e:
return f"❌ **Feil:** {str(e)}"
# Gradio interface
with gr.Blocks(title="SoActi AI Quiz API") as demo:
gr.Markdown("# 🧠 SoActi AI Quiz API")
gr.Markdown("**Fungerende quiz-generering for SoActi**")
with gr.Row():
with gr.Column():
tema_input = gr.Textbox(
label="Tema",
value="Oslo",
placeholder="Oslo, Bergen, Norsk historie"
)
språk_input = gr.Dropdown(
choices=["no", "en"],
label="Språk",
value="no"
)
antall_input = gr.Slider(
minimum=1,
maximum=5,
step=1,
label="Antall spørsmål",
value=3
)
type_input = gr.Dropdown(
choices=["sted", "rute"],
label="Type",
value="sted"
)
vanskelighet_input = gr.Slider(
minimum=1,
maximum=5,
step=1,
label="Vanskelighetsgrad",
value=3
)
generate_btn = gr.Button("🚀 Generer Quiz", variant="primary")
with gr.Column():
output = gr.Textbox(
label="Generert Quiz",
lines=20,
placeholder="Klikk 'Generer Quiz' for å starte..."
)
generate_btn.click(
fn=generate_quiz_for_soacti,
inputs=[tema_input, språk_input, antall_input, type_input, vanskelighet_input],
outputs=output
)
gr.Markdown("## 🔗 API URL for SoActi")
gr.Markdown("`https://Soacti-soacti-ai-quiz-api.hf.space`")
demo.launch()