File size: 5,072 Bytes
2300b9a
 
 
 
765f19b
 
 
 
 
 
 
 
2300b9a
765f19b
 
 
 
 
 
 
 
 
 
 
2300b9a
765f19b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2300b9a
765f19b
 
2300b9a
765f19b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2300b9a
765f19b
2300b9a
 
 
 
765f19b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
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()