soacti-ai-quiz-api / fallback_questions.py
Soacti's picture
Create fallback_questions.py
1777223 verified
raw
history blame
8.03 kB
"""
Fallback quiz-spørsmål for når AI-modeller ikke er tilgjengelige
Organisert etter tema og språk
"""
FALLBACK_QUESTIONS = {
"no": { # Norske spørsmål
"norsk historie": [
{
"spørsmål": "Hvilket år ble Norge selvstendig fra Danmark?",
"alternativer": ["1814", "1815", "1813", "1816"],
"korrekt_svar": 0,
"forklaring": "Norge ble selvstendig fra Danmark i 1814 etter Napoleonskrigene."
},
{
"spørsmål": "Hvem var Norges første konge etter selvstendigheten i 1814?",
"alternativer": ["Christian Frederik", "Karl Johan", "Oscar I", "Haakon VII"],
"korrekt_svar": 0,
"forklaring": "Christian Frederik ble valgt til konge av den norske riksforsamlingen på Eidsvoll i 1814."
},
{
"spørsmål": "Hvilket år fikk kvinner stemmerett i Norge?",
"alternativer": ["1913", "1915", "1910", "1920"],
"korrekt_svar": 0,
"forklaring": "Kvinner fikk stemmerett i Norge i 1913, som et av de første landene i verden."
}
],
"oslo": [
{
"spørsmål": "Hva heter Oslo kommunes rådhus?",
"alternativer": ["Oslo rådhus", "Akershus festning", "Stortinget", "Slottet"],
"korrekt_svar": 0,
"forklaring": "Oslo rådhus er kjent for sin karakteristiske arkitektur og er stedet hvor Nobels fredspris deles ut."
},
{
"spørsmål": "Hvilken øy i Oslofjorden er mest kjent for sine museer?",
"alternativer": ["Bygdøy", "Hovedøya", "Gressholmen", "Langøyene"],
"korrekt_svar": 0,
"forklaring": "Bygdøy har flere av Norges viktigste museer, inkludert Vikingskipshuset og Kon-Tiki museet."
},
{
"spørsmål": "Hva heter Oslos hovedgate for shopping?",
"alternativer": ["Karl Johans gate", "Storgata", "Grensen", "Torggata"],
"korrekt_svar": 0,
"forklaring": "Karl Johans gate strekker seg fra Jernbanetorget til Det kongelige slott og er Oslos hovedstrøk."
}
],
"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 og består av fargerike trebygninger fra hansatiden."
},
{
"spørsmål": "Hvilket fjell kan du ta Fløibanen opp til?",
"alternativer": ["Fløyen", "Ulriken", "Løvstakken", "Sandviksfjellet"],
"korrekt_svar": 0,
"forklaring": "Fløibanen er en av Norges mest populære turistattraksjoner og tar deg opp til Fløyen."
},
{
"spørsmål": "Bergen er kjent som 'Porten til' hva?",
"alternativer": ["Fjordene", "Vestlandet", "Hardanger", "Sognefjorden"],
"korrekt_svar": 0,
"forklaring": "Bergen kalles 'Porten til fjordene' fordi den er utgangspunkt for mange fjordturer."
}
]
},
"en": { # English questions
"norwegian history": [
{
"spørsmål": "When did Norway gain independence from Denmark?",
"alternativer": ["1814", "1815", "1813", "1816"],
"korrekt_svar": 0,
"forklaring": "Norway gained independence from Denmark in 1814 after the Napoleonic Wars."
},
{
"spørsmål": "Who was Norway's first king after independence in 1814?",
"alternativer": ["Christian Frederik", "Karl Johan", "Oscar I", "Haakon VII"],
"korrekt_svar": 0,
"forklaring": "Christian Frederik was elected king by the Norwegian constituent assembly at Eidsvoll in 1814."
}
],
"oslo": [
{
"spørsmål": "What is the name of Oslo's city hall?",
"alternativer": ["Oslo City Hall", "Akershus Fortress", "Parliament", "Royal Palace"],
"korrekt_svar": 0,
"forklaring": "Oslo City Hall is known for its distinctive architecture and hosts the Nobel Peace Prize ceremony."
},
{
"spørsmål": "Which island in the Oslo fjord is most famous for its museums?",
"alternativer": ["Bygdøy", "Hovedøya", "Gressholmen", "Langøyene"],
"korrekt_svar": 0,
"forklaring": "Bygdøy houses several of Norway's most important museums, including the Viking Ship Museum."
}
],
"bergen": [
{
"spørsmål": "What is the colorful wharf area in Bergen called?",
"alternativer": ["Bryggen", "Fish Market", "Torgallmenningen", "Nordnes"],
"korrekt_svar": 0,
"forklaring": "Bryggen is a UNESCO World Heritage site consisting of colorful wooden buildings from the Hanseatic period."
}
]
}
}
def get_fallback_questions(tema: str, språk: str = "no", antall: int = 5):
"""
Hent fallback-spørsmål for et gitt tema og språk
Args:
tema: Tema for spørsmålene (f.eks. "oslo", "bergen", "norsk historie")
språk: Språkkode ("no" eller "en")
antall: Antall spørsmål å returnere
Returns:
Liste med quiz-spørsmål
"""
# Normaliser tema til lowercase
tema_key = tema.lower().strip()
# Sjekk om språk finnes
if språk not in FALLBACK_QUESTIONS:
språk = "no" # Default til norsk
# Sjekk om tema finnes for språket
if tema_key not in FALLBACK_QUESTIONS[språk]:
# Prøv å finne lignende tema
available_topics = list(FALLBACK_QUESTIONS[språk].keys())
# Enkel matching for vanlige varianter
tema_mapping = {
"oslo": ["oslo", "oslo kommune", "hovedstad"],
"bergen": ["bergen", "bergen kommune"],
"norsk historie": ["norsk historie", "historie", "norway history", "norwegian history"]
}
for standard_tema, variants in tema_mapping.items():
if any(variant in tema_key for variant in variants):
tema_key = standard_tema
break
# Hvis fortsatt ikke funnet, bruk første tilgjengelige tema
if tema_key not in FALLBACK_QUESTIONS[språk]:
tema_key = available_topics[0] if available_topics else "oslo"
# Hent spørsmål
questions = FALLBACK_QUESTIONS[språk].get(tema_key, [])
# Begrens antall spørsmål
if len(questions) > antall:
questions = questions[:antall]
return questions
def get_available_topics(språk: str = "no"):
"""
Hent liste over tilgjengelige temaer for et språk
Args:
språk: Språkkode ("no" eller "en")
Returns:
Liste med tilgjengelige temaer
"""
if språk not in FALLBACK_QUESTIONS:
språk = "no"
return list(FALLBACK_QUESTIONS[språk].keys())
def get_topic_info(tema: str, språk: str = "no"):
"""
Hent informasjon om et tema
Args:
tema: Tema å få info om
språk: Språkkode
Returns:
Dict med tema-informasjon
"""
tema_key = tema.lower().strip()
if språk not in FALLBACK_QUESTIONS:
språk = "no"
if tema_key not in FALLBACK_QUESTIONS[språk]:
return None
questions = FALLBACK_QUESTIONS[språk][tema_key]
return {
"tema": tema_key,
"språk": språk,
"antall_spørsmål": len(questions),
"tilgjengelig": True
}