🤖 KI-modeller og leverandører
Primær KI-motor
Google Gemini 2.0 Flash
Tilgang via: OpenRouter
Modell-ID: google/gemini-2.0-flash-001
Reserve-system
GPT-4o Mini
Tilgang via: OpenAI
Modell-ID: gpt-4o-mini
Spesialiserte KI-tjenester
Bildegenerering
Google Gemini Imagen
Lager bilder basert på tekstbeskrivelser.
Maksimalt 3 bilder per bruker per dag.
Tegneseriekonvertering
Replicate Flux Kontext Pro
Konverterer bilder til en tegneseriestil.
Tilpasset for en barnevennlig stil.
Innholdsvalidering
Mistral 7B Instruct
Validerer bildeforespørsler.
Oversetter til engelsk for generering.
Bildesikkerhet
Google Gemini 2.5 Flash Lite
Validerer opplastede bilder.
Sikrer at innholdet er barnevennlig.
Valg av modeller og deres egenskaper
Google Gemini 2.0 Flash: Dette er vår hovedmodell, valgt for sin sterke ytelse på norsk, gode evne til å følge sikkerhetsinstruksjoner og kostnadseffektivitet.
GPT-4o Mini: Vår reservemodell, som har lignende egenskaper som hovedmodellen, med høy stabilitet og forutsigbarhet.
Bildegenerering: Gemini brukes for tekstbasert bildegenerering og har strenge sikkerhetsfiltre for å sikre barnevennlig innhold.
Tegneseriekonvertering: Flux-modellen er spesialisert på å gjøre bilder mer barnevennlige og tegneserieaktige.
Bildesikkerhet: Alle bilder som lastes opp, valideres automatisk av Gemini 2.5 Flash Lite for å sikre at innholdet er egnet for barn.
Failover-logikk
Systemet prøver automatisk den primære modellen først. Ved feil eller utilgjengelighet, skjer en automatisk overgang til reservemodellen uten at brukeren merker det. Bildegenerering og tegneseriekonvertering har ingen reserve, da dette er spesialiserte tjenester.
🤖 KI-basert deteksjon av aktuelle hendelser
Utfordringen med dagsaktuelle spørsmål
KI-modeller har en "kunnskapsgrense" og kan ikke svare på dagsaktuelle spørsmål uten tilgang til oppdatert informasjon fra internett.
KI-basert deteksjon
KI-modellen bestemmer selv når online-informasjon er nødvendig:
Implementering
To-trinns prosess for dagsaktuelle spørsmål
Trinn 1 - Evaluering: Spørsmålet sendes først til standard KI-modell, som vurderer om oppdatert informasjon er nødvendig.
Trinn 2A - Standard svar: Hvis spørsmålet kan besvares med eksisterende kunnskap, returneres svaret direkte.
Trinn 2B - Online-søk: Hvis fersk informasjon er nødvendig, aktiveres OpenRouters online-funksjon, som søker på internett og returnerer et oppdatert svar.
Feilhåndtering: Ved problemer med online-søk, informeres brukeren om at oppdatert informasjon ikke er tilgjengelig.
Implementeringslogikk
Beslutningsprosessen
Systemet bruker en intelligent beslutningslogikk for å avgjøre når online-søk er nødvendig:
- Markør-deteksjon: KI-modellen returnerer en spesiell markør når den identifiserer behov for oppdatert informasjon.
- Automatisk omruting: Ved deteksjon av markøren, rutes spørsmålet automatisk til online-modellen.
- Modellformat: Online-versjonen aktiveres ved å legge til ':online' suffiks til modellnavnet.
- Resultatflagging: Svaret merkes med en indikator som viser at fersk informasjon ble hentet.
- Reserve-strategi: Ved feil returneres en brukervennlig melding om at oppdatert informasjon ikke er tilgjengelig.
Fordeler
- Kontekstforståelse: KI forstår intensjonen bak spørsmålet.
- Smartere deteksjon: Skiller mellom stabile fakta og endelige posisjoner.
- Fleksibel: Forstår nye måter å spørre på uten kodeoppdateringer.
- Norsk-optimalisert: Bedre forståelse av norske uttrykk og kultur.
- Selvlærende: Blir automatisk bedre med nye KI-modeller.
OpenRouter :online funksjonalitet
OpenRouter tilbyr ":online" suffikset som gir KI-modeller tilgang til sanntids-søkemotordata:
- Modellformat:
google/gemini-2.0-flash-001:online
- Tilgang: Kun via OpenRouter (ikke OpenAI).
- Kostnad: Litt høyere enn vanlige modeller.
- Responstid: Noe tregere på grunn av web-søk.
Kostnadshensyn og optimalisering
KI-ens selvstendige vurdering av behov for online-søk reduserer unødvendige og dyre API-kall:
- Token-besparelse: Når [ONLINE_NEEDED] detekteres, genereres ikke et komplett svar fra den første modellen.
- Selektiv bruk: Omtrent 10% av spørsmålene krever online-tilgang, noe som betyr at kun 10% betaler premium.
- Bedre responstid: Kortere første respons når online-tilgang er nødvendig.
- Feilhåndtering: Tydelig melding hvis online-tjenesten er nede.
Kostnadsoptimalisering:
- KI-deteksjon: Mindre enn 5% falske positive + token-besparelse når online-tilgang er nødvendig.
- Selektiv bruk: Omtrent 10% av spørsmålene krever online-tilgang, noe som betyr at kun 10% betaler premium.
- Effektiv kostnadskontroll for håndtering av aktuelle hendelser.
Visuell indikator
Når online-søk brukes, viser grensesnittet et ✨ "Aktuell info"-merke som informerer brukeren om at svaret er basert på fersk data fra internett.
🔒 Hybrid system for ratebegrensning
Hybrid system
Systemet kombinerer flere faktorer for robust ratebegrensning:
Enhetsfingeravtrykk
Genererer et unikt fingeravtrykk basert på stabile nettleseregenskaper:
- User Agent-streng
- Språkinnstillinger (language, languages)
- Tidssone og lokale innstillinger
- Maskinvareinformasjon (platform, hardwareConcurrency, maxTouchPoints)
- Nettleserfunksjoner (cookieEnabled, doNotTrack)
- WebGL-leverandør/gjengiverinformasjon
Fingeravtrykk-algoritme
Alle komponenter kombineres til en streng, som deretter hashes med SHA-256 og forkortes til 32 tegn for anonymisering.
Vedvarende enhets-ID
Genererer og lagrer en unik enhets-ID:
- Primær lagring: localStorage
- Reserve lagring: HTTP-cookie (365 dager)
- Format:
dev_[timestamp]_[random]
Kombinert identifikasjonssystem
Logikk for hash-generering
Systemet kombinerer flere identifikatorer for å skape en unik, anonymisert bruker-hash:
- Primære faktorer: Enhetsfingeravtrykk og enhets-ID brukes som hovedidentifikatorer når tilgjengelig.
- Sekundær faktor: IP-adresse brukes som tilleggsfaktor for økt sikkerhet.
- Reserve-mekanisme: Ved manglende enhetsdata brukes IP-adresse som primær identifikator.
- Hashing: Alle faktorer kombineres og krypteres med SHA-256 for fullstendig anonymisering.
- Resultat: En unik 64-tegns hash som ikke kan reverseres til original data.
Datastruktur for ratebegrensning
Lagringssystem
Data for ratebegrensning organiseres i en strukturert JSON-fil med to hovedseksjoner:
Brukerbegrensninger:
- Unik bruker-hash som nøkkel.
- Dagens dato for automatisk tilbakestilling.
- Antall meldinger sendt i dag.
- Anonymiserte identifikatorer for sporing.
IP-statistikk:
- Samlet antall forespørsler per IP-adresse.
- Antall unike brukere per IP.
- Brukes for å oppdage misbruk og fordele kvoter rettferdig.
Automatisk opprydding: Data eldre enn 24 timer slettes automatisk ved neste forespørsel.
Fordeler
- Mer rettferdig: Søsken på samme IP får egne kvoter.
- Robust mot omgåelse: Krever endring av flere faktorer.
- Personvernvennlig: Hasher sensitive data.
- Gradvis nedgradering: Fungerer selv om enhetsinformasjon mangler.
- Statistikk: Bedre innsikt i bruksmønstre.
🛡️ Sikkerhet og innholdskontroll
System for innholdssikkerhet
Implementert i content_safety.php
med følgende funksjoner:
- Banneordfiltrering: Regex-basert sjekk av norske banneord.
- Progressivt varslingssystem: 3 advarsler før økten nullstilles.
- Likhetsdeteksjon: Oppdager lignende forsøk på omgåelse.
- Hendelseslogging: Logger sikkerhetshendelser for analyse.
Inputvalidering
- Meldingslengde: Maksimalt 2000 tegn.
- Samtalehistorikk: Maksimalt 20 meldinger.
- Historikk per melding: Maksimalt 5000 tegn.
- Bildestørrelse: Maksimalt 10MB per opplastet fil.
- Bildesikkerhet: KI-validering av alle opplastede bilder.
- JSON-validering av alle innkommende data.
CORS og tilgangskontroll
Domenebegrensninger
Systemet tillater kun API-forespørsler fra forhåndsgodkjente domener:
- Produksjonsdomener: snakki.no og www.snakki.no (kun HTTPS).
- Utviklingsmiljø: localhost og 127.0.0.1 på port 8000.
- Sikkerhet: Alle andre domener blokkeres automatisk.
- Headere: Strenge CORS-retningslinjer forhindrer cross-site scripting.
📊 Overvåking og logging
Feillogging
- PHP error_log() for feil på server-siden.
- Konsollogging i frontend for feilsøking.
- Feil ved ratebegrensning logges med IP-adresse.
- Hendelser knyttet til innholdssikkerhet logges med kontekst.
Ytelsesovervåking
- API-responstider måles i frontend.
- Tidsavbruddshåndtering med en grense på 30 sekunder.
- Failover-statistikk ved leverandørproblemer.
Kapasitetsplanlegging
Med 100 meldinger per bruker per dag:
- 500 aktive brukere: Omtrent 25 000 API-kall per dag.
- Estimert kostnad: 15 000-25 000 NOK per måned.
- Høyest belastning: Skoletid 14:00-17:00 på hverdager.
📬 Kontakt for teknisk støtte
For utviklere og teknisk interesserte
Har du tekniske spørsmål om implementeringen? Eller ideer og innspill til videre utvikling?
E-post: post@datasor.no
Emnefelt: "Teknisk henvendelse - [ditt emne]"
Åpen kildekode og samarbeid
Mulige fordeler med en tilnærming basert på åpen kildekode:
- Økt transparens og tillit.
- Muliggjør bidrag fra fellesskapet.
- Akselererer utviklingen av sikre KI-verktøy for barn.
- Deler kunnskap om norsk KI-implementering.