Hugin er en KI-tjeneste utviklet av og for Telemark og Vestfold fylkeskommune. Tjenesten tilbyr tilgang til ulike språkmodeller og KI-verktøy gjennom webapplikasjon. Deler av tjenesten er under aktiv utvikling så feil kan forekomme. Søstertjenesten Munin lever på GitHub-sidene til Vestfold fylkeskommune.
- Om prosjektet
- Funksjoner
- Teknisk arkitektur
- Installasjon og oppsett
- Utvikling
- Prosjektstruktur
- API og tjenester
- Sikkerhet og autentisering
- Bidra til prosjektet
- Lisens
Hugin er en webbasert frontend-applikasjon bygget med SvelteKit som fungerer som et grensesnitt til ulike KI-tjenester. Prosjektet er designet for å gi ansatte i Telemark og Vestfold fylkeskommune enkel tilgang til kraftige KI-verktøy.
- Demokratisere tilgang til KI-teknologi innad i organisasjonen og for elever i videregående skole
- Gi ansatte mulighet til å bruke KI i sitt daglige arbeid
- Tilby en sikker og kontrollert miljø for KI-eksperimentering
- Uforske bruksområder for både norske og internasjonale språkmodeller
Hovedfunksjonen i Hugin som tilbyr:
- Flerspråklige modeller: Tilgang til GPT-4.1, Mistral Large, NoraLLM og flere
- Multimodal støtte: Bildeopplasting og -analyse
- Kontekstuelle samtaler: Justerbar temperatur og kontekst for noen av modellene
- Dokumentanalyse: Mulighet for å laste opp og analysere dokumenter
- Assistenter: Spesialiserte AI-assistenter for ulike bruksområder innen utdanning og organisasjon
- Last opp dokumenter i ulike formater
- Chat direkte med dokumentinnhold
- Få svar basert på dokumentets innhold
- Støtte for PDF, Word og tekstfiler
- Lydopplasting: Last opp lydfiler for transkripsjon
- Direkte opptak: Ta opp lyd direkte i nettleseren
- Norsk talegjenkjenning: Basert på Nasjonalbibliotekets KI-modell optimalisert for norsk språk
Eksperimentelt område for:
- Testing av nye funksjoner
- Strukturerte responser med Zod-skjemaer
- Utviklingsfunksjoner under testing
- Beta-versjoner av kommende funksjoner
- Orgbotter: Organisasjonsspesifikke assistenter
- Skolebotter: Utdanningsrettede KI-verktøy
- Framework: SvelteKit 5
- Språk: JavaScript/
- Hosting: Vercel
- OpenAI API: GPT-modeller
- Mistral AI: Multimodale modeller
- Azure Functions: Backend-tjenester
- Hugging Face: Åpne språkmodeller
- Microsoft Authentication Library: Sikker pålogging
- Node.js (versjon 22 eller nyere)
- npm
- Git
-
Klon repositoriet
git clone https://github.com/TFK/hugin-svelte-web.git cd hugin-svelte-web -
Installer avhengigheter
npm install
-
Konfigurer miljøvariabler
cp env_example .env
Rediger
.env-filen og legg til nødvendige API-nøkler og konfigurasjoner:VITE_AI_API_URI=din_backend_url VITE_CLIENT_ID=din_azure_client_id VITE_TENANT_ID=din_azure_tenant_id .... osv
-
Start utviklingsserveren
npm run dev
-
Åpne applikasjonen Gå til
http://localhost:5173i nettleseren din og ha det gøy!
npm run build
npm run previewnpm run dev # Start utviklingsserverProsjektet bruker:
- Vite som byggesystem
hugin-svelte-web/
├── src/
│ ├── lib/
│ │ ├── components/ # Gjenbrukbare Svelte-komponenter
│ │ ├── services/ # API-tjenester og integrasjoner
│ │ ├── data/ # Datamodeller og konfigurasjoner
│ │ ├── helpers/ # Hjelpefunksjoner
│ │ ├── auth/ # Autentiseringslogikk
│ │ └── images/ # Statiske bilder
│ ├── routes/ # SvelteKit-ruter og sider
│ ├── app.html # HTML-mal
│ └── app.css # Globale stiler
├── static/ # Statiske filer
├── package.json # Prosjektavhengigheter
├── svelte.config.js # Svelte-konfigurasjon
├── vite.config.js # Vite-konfigurasjon
└── README.md # Denne filen
ChatBlobs.svelte- ChatmeldingsvisningCardButton.svelte- HovednavigasjonskortModal.svelte- Modalvindu-komponentModelInfo.svelte- ModellinformasjonIconSpinner.svelte- Lasteindikatorer
openAiTools.js- OpenAI API-integrasjonmistralTools.js- Mistral AI-integrasjonhuggingFaceTools.js- Hugging Face-tjenesteropenaiToolsLabs.js- Eksperimentelle OpenAI-funksjoner
models.js- Konfigurasjon av tilgjengelige KI-modeller
import { responseOpenAI } from '$lib/services/openAiTools.js';
const response = await responseOpenAI({
message: 'Din melding',
kontekst: 'Kontekst for samtalen',
temperatur: 0.7,
model: 'gpt-4o'
});import { multimodalMistral } from '$lib/services/mistralTools.js';
const response = await multimodalMistral({
message: 'Beskriv dette bildet',
base64String: imageBase64,
model: 'pixtral-large-latest'
});import { testStructured } from '$lib/services/openaiToolsLabs.js';
const response = await testStructured({
message: 'Generer superheltinfo',
messageHistory: [],
kontekst: 'Superhelt-kontekst'
});Alle API-kall går gjennom Azure Functions som fungerer som mellomlag:
- Autentisering og autorisasjon
- Rate limiting
- Logging og overvåking
- API-nøkkelhåndtering
Prosjektet bruker MSAL for sikker pålogging:
import { msalAuth } from '$lib/auth/msal-auth.js';
// Logg inn
await msalAuth.loginPopup();
// Hent tilgangstoken
const token = await msalAuth.acquireTokenSilent();import { checkRoles } from '$lib/helpers/checkRoles.js';
const hasAccess = checkRoles(userRoles, requiredRoles);- OAuth 2.0 / OpenID Connect autentisering
- JWT-token validering
- Rollebasert tilgangskontroll
Vi ønsker bidrag fra utviklere! Følg disse retningslinjene:
- Fork repositoriet og klon din fork
- Opprett en ny branch for din funksjon:
git checkout -b feature/din-nye-funksjon
- Gjør endringene dine og test grundig
- Commit endringene med beskrivende meldinger:
git commit -m "Legg til: ny chat-funksjonalitet" - Push til din branch:
git push origin feature/din-nye-funksjon
- Opprett en Pull Request med detaljert beskrivelse
- Følg eksisterende kodestil
- Skriv kommentarer på norsk
- Test alle nye funksjoner
- Oppdater dokumentasjon ved behov
- 🐛 Feilrettinger
- ✨ Nye funksjoner
- 📝 Dokumentasjonsforbedringer
- 🎨 UI/UX-forbedringer
- ⚡ Tips og andre gode innspill
Dette prosjektet er lisensiert under MIT-lisensen. Se LICENSE filen for detaljer.
For spørsmål eller støtte, kontakt utviklingsteamet i Telemark og/eller Vestfold fylkeskommune.
Utviklet med ❤️ av Telemark og Vestfold fylkeskommune
