← Back to docs

OpenAI / AI

Language: SV | EN | SV

OpenAI / AI

Tools kan använda en intern AI-motor ("OpenAI Engine") för att analysera innehåll och driva plattformsfunktioner – utan att någon API-nyckel någonsin exponeras i frontend.

Den här dokumentationen är en användarmanual och beskriver:

  • Webgränssnittet för OpenAI Engine (admin)
  • API-endpointen för URL-analys
  • Behörigheter och autentisering

Web: OpenAI Engine (admin)

URL:

  • /admin/openai

Krav:

  • Inloggning (web session)
  • Behörighet: openai.manage

I webgränssnittet kan du:

  • Aktivera/avaktivera motorn (Enabled)
  • Sätta global policy (default model, allowlist, token-tak, rate limits)
  • Skapa/uppdatera Prompt profiles
  • Köra Test prompt för att verifiera att allt fungerar (server-side)

Dynamiska modellistor

Model-dropdowns i /admin/openai är inte längre hårdkodade.

  • Tools hämtar modellkatalogen server-side via OpenAI GET /v1/models
  • svaret filtreras ned till modell-id:n som är rimliga för chat/completions
  • om allowed_models är satt så filtreras dropdownen vidare av allowlisten
  • om live-discovery misslyckas används konfigurerade/default-modeller som fallback så att UI:t fortfarande fungerar

Det betyder att modellistan i admin bättre speglar vad den aktiva provider-nyckeln faktiskt kan använda, utan att någon nyckel exponeras i webbläsaren.

Vad betyder “Enabled”?

  • Enabled = av: AI-endpoints ska vara avstängda (ofta 503, beroende på endpoint).
  • Enabled = på: motorn kan användas (förutsatt att global provider-nyckel finns).

Obs: Provider-nycklar hanteras under API Keys och visas aldrig i klartext.

Personlig Bearer Token (Tools AI)

Användare som har behörighet kan skapa en personlig bearer token:

  • Gå till My API Keys: /keys/mine
  • Använd Tools AI Bearer token för att generera/rotera token
  • Token visas bara en gång och lagras server-side

Används så här:

Authorization: Bearer <token>

Token fungerar för AI-endpoints (t.ex. /api/ai/url/analyze) och är kopplad till din användare + behörighet.

API: URL Analyze

Endpoint:

  • POST /api/ai/url/analyze

Syfte:

  • Du skickar in en URL (och ev. en fråga)
  • Tools hämtar och sanerar texten server-side
  • OpenAI Engine analyserar texten via vald prompt-profil

Request

Form data eller JSON:

  • url (required) — URL att analysera
  • question (optional) — fråga/fokus för analysen
  • profile (optional) — prompt-profil (default: URL Analyzer om den finns, annars minimal default)

Response

JSON:

  • ok — true/false
  • request_id — intern request-id
  • latency_ms — ungefärlig svarstid
  • model — vilken modell som användes
  • response — model output (om ok)
  • error — felmeddelande (om ok=false)

Auth & Permissions

För att använda endpointen krävs:

  • Inloggning: annars 401 Unauthenticated
  • Admin (is_admin=1) → tillåts alltid
  • Icke-admin → kräver permission: provider_openai

Om OpenAI provider saknas (ingen global provider_openai API key) returneras normalt 503.

Exempel

curl -X POST "https://tools.tornevall.net/api/ai/url/analyze" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <TOKEN>" \
  -d '{
    "url": "https://example.com",
    "question": "What is this page about?",
    "profile": "URL Analyzer"
  }'

Säkerhet

  • Inga nycklar exponeras i frontend.
  • URL-innehåll hämtas server-side med SSRF-skydd (privata IP-ranges blockeras, storleksgräns, timeouts, redirect-limit).
  • System/developer-instruktioner styrs av prompt-profiler, inte klienten.

API: Modellkatalog för Social Media-extension

Endpoint:

  • GET /api/social-media-tools/extension/models

Syfte:

  • returnerar den modellista som backend har upptäckt för den autentiserade Tools bearer token
  • gör att Chrome-extensionen kan bygga sin model-dropdown dynamiskt utan att prata direkt med OpenAI
  • återanvänder samma nyckelupplösning som resten av Tools (personlig OpenAI-nyckel om sådan finns, annars global)