Utveckla en MVP för en informationshanteringsapplikation avsedd för svenska myndigheter, med syftet att nyttja kraften hos språkmodeller för hantering av ostrukturerad data. Applikationen är intuitivt konstruerad för enkel uppladdning och hämtning av sådan data, och är skräddarsydd för en bred implementering över diverse organisatoriska miljöer.
Systemet ska omvandla e-postmeddelanden skrivna i naturligt språk till sökbara nyckelord/fraser för att söka i tillhörande dokumentation.
Beskrivning: Efter att ett mejl har skickats av en användare ska svaret genereras och returneras inom 30 sekunder.
Beskrivning: Svaret ska innehålla klickbara länkar till de källor som användes för att generera svaret, vilket möjliggör för användaren att granska originalmaterialet.
Beskrivning: Systemet ska endast svara med exakt dokumentationsinnehåll och undvika missvisande svar. Vid ingen träff bör svaret vara "Materialet kunde inte hittas inom referensmaterialet."
Beskrivning: Systemet ska installeras och köras internt (on-premise). Ingen användardata får överföras utanför systemets gränser.
Beskrivning: Systemets komponenter ska vara fristående och kommunicera via API-anrop.
Beskrivning: Användare ska kunna interagera med systemet via e-post i naturligt språk, även för större textmassor.
Beskrivning: Dataägare ska ha möjlighet att ladda upp Word-dokument direkt, utan förhandsredigering eller annan bearbetning.
Beskrivning: Dataägare ska kunna dra och släppa dokument i en säkrad nätverksmapp. Endast behöriga dataägare ska ha tillgång.
Beskrivning: Med tanke på målgruppen (myndigheter) är hög säkerhet och systemets förmåga att växa (skalbarhet) primära fokusområden.
Denna installationsguide är anpassad för Ubuntu 22.04
1.Klona projektet från github 2.Öppna sökvägen i terminalen
cd Effektiv-Administration
3.Installera de moduler som krävs för att köra projektet
pip install -r requirements.txt
Starta alla moduler
./start_everything.bash --watcher --mail --model
Starta moduler separat
./start_everything.bash --watcher
./start_everything.bash --model
./start_everything.bash --mail
Starta API:et
Detta kommando körs från root-mappen
python3 src/server_model.py
Skicka en prompt och få ett svar tillbaka.
Parametrar
Namn | Obligatorisk | Typ | Beskrivning |
---|---|---|---|
prompt |
ja | string | Ett textstycke med en fråga eller ett meddelande |
Response
Svar som ges när en prompt inte har skickats med
{
"error": "no prompt received!"
}
Exempel på svar då korrekt formaterad prompt har skickats med
{
"answer": "Hej! Här är ett svar på din fråga. Budgeten är 2000 kr" // Svar på frågan/meddelandet
"prompt": "Vad är budgeten för projekt helhälsa?" // Prompt som skickats
"doc_names": ["projekt_helhalsa.docx", "budget_helhalsa.docx"] // Lista över dokument som använts för att besvara frågan
}
Starta funktionsbrevlådan
Detta kommando körs från root-mappen
python3 src/server_mail.py
I nuläget används Googles API för att kunna ta emot och skicka mail från en gmail-adress. Filerna src/credentials.json och src/token.json krävs för att kunna komma åt api:et.
Endast mail med rubriken "fråga" läses in.
Vektordatabasen som används i detta projekt är Chroma DB
- Dokumenten laddas in och delas in i mindre chunks
- Alla chunks lagras i vektordatabasen. Chroma DB använder Sentence Transformers all-MiniLM-L6-v2 för att skapa embeddings som standard.
- En watcher kollar om det sker några ändringar i dokumentmappen och uppdaterar databasen.
- Relevant information hämtas från Chroma DB med hjälp av användarinput.
- Llama 2-13b genererar ett svar med hjälp av användarinput och hämtad information från databasen.
Detta projekt möjliggjordes tack vare de följande utvecklarna: