AI-tjänster

Proxytjänst för AI-assistenter

Gemensam bakomliggande tjänst som förmedlar kommunens applikationers anrop till AI-plattformen Eneo samt vissa Azure-funktioner som tal och översättning.

Om applikationen

Tjänsten fungerar som en mellanhand mellan kommunens applikationer och AI-plattformen Eneo, som nås via kommunens API-gateway. Applikationer kan genom tjänsten arbeta med AI-assistenter, konversationer, kunskapsutrymmen, filer och frågor utan att själva hantera direktåtkomst till AI-plattformen.

Utöver AI-plattformen erbjuder tjänsten även vissa Azure-funktioner, bland annat utfärdande av taltjänst-token (tal-till-text) och maskinöversättning av text.

Anslutande applikationer identifierar sig med API-nycklar som lagras hashade, och det finns ett separat administrationsgränssnitt där behöriga administratörer loggar in med kommunens gemensamma inloggning för att hantera assistenter och åtkomst.

Det här stödjer applikationen

  • Förmedling till AI-plattform – Vidarebefordrar anrop om assistenter, konversationer, utrymmen, filer och frågor till Eneo via API-gatewayn.
  • API-nyckelhantering – Anslutande applikationer autentiseras med API-nycklar som lagras säkert i hashad form.
  • Tal-till-text-stöd – Utfärdar token för Azures taltjänster så att applikationer kan använda taligenkänning.
  • Maskinöversättning – Översätter texter via Azures översättningstjänst.
  • Administrationsgränssnitt – Webbgränssnitt där administratörer hanterar assistenter, värdar och inställningar.

Teknisk dokumentation

Nedan beskrivs hur applikationen är uppbyggd, vilka API:er den använder och vad som krävs för att driftsätta den. Informationen är härledd ur källkoden och dess konfiguration på GitHub.

Arkitektur

Arkitekturskiss för Proxytjänst för AI-assistenter: webbappens delar och dess integrationer.
Lösningsarkitektur, härledd ur källkodens konfiguration.

Applikationen består av en webbaserad frontend (Next.js 15, React 19, sk-web-gui (administrationsgränssnitt)) och en backend (Node.js, Express, routing-controllers, TypeScript, Prisma (databas)) som utvecklas i samma kodbas. Verksamhetsanrop går via kommunens gemensamma API-plattform (WSO2) – frontend pratar aldrig direkt med underliggande system. Inloggning: API-nycklar (hashade) för anslutande applikationer; SAML (SSO) för administrationsgränssnittet. Övriga integrationer som förekommer i koden: Eneo, Azure Cognitive Services (tal-till-text), Azure Translator, SAML IdP, WSO2 API-gateway.

Teknikstack

  • Frontend: Next.js 15, React 19, sk-web-gui (administrationsgränssnitt)
  • Backend: Node.js, Express, routing-controllers, TypeScript, Prisma (databas)
  • Test: Jest (backend), Cypress (admin)

API-beroenden

Applikationen konsumerar följande API:er via kommunens API-plattform. Versionerna är hämtade ur källkodens API-konfiguration.

API-beroenden för Proxytjänst för AI-assistenter
APIVersionAnvändning
Eneo-Sundsvall1.1AI-plattformens API för assistenter, konversationer, utrymmen och filer (basväg/version konfigurerbar via miljövariabler).
SimulatorServer2.0Simulerings- och teststöd under utveckling.

Konfiguration och driftsättning

  • Backend: .env.example.local med CLIENT_KEY/CLIENT_SECRET för WSO2
  • ENEO_BASEPATH, ENEO_VERSION och ENEO_SALT för AI-plattformens anslutning och nyckelhashning
  • AZURE_REGION, AZURE_SUBSCRIPTION_KEY och AZURE_TRANSLATOR_KEY för Azure-funktioner
  • SAML-inställningar med certifikat och nycklar för administratörsinloggning
  • Databas via Prisma med migreringar (bl.a. användarinställningar, assistenter, värdar)

Noterbart ur källkoden

  • README anger Eneo-Sundsvall version 1.0 medan koden (api-config.ts) anger 1.1 och miljöexemplet 1.2 – versionen styrs i drift av miljövariabler.
  • Repot innehåller endast backend och admin, inget slutanvändargränssnitt.
  • Eneo är kommunens instans av AI-plattformen (Intric-baserad).

Källkod

Källkoden är öppen och finns hos Sundsvalls kommun på GitHub. I källkodsförrådet finns även instruktioner för att klona, konfigurera och starta applikationen i egen miljö.