# Prompt‑suunnittelu luotettaviin tekoälyn tuottamiin turvallisuuskyselyvastauksiin

## Johdanto  

Turvallisuuskyselyt ovat pullonkaula monille SaaS‑yrityksille. Yksi toimittajaraportti voi sisältää kymmeniä yksityiskohtaisia kysymyksiä tiedon suojauksesta, tapahtumavasteesta, käyttöoikeuksien hallinnasta ja muusta. Manuaalinen vastausten laatiminen vie aikaa, on virhealttiina ja johtaa usein päällekkäiseen työhön eri tiimien välillä.  

Suurilla kielimalleilla (LLM), kuten GPT‑4, Claude tai Llama 2, on kyky laatia korkealaatuisia narratiivisia vastauksia sekunneissa. Kuitenkin tämän voiman suora käyttö kyselyissä tuottaa harvoin luotettavia tuloksia. Raaka‑tuloste voi poiketa politiikkakielestä, jättää kriittisiä kohtia huomiotta tai tuottaa olemattomia todisteita.  

**Prompt‑suunnittelu** — kurinalainen käytäntö, jossa muotoillaan teksti, joka ohjaa LLM:ää — siltaa raakan generatiivisen kyvyn ja tiukkojen vaatimusten välistä kuilu. Tässä artikkelissa esittelemme toistettavan prompt‑suunnittelukehyksen, joka muuntaa LLM:n luotettavaksi avustajaksi turvallisuuskyselyiden automatisointiin.  

Käsittelemme seuraavaa:

* Kuinka upottaa politiikkatieto suoraan prompteihin  
* Tekniikoita sävyn, pituuden ja rakenteen hallitsemiseksi  
* Automaattisia tarkistussilmukoita, jotka havaitsevat epäjohdonmukaisuudet ennen tarkastajien käsittelyä  
* Integrointimallia alustoille kuten Procurize, mukaan lukien Mermaid‑kaavio  

Oppaan lopussa lukijat saavat konkreettisen työkalupakin, jonka avulla kyselyiden läpimenoaikaa voidaan lyhentää 50 % – 70 % parantaen samalla vastausten tarkkuutta.

---

## 1. Prompt‑ympäristön ymmärtäminen  

### 1.1 Prompt‑tyypit  

| Prompt‑tyyppi | Tavoite | Esimerkki |
|---------------|---------|-----------|
| **Kontekstuaalinen prompt** | Tarjoaa LLM:lle relevantteja politiikkalainauksia, standardeja ja määritelmiä | “Alla on ote meidän [SOC 2](https://secureframe.com/hub/soc-2/what-is-soc-2) -politiikasta, jossa käsitellään levossa olevaa salausta…” |
| **Ohjeistava prompt** | Kertoo mallille tarkalleen, miten vastaus tulisi muotoilla | “Kirjoita vastaus kolmessa lyhyessä kappaleessa, joista jokainen alkaa lihavoidulla otsikolla.” |
| **Rajoituksia asettava prompt** | Asettaa kiinteitä rajoja, kuten sanamäärän tai kiellettyjä termejä | “Älä ylitä 250 sanaa, eikä käytä sanaa ‘ehkä’.” |
| **Vahvistus‑prompt** | Luo tarkistuslistan, jonka vastaus on täytettävä | “Kun olet laatinut vastauksen, listaa kaikki politiikkakohtaukset, joita ei viitattu.” |

Vahva kyselyvastausputki kytkee useita näistä prompt‑tyypeistä yhteen pyyntöön tai käyttää monivaiheista lähestymistapaa (prompt → vastaus → uusi prompt).

### 1.2 Miksi yhden kerran promtteja epäonnistuu  

Yksinkertainen yksittäinen promptti kuten *“Vastaa seuraavaan turvallisuus­kysymykseen”* tuottaa usein:

* **Puuttuminen** — tärkeitä politiikkaviitteitä ei mainita.  
* **Harhautus** — malli keksii kontrollitoimenpiteitä, joita ei ole.  
* **Epäjohdonmukainen kieli** — vastaus käyttää epämuodollista ilmaisua, joka on ristiriidassa yrityksen compliance‑äänen kanssa.  

Prompt‑suunnittelu vähentää näitä riskejä syöttämällä LLM:lle juuri tarvitsemaansa tietoa ja pyytämällä sitä itse tarkistamaan tuotoksensa.

---

## 2. Prompt‑suunnittelukehyksen rakentaminen  

Alla on vaihe‑vaihe – -kehys, jonka voi koodata uudelleenkäytettävään funktioon missä tahansa compliance‑alustassa.

### 2.1 Vaihe 1 — Hae relevantit politiikkafragmentit  

Käytä haettavaa tietokantaa (vektorivarasto, graafitietokanta tai yksinkertainen avainsanahaku) hakeaksesi tärkeimmät politiikkaluvut.  
*Esimerkkikysely*: “levossa oleva salaus” + “[ISO 27001](https://www.iso.org/standard/27001)” tai “SOC 2 CC6.1”.

Tuloksena voi olla:

```text
Politiikkafragmentti A:
“Kaikki tuotantodata on salattava levossa käyttäen AES‑256‑algoritmia tai vastaavaa. Salausavaimia kierrätetään 90 päivän välein ja ne säilytetään laitteistopohjaisessa suojausmoduulissa (HSM).”
```

### 2.2 Vaihe 2 — Kokoa prompt‑mallipohja  

Mallipohja, joka yhdistää kaikki prompt‑tyypit:

```
[CONTEXT] 
{Policy Fragments}

[INSTRUCTION] 
Olet compliance‑asiantuntija, joka laatii vastausta turvallisuuskyselyyn. Kohdeyleisö on vanhempi turvallisuusauditoinnin tarkastaja. Noudata näitä sääntöjä:
- Käytä politiikkafragmenttien tarkkaa kieltä, kun se on sovellettavissa.
- Rakenna vastaus: lyhyt johdanto, tarkka runko ja tiivis loppupäätelmä.
- Viittaa kuhunkin politiikkafragmenttiin tunnisteella (esim. [Fragment A]).

[QUESTION] 
{Security Question Text}

[CONSTRAINT] 
- Enintään 250 sanaa.
- Älä lisää kontrollia, jota politiikkafragmentit eivät sisällä.
- Päätä lauseeseen, jossa vahvistetaan, että todisteet voidaan toimittaa pyynnöstä.

[VERIFICATION] 
Vastauksen jälkeen listaa kaikki politiikkafragmentit, joita ei käytetty, ja kaikki uudet termit, jotka on otettu käyttöön.
```

### 2.3 Vaihe 3 — Lähetä LLM:lle  

Lähetä koostettu promptti valitsemallesi LLM:lle sen API:n kautta. Toistettavuuden vuoksi aseta temperature = 0.2 (pieni satunnaisuus) ja max_tokens vastaamaan sanamäärärajaa.

### 2.4 Vaihe 4 — Jäsennä ja tarkista vastaus  

LLM palauttaa kaksi osaa: **vastaus** ja **verifiointilista**. Automaattinen skripti tarkistaa:

* Kaikkien vaadittujen fragmenttitunnisteiden läsnäolo.  
* Että uusia kontrollinimiä ei esiinny (vertaa sallittuun listaan).  
* Sanamäärän noudattaminen.

Mikäli jokin sääntö rikkoutuu, skripti käynnistää **uuden promptin** palautteella:

```
[FEEDBACK]
Et viitannut fragmenttiin B ja lisäsit termin “dynaaminen avainkierto”, mikä ei ole politiikassamme. Korjaa nämä kohdat.
```

### 2.5 Vaihe 5 — Liitä todisteet  

Kun tarkistus onnistuu, järjestelmä lisää automaattisesti linkit tukeviin todisteisiin (esim. avainkierron lokit, HSM‑sertifikaatit). Valmis tulos tallennetaan Procurizen Evidence‑hubiin ja näytetään tarkastajille.

---

## 3. Käytännön työnkulun kaavio  

Seuraava Mermaid‑kaavio havainnollistaa loppuun saakka kulkevan prosessin tyypillisessä SaaS‑compliance‑alustassa.

```mermaid
graph TD
    A["Käyttäjä valitsee kyselyn"] --> B["Järjestelmä hakee relevantit politiikkafragmentit"]
    B --> C["Prompt‑rakentaja kokoaa moniosaisen promptin"]
    C --> D["LLM tuottaa vastauksen + verifiointilistan"]
    D --> E["Automaattinen validointiyksikkö tarkistaa listan"]
    E -->|Hyväksytty| F["Vastaus tallennetaan, todisteet liitetään"]
    E -->|Hylätty| G["Uusi promptti palautteella"]
    G --> C
    F --> H["Tarkastajat tarkastelevat vastausta Procurize‑hallintapaneelissa"]
    H --> I["Auditointi valmis, vastaus viedään vientiin"]
```

Kaikki solmujen tekstit on suljettu lainausmerkkeihin.

---

## 4. Edistyneet prompt‑tekniikat  

### 4.1 Few‑Shot‑esimerkit  

Muutaman esimerkkikysymys‑vastausparin lisääminen promptiin parantaa johdonmukaisuutta merkittävästi. Esimerkki:

```
Esimerkki 1:
K: Kuinka suojaat tiedon siirrossa?
V: Kaikki siirrettävä data on salattu käyttäen TLS 1.2‑tai uudempi protokolla, jossa on forward‑secrecy‑salausmenetelmät. [Fragment C]

Esimerkki 2:
K: Kuvaile incident‑response‑prosessi.
V: Incident‑response‑suunnitelmamme seuraa [NIST CSF](https://www.nist.gov/cyberframework) -kehystä (NIST 800‑61), sisältää 24‑tunnin eskalointiajanjakson ja tarkistetaan kahden vuoden välein. [Fragment D]
```

LLM:n on nyt selkeä tyyli, jota se voi jäljitellä.

### 4.2 Chain‑of‑Thought‑promptit  

Kannusta mallia pohtimaan askel askeleelta ennen vastaamista:

```
Mieti, mitkä politiikkafragmentit soveltuvat, listaa ne, ja laadi sitten vastaus.
```

Tämä vähentää harhautumista ja tuottaa läpinäkyvän ajatusketjun, jonka voi tallentaa lokiin.

### 4.3 Retrieval‑Augmented Generation (RAG)  

Sen sijaan, että fragmentit haetaan ennen promptia, anna LLM:n tehdä haku vektoritietokannan kautta suoraan generoinnin aikana. Tämä toimii hyvin, kun politiikkakokoelma on suuri ja jatkuvasti päivittyvä.

---

## 5. Integrointi Procurize‑alustaan  

Procurize tarjoaa jo:

* **Politiikkavaraston** (keskitetty, versionhallittu)  
* **Kyselytrackerin** (tehtävät, kommentit, audit‑loki)  
* **Evidence‑hubin** (tiedostojen tallennus, automaattinen linkitys)  

Prompt‑suunnitteluputken liittäminen vaatii kolme API‑kutsua:

1. `GET /policies/search` — hakee fragmentit kyselyn avainsanojen perusteella.  
2. `POST /llm/generate` — lähettää koostetun promptin ja vastaanottaa vastaus‑ + verifiointidatan.  
3. `POST /questionnaire/{id}/answer` — lähettää tarkistetun vastauksen, liittää todiste‑linkit ja merkitsee tehtävän valmiiksi.

Kevyt Node.js‑kääre voi näyttää tältä:

```javascript
// Automatisoi yhden kyselyn käsittelyn
async function answerQuestion(questionId) {
  // Hae kysymys ja sen avainsanat
  const q = await api.getQuestion(questionId);
  // Hae relevantit politiikkafragmentit
  const fragments = await api.searchPolicies(q.keywords);
  // Rakenna prompt käyttäen aiemmin määriteltyä mallia
  const prompt = buildPrompt(q.text, fragments);
  // Generoi vastaus LLM:stä
  const { answer, verification } = await api.llmGenerate(prompt);
  // Tarkista verifiointi
  if (verify(verification)) {
    // Lähetä valmis vastaus ja liitä todisteet
    await api.submitAnswer(
      questionId,
      answer,
      fragments.evidenceLinks
    );
  } else {
    // Jos tarkistus epäonnistui, luo palautteella varustettu uusi prompt
    const revisedPrompt = addFeedback(prompt, verification);
    // Voidaan toistaa silmukassa tai kutsaa rekursiivisesti
    await answerQuestionWithPrompt(questionId, revisedPrompt);
  }
}
```

Kun koodi on liitetty Procurizen käyttöliittymään, turvallisuus­asiantuntija voi klikata *“Luo automaattinen vastaus”* ja seurata prosessin etenemistä kaavion mukaisesti.

---

## 6. Menestyksen mittaaminen  

| Mittari | Nykytila | Tavoite prompt‑suunnittelun jälkeen |
|---------|----------|--------------------------------------|
| Keskimääräinen vastauksen luontiaika | 45 min | ≤ 15 min |
| Ihmisen korjausprosentti | 22 % | ≤ 5 % |
| Politiikkaviitteiden kattavuus (tagit) | 78 % | ≥ 98 % |
| Auditorin tyytyväisyys | 3,2/5 | ≥ 4,5/5 |

Kerää näitä KPI:itä Procurizen analytiikkapaneelin kautta. Jatkuva seuranta mahdollistaa prompt‑mallien ja fragmenttien valintojen hienosäädön.

---

## 7. Sudenkuopat ja niiden välttäminen  

| Sudenkuoppa | Oire | Korjaus |
|--------------|------|----------|
| Liiallinen fragmenttien pakkaus promptiin | Vastaus harhaa, LLM:n latenssi nousee | Käytä relevanssikynnystä (esim. kosini‑samankaltaisuus > 0,78) ennen sisällyttämistä |
| Mallin lämpötilan (temperature) huomiotta jättäminen | Joskus luova, mutta virheellinen |
| Ei versiota politikatiedostoille | Vastaukset viittaavat vanhentuneisiin kohtiin | Tallenna fragmentit versio‑ID:n kanssa ja pakota “uusin‑vain” -valinta, ellei historiallisen version tarvita |
| Yhden tarkistuskierroksen luottamus | Jättää väliin harvinaiset poikkeukset | Aja toissijainen sääntökone (esim. regex‑tarkistus kielletuille termeille) LLM‑vaiheen jälkeen |

---

## 8. Tulevaisuuden näkymät  

* **Dynaaminen prompt‑optimointi** — vahvistusoppimista (RL) käytetään automaattisesti hienosäätämään promptin sanamuotoa historiallisen onnistumisprosentin perusteella.  
* **Moni‑LLM‑ensemblit** — kysely lähetetään useille malleille samanaikaisesti ja valitaan se vastaus, jolla on paras verifiointipisteet.  
* **Selitettävä AI‑kerros** — lisätään “miksi tämä vastaus” -osio, jossa citataan tarkat politiikkalauseet ja niiden numerot, jolloin auditointi on täysin jäljitettävissä.  

Näillä edistysaskelilla automatisointi siirtyy *“nopea luonnos”* -tilasta *“audit-valmis ilman ihmisen puuttumista.”*

---

## Yhteenveto  

Prompt‑suunnittelu ei ole kertaluonteinen temppu, vaan systemaattinen tiede, jolla voidaan muuntaa tehokkaat LLM:t luotettaviksi compliance‑avustajiksi. Tekemällä näin:

1. Haetaan tarkat politiikkafragmentit,  
2. Koostetaan moniosainen promptti, joka yhdistää kontekstin, ohjeistuksen, rajoitukset ja verifioinnin,  
3. Automatisoidaan palautesilmukka, jossa malli itse korjaa tuotoksensa, ja  
4. Integroi koko putki saumattomasti alustoihin kuten Procurize,  

organisaatiot voivat lyhentää kyselyjen läpimenoaikoja, vähentää manuaalisia virheitä ja säilyttää vaaditut auditointiradat, joita sääntelyviranomaiset ja asiakkaat odottavat.  

Aloita pilotoimalla kehystä vähäriskisellä kyselyllä, kerää KPI‑parannukset ja hienosäädä prompt‑mallit. Parin viikon sisällä näet, että sama tarkkuus kuin senior‑compliance‑asiantuntijalla on saavutettavissa murto-osalla työmäärästä.

---

## Katso myös  

- Prompt‑suunnittelun parhaat käytännöt LLM:ille  
- Retrieval‑Augmented Generation: suunnittelumallit ja sudenkuopat  
- Compliance‑automaation trendit ja ennusteet vuodelle 2025  
- Procurize API – yleiskatsaus ja integraatio‑opas