From c1442e23c6d4a5ecb9889c909b5675cb4297ec18 Mon Sep 17 00:00:00 2001 From: lilosti <60880318+lilosti@users.noreply.github.com> Date: Tue, 20 Oct 2026 11:34:23 +0200 Subject: [PATCH 1/4] nyt dokument --- builder/systemprompt-vaerktoejer.md | 149 ++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 builder/systemprompt-vaerktoejer.md diff --git a/builder/systemprompt-vaerktoejer.md b/builder/systemprompt-vaerktoejer.md new file mode 100644 index 0000000..d23d6b9 --- /dev/null +++ b/builder/systemprompt-vaerktoejer.md @@ -0,0 +1,149 @@ +# Systemprompt og værktøjer: hvad skal du huske? + +Denne side beskriver, hvad du skal skrive i din systemprompt, når din assistent skal bruge videndatabasen (RAG), websøgning, skills eller office-værktøjet. + +Kort fortalt: I AarhusAI er det modellen selv, der beslutter, om den vil kalde et værktøj. Lokale modeller som Gemma kalder sjældent et værktøj af sig selv. Derfor skal systemprompten sige præcist, hvilket værktøj der skal kaldes, og hvornår. + +## Før du skriver prompten: tjek indstillingerne + +Selv den bedste prompt virker ikke, hvis indstillingerne i model-editoren er forkerte. + +- **Function Calling** skal stå på "Standard". Det er den rigtige indstilling i AarhusAI, så du skal ikke ændre den. +- **Builtin Tools** skal være slået til, når assistenten bruger en videndatabase eller skills. Uden Builtin Tools forsvinder både skill-kald og søgning i videndatabasen. +- **Slå ubrugte Builtin Tools-kategorier fra.** Hver aktiv kategori fylder i kontekstvinduet og giver modellen flere værktøjer at vælge forkert imellem. Har assistenten ingen videndatabase, så slå kategorien Knowledge Base fra. +- **Del skills og videndatabaser** med de samme grupper som assistenten. Deling af assistenten deler ikke de skills og videndatabaser, den bruger. + +## Værktøjsnavne + +Skriv altid værktøjets præcise navn i prompten. Navnene i AarhusAI er: + +- **Videndatabasen (RAG):** `query_knowledge_files` +- **Websøgning:** `websearch_search_web` +- **Office-værktøjet:** værktøjer der starter med `office_` (i beta og pt. kun tilgængeligt på stg) +- **Skills:** `view_skill` sammen med skillens id, fx `eksempel-skill` + +Eksterne forbindelser får forbindelsens ID som præfiks. Forbindelsen "websearch" giver derfor værktøjet `websearch_search_web`. Er du i tvivl om et navn, så stil assistenten et spørgsmål og klik på "View Result" eller "Explored" under svaret. Her kan du se, hvilke værktøjer der blev kaldt. + +## Generelle principper for alle værktøjer + +1. **Udløs værktøjet ud fra spørgsmålets type.** Skriv ikke "Brug værktøjet, hvis du ikke ved det". Modellen opdager sjældent selv, at den mangler viden. Skriv i stedet konkrete emner eller typer af spørgsmål. +2. **Placér værktøjsreglerne øverst** i prompten i en fast rækkefølge, og gentag dem kort i en "Husk:"-linje til sidst. +3. **Brug præcise navne**, både for værktøjer og skills. +4. **Skriv, hvornår værktøjet IKKE skal bruges**, fx ved korte skriveopgaver i chatten. +5. **Beskriv, hvad der skal ske efter kaldet:** Svar kun ud fra resultatet, angiv kilden, og brug én fast sætning, når intet findes. +6. **Undgå konkurrerende regler.** Ord som "kun" og "altid" i andre regler kan trumfe et værktøj eller en skill. Brug "desuden" og "uanset om" frem for "kun" og "i stedet". +7. **Brug korte eksempler med værktøjskald.** Eksempler styrer modellen stærkere end regler. +8. **Hold prompten kort.** Få regler og korte, direkte sætninger. Hver ekstra regel svækker de andre. + +## Skills + +Modellen ser navn og beskrivelse af de tilgængelige skills, men henter sjældent en skill af sig selv. Skriv derfor skillens id og bed eksplicit om kaldet. + +```markdown +SKILLS: Ved spørgsmål om [emne], så kald view_skill med [skill-id] og følg skillens instruktioner, før du svarer. +``` + +Eksempel: + +```markdown +SKILLS: Ved spørgsmål om ferie og fridage, så kald view_skill med eksempel-skill og følg skillens instruktioner, før du svarer. +``` + +Husk også, at skillens beskrivelse skal være kort og sige præcist, hvornår den skal bruges. + +## Videndatabasen (RAG) + +Videndatabasen bliver ikke automatisk sat ind i samtalen. Modellen skal selv kalde `query_knowledge_files`. Brug ét begreb for videndatabasen i hele prompten, og nævn gerne det engelske "knowledge base" én gang. + +```markdown +VIDENDATABASEN (knowledge base, værktøjet query_knowledge_files): Kald query_knowledge_files, før du svarer på spørgsmål om: +- [emne 1] +- [emne 2] +- [emne 3] +Søg gerne to gange: først med nøgleord, derefter med en alternativ formulering. +Finder du intet relevant, så skriv: "Jeg kunne ikke finde et svar i videndatabasen." +``` + +Bruger assistenten både skills og videndatabase, så skriv eksplicit, at begge kilder skal bruges sammen: + +```markdown +Uanset om du har brugt en skill, så kald desuden query_knowledge_files, når spørgsmålet handler om [emne]. +``` + +Undgå formuleringer som "Hvis ingen skill passer, så søg i stedet i videndatabasen". Modellen læser det som enten/eller og mister dermed indhold fra den ene kilde. + +## Websøgning + +Brug websøgning til fakta, der kan ændre sig, eller som modellen ikke kan vide sikkert. + +```markdown +WEBSØGNING (websearch_search_web): Kald ALTID websearch_search_web, før du svarer på spørgsmål om: +- personer og hvem der har en post +- navne på organisationer, steder og produkter +- tal, datoer, priser, frister, love og regler +- nyheder og aktuelle forhold +- alt med "nu", "gældende", "i år" eller "seneste" +Søg IKKE ved korte skriveopgaver som mails og omformulering. +Svar kun ud fra søgeresultatet, og skriv kilden. +Finder du intet, så skriv: "Jeg kunne ikke finde et pålideligt svar." +``` + +Bruger assistenten også en videndatabase, så skriv, hvilken kilde der kommer først. Typisk skal videndatabasen bruges ved spørgsmål om kommunens egne forhold, og websøgning ved alt andet. + +## Office-værktøjet + +Office-værktøjet kan lave og læse Word-, Excel- og PowerPoint-filer. + +> **Bemærk:** Office-værktøjet er i beta og er pt. kun tilgængeligt på stg. Det kan derfor ikke bruges i assistenter i produktion endnu. + +```markdown +OFFICE (værktøjer der starter med office_): Kald office-værktøjet, når brugeren: +- beder om en fil, fx et Word-dokument, et Excel-ark eller en PowerPoint +- uploader en Word-, Excel- eller PowerPoint-fil og spørger til indholdet +``` + +Kender du de præcise navne på office-værktøjerne, så skriv dem direkte, fx `office_create_document`. + +## Samlet skabelon + +Brug skabelonen som udgangspunkt, og fjern de dele, din assistent ikke bruger. + +```markdown +Dato: {{CURRENT_DATE}} + +Du er [navn], en assistent for [målgruppe] i Aarhus Kommune. Svar altid på dansk i en professionel og venlig tone. + +VIGTIGST: Din egen viden kan være forældet eller forkert. Kald dine værktøjer, før du svarer. Gæt aldrig. + +1. SKILLS: Ved spørgsmål om [emne], så kald view_skill med [skill-id] og følg skillens instruktioner. +2. VIDENDATABASEN (knowledge base, query_knowledge_files): Uanset om du har brugt en skill, så kald desuden query_knowledge_files ved spørgsmål om [emner]. +3. WEBSØGNING (websearch_search_web): Kald ALTID ved spørgsmål om personer, tal, datoer, love og aktuelle forhold, som videndatabasen ikke svarer på. +4. OFFICE (værktøjer der starter med office_): Kald når brugeren beder om en Word-, Excel- eller PowerPoint-fil. + +Brug IKKE værktøjer ved korte skriveopgaver i chatten. + +Når du har brugt et værktøj: +- Svar kun ud fra resultatet. +- Skriv kilden. +- Finder du intet, så skriv: "Jeg kunne ikke finde et pålideligt svar." + +[Øvrige regler for rolle, tone og format] + +Eksempler: +Bruger: [typisk spørgsmål om dit emne] +Du: [kalder query_knowledge_files med "nøgleord"] [svar]. Kilde: [dokumentnavn] + +Bruger: Hvem er borgmester i Aarhus? +Du: [kalder websearch_search_web med "borgmester Aarhus Kommune"] Borgmesteren er [navn]. Kilde: aarhus.dk + +Husk: Skill først. [Emner] = query_knowledge_files. Faktaspørgsmål = websearch_search_web. Fil = office. +``` + +## Test og fejlsøgning + +- **Lav en testliste** med 15-20 spørgsmål. Tag både spørgsmål med, der skal udløse et værktøj, og spørgsmål, der ikke skal. +- **Test i nye chats.** Har assistenten allerede givet et forkert svar tidligere i samtalen, holder den ofte fast i det. +- **Test som almindelig bruger**, ikke som Builder eller administrator. Ellers opdager du ikke manglende deling. +- **Tjek "View Result" eller "Explored"** under svaret for at se, hvilke værktøjer der faktisk blev kaldt. +- **Test en skill med $.** Vælg skillen manuelt med $ i chatten. Virker den med $ men ikke uden, er det indlæsningen (prompten eller skillens beskrivelse), der fejler, ikke adgangen. +- **Kør testlisten igen** efter hver ændring af prompten. From 0e168a56b3e6026eb32d692fedf5aa694cb37653 Mon Sep 17 00:00:00 2001 From: lilosti <60880318+lilosti@users.noreply.github.com> Date: Tue, 20 Oct 2026 11:35:15 +0200 Subject: [PATCH 2/4] sidehoved --- builder/systemprompt-vaerktoejer.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/builder/systemprompt-vaerktoejer.md b/builder/systemprompt-vaerktoejer.md index d23d6b9..4ce0529 100644 --- a/builder/systemprompt-vaerktoejer.md +++ b/builder/systemprompt-vaerktoejer.md @@ -1,3 +1,8 @@ +--- +title: Systemprompt +parent: Builder +--- + # Systemprompt og værktøjer: hvad skal du huske? Denne side beskriver, hvad du skal skrive i din systemprompt, når din assistent skal bruge videndatabasen (RAG), websøgning, skills eller office-værktøjet. From 8f9c7ed4d85e3312ce6552ed211a9779627f47a2 Mon Sep 17 00:00:00 2001 From: lilosti <60880318+lilosti@users.noreply.github.com> Date: Tue, 20 Oct 2026 11:37:59 +0200 Subject: [PATCH 3/4] linting --- builder/systemprompt-vaerktoejer.md | 50 ++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/builder/systemprompt-vaerktoejer.md b/builder/systemprompt-vaerktoejer.md index 4ce0529..7e856cd 100644 --- a/builder/systemprompt-vaerktoejer.md +++ b/builder/systemprompt-vaerktoejer.md @@ -5,18 +5,24 @@ parent: Builder # Systemprompt og værktøjer: hvad skal du huske? -Denne side beskriver, hvad du skal skrive i din systemprompt, når din assistent skal bruge videndatabasen (RAG), websøgning, skills eller office-værktøjet. +Denne side beskriver, hvad du skal skrive i din systemprompt, når din assistent skal bruge videndatabasen (RAG), +websøgning, skills eller office-værktøjet. -Kort fortalt: I AarhusAI er det modellen selv, der beslutter, om den vil kalde et værktøj. Lokale modeller som Gemma kalder sjældent et værktøj af sig selv. Derfor skal systemprompten sige præcist, hvilket værktøj der skal kaldes, og hvornår. +Kort fortalt: I AarhusAI er det modellen selv, der beslutter, om den vil kalde et værktøj. Lokale modeller som Gemma +kalder sjældent et værktøj af sig selv. Derfor skal systemprompten sige præcist, hvilket værktøj der skal kaldes, og +hvornår. ## Før du skriver prompten: tjek indstillingerne Selv den bedste prompt virker ikke, hvis indstillingerne i model-editoren er forkerte. - **Function Calling** skal stå på "Standard". Det er den rigtige indstilling i AarhusAI, så du skal ikke ændre den. -- **Builtin Tools** skal være slået til, når assistenten bruger en videndatabase eller skills. Uden Builtin Tools forsvinder både skill-kald og søgning i videndatabasen. -- **Slå ubrugte Builtin Tools-kategorier fra.** Hver aktiv kategori fylder i kontekstvinduet og giver modellen flere værktøjer at vælge forkert imellem. Har assistenten ingen videndatabase, så slå kategorien Knowledge Base fra. -- **Del skills og videndatabaser** med de samme grupper som assistenten. Deling af assistenten deler ikke de skills og videndatabaser, den bruger. +- **Builtin Tools** skal være slået til, når assistenten bruger en videndatabase eller skills. Uden Builtin Tools + forsvinder både skill-kald og søgning i videndatabasen. +- **Slå ubrugte Builtin Tools-kategorier fra.** Hver aktiv kategori fylder i kontekstvinduet og giver modellen flere + værktøjer at vælge forkert imellem. Har assistenten ingen videndatabase, så slå kategorien Knowledge Base fra. +- **Del skills og videndatabaser** med de samme grupper som assistenten. Deling af assistenten deler ikke de skills og + videndatabaser, den bruger. ## Værktøjsnavne @@ -27,22 +33,28 @@ Skriv altid værktøjets præcise navn i prompten. Navnene i AarhusAI er: - **Office-værktøjet:** værktøjer der starter med `office_` (i beta og pt. kun tilgængeligt på stg) - **Skills:** `view_skill` sammen med skillens id, fx `eksempel-skill` -Eksterne forbindelser får forbindelsens ID som præfiks. Forbindelsen "websearch" giver derfor værktøjet `websearch_search_web`. Er du i tvivl om et navn, så stil assistenten et spørgsmål og klik på "View Result" eller "Explored" under svaret. Her kan du se, hvilke værktøjer der blev kaldt. +Eksterne forbindelser får forbindelsens ID som præfiks. Forbindelsen "websearch" giver derfor værktøjet +`websearch_search_web`. Er du i tvivl om et navn, så stil assistenten et spørgsmål og klik på "View Result" eller +"Explored" under svaret. Her kan du se, hvilke værktøjer der blev kaldt. ## Generelle principper for alle værktøjer -1. **Udløs værktøjet ud fra spørgsmålets type.** Skriv ikke "Brug værktøjet, hvis du ikke ved det". Modellen opdager sjældent selv, at den mangler viden. Skriv i stedet konkrete emner eller typer af spørgsmål. +1. **Udløs værktøjet ud fra spørgsmålets type.** Skriv ikke "Brug værktøjet, hvis du ikke ved det". Modellen opdager + sjældent selv, at den mangler viden. Skriv i stedet konkrete emner eller typer af spørgsmål. 2. **Placér værktøjsreglerne øverst** i prompten i en fast rækkefølge, og gentag dem kort i en "Husk:"-linje til sidst. 3. **Brug præcise navne**, både for værktøjer og skills. 4. **Skriv, hvornår værktøjet IKKE skal bruges**, fx ved korte skriveopgaver i chatten. -5. **Beskriv, hvad der skal ske efter kaldet:** Svar kun ud fra resultatet, angiv kilden, og brug én fast sætning, når intet findes. -6. **Undgå konkurrerende regler.** Ord som "kun" og "altid" i andre regler kan trumfe et værktøj eller en skill. Brug "desuden" og "uanset om" frem for "kun" og "i stedet". +5. **Beskriv, hvad der skal ske efter kaldet:** Svar kun ud fra resultatet, angiv kilden, og brug én fast sætning, når + intet findes. +6. **Undgå konkurrerende regler.** Ord som "kun" og "altid" i andre regler kan trumfe et værktøj eller en skill. Brug + "desuden" og "uanset om" frem for "kun" og "i stedet". 7. **Brug korte eksempler med værktøjskald.** Eksempler styrer modellen stærkere end regler. 8. **Hold prompten kort.** Få regler og korte, direkte sætninger. Hver ekstra regel svækker de andre. ## Skills -Modellen ser navn og beskrivelse af de tilgængelige skills, men henter sjældent en skill af sig selv. Skriv derfor skillens id og bed eksplicit om kaldet. +Modellen ser navn og beskrivelse af de tilgængelige skills, men henter sjældent en skill af sig selv. Skriv derfor +skillens id og bed eksplicit om kaldet. ```markdown SKILLS: Ved spørgsmål om [emne], så kald view_skill med [skill-id] og følg skillens instruktioner, før du svarer. @@ -58,7 +70,8 @@ Husk også, at skillens beskrivelse skal være kort og sige præcist, hvornår d ## Videndatabasen (RAG) -Videndatabasen bliver ikke automatisk sat ind i samtalen. Modellen skal selv kalde `query_knowledge_files`. Brug ét begreb for videndatabasen i hele prompten, og nævn gerne det engelske "knowledge base" én gang. +Videndatabasen bliver ikke automatisk sat ind i samtalen. Modellen skal selv kalde `query_knowledge_files`. Brug ét +begreb for videndatabasen i hele prompten, og nævn gerne det engelske "knowledge base" én gang. ```markdown VIDENDATABASEN (knowledge base, værktøjet query_knowledge_files): Kald query_knowledge_files, før du svarer på spørgsmål om: @@ -75,7 +88,8 @@ Bruger assistenten både skills og videndatabase, så skriv eksplicit, at begge Uanset om du har brugt en skill, så kald desuden query_knowledge_files, når spørgsmålet handler om [emne]. ``` -Undgå formuleringer som "Hvis ingen skill passer, så søg i stedet i videndatabasen". Modellen læser det som enten/eller og mister dermed indhold fra den ene kilde. +Undgå formuleringer som "Hvis ingen skill passer, så søg i stedet i videndatabasen". Modellen læser det som enten/eller +og mister dermed indhold fra den ene kilde. ## Websøgning @@ -93,13 +107,15 @@ Svar kun ud fra søgeresultatet, og skriv kilden. Finder du intet, så skriv: "Jeg kunne ikke finde et pålideligt svar." ``` -Bruger assistenten også en videndatabase, så skriv, hvilken kilde der kommer først. Typisk skal videndatabasen bruges ved spørgsmål om kommunens egne forhold, og websøgning ved alt andet. +Bruger assistenten også en videndatabase, så skriv, hvilken kilde der kommer først. Typisk skal videndatabasen bruges +ved spørgsmål om kommunens egne forhold, og websøgning ved alt andet. ## Office-værktøjet Office-værktøjet kan lave og læse Word-, Excel- og PowerPoint-filer. -> **Bemærk:** Office-værktøjet er i beta og er pt. kun tilgængeligt på stg. Det kan derfor ikke bruges i assistenter i produktion endnu. +> **Bemærk:** Office-værktøjet er i beta og er pt. kun tilgængeligt på stg. Det kan derfor ikke bruges i assistenter i +> produktion endnu. ```markdown OFFICE (værktøjer der starter med office_): Kald office-værktøjet, når brugeren: @@ -146,9 +162,11 @@ Husk: Skill først. [Emner] = query_knowledge_files. Faktaspørgsmål = websearc ## Test og fejlsøgning -- **Lav en testliste** med 15-20 spørgsmål. Tag både spørgsmål med, der skal udløse et værktøj, og spørgsmål, der ikke skal. +- **Lav en testliste** med 15-20 spørgsmål. Tag både spørgsmål med, der skal udløse et værktøj, og spørgsmål, der ikke + skal. - **Test i nye chats.** Har assistenten allerede givet et forkert svar tidligere i samtalen, holder den ofte fast i det. - **Test som almindelig bruger**, ikke som Builder eller administrator. Ellers opdager du ikke manglende deling. - **Tjek "View Result" eller "Explored"** under svaret for at se, hvilke værktøjer der faktisk blev kaldt. -- **Test en skill med $.** Vælg skillen manuelt med $ i chatten. Virker den med $ men ikke uden, er det indlæsningen (prompten eller skillens beskrivelse), der fejler, ikke adgangen. +- **Test en skill med $.** Vælg skillen manuelt med $ i chatten. Virker den med $ men ikke uden, er det indlæsningen + (prompten eller skillens beskrivelse), der fejler, ikke adgangen. - **Kør testlisten igen** efter hver ændring af prompten. From a53ee2a13e55be54d6281f805a7cfd824d9a7975 Mon Sep 17 00:00:00 2001 From: lilosti <60880318+lilosti@users.noreply.github.com> Date: Tue, 20 Oct 2026 11:56:08 +0200 Subject: [PATCH 4/4] requested change --- builder/systemprompt-vaerktoejer.md | 1 - 1 file changed, 1 deletion(-) diff --git a/builder/systemprompt-vaerktoejer.md b/builder/systemprompt-vaerktoejer.md index 7e856cd..45287b1 100644 --- a/builder/systemprompt-vaerktoejer.md +++ b/builder/systemprompt-vaerktoejer.md @@ -78,7 +78,6 @@ VIDENDATABASEN (knowledge base, værktøjet query_knowledge_files): Kald query_k - [emne 1] - [emne 2] - [emne 3] -Søg gerne to gange: først med nøgleord, derefter med en alternativ formulering. Finder du intet relevant, så skriv: "Jeg kunne ikke finde et svar i videndatabasen." ```