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()