Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
gusjak251 committed Dec 19, 2023
2 parents fa8bac9 + 42d7bef commit c7ff2bd
Show file tree
Hide file tree
Showing 42 changed files with 1,012 additions and 259 deletions.
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
__pycache__/
__pycache__/

src/credentials.json
src/token.json
6 changes: 5 additions & 1 deletion användande.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,8 @@ för 13b:



[error thread](https://github.com/facebookresearch/llama/issues/415)
[error thread](https://github.com/facebookresearch/llama/issues/415)



Måste köras inifrån ```src```
Binary file added chroma_storage/chroma.sqlite3
Binary file not shown.
20 changes: 17 additions & 3 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,18 @@
torch
fairscale
fire
sentencepiece
transformers
accelerate
chromadb
rich
watchdog
pypandoc
pypandoc_binary
nltk
langchain
flask
flask-cors
sentence-transformers
google-auth
google-auth-oauthlib
google-api-python-client
tqdm
markdown
Binary file not shown.
Binary file not shown.
Binary file modified src/chroma_storage/chroma.sqlite3
Binary file not shown.
Binary file not shown.
Binary file not shown.
49 changes: 49 additions & 0 deletions src/documents/ Projektförslag.rtf
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
{\rtf1\ansi\ansicpg1252\cocoartf2758
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset0 .SFNS-Regular_wdth_opsz110000_GRAD_wght2580000;\f1\fnil\fcharset0 HelveticaNeue;}
{\colortbl;\red255\green255\blue255;\red42\green49\blue64;}
{\*\expandedcolortbl;;\cssrgb\c21569\c25490\c31765;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid101\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}
{\list\listtemplateid3\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid201\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid3}
{\list\listtemplateid4\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid301\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid4}
{\list\listtemplateid5\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid401\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid5}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}{\listoverride\listid5\listoverridecount0\ls5}}
\paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0
\deftab720
\pard\pardeftab720\sa400\partightenfactor0

\f0\b\fs32 \cf2 \expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 Titel:
\f1\b0 Automatiserat Kundsupportsystem\

\f0\b M\'e5l:
\f1\b0 M\'e5let med detta projekt \'e4r att utveckla ett automatiserat kundsupportsystem som f\'f6rb\'e4ttrar effektiviteten f\'f6r hantering av kundf\'f6rfr\'e5gningar och \'f6kar den \'f6vergripande kundn\'f6jdheten.\

\f0\b Omfattning:
\f1\b0 Projektet kommer att innefatta integrering av naturlig spr\'e5kbehandling (NLP)-algoritmer f\'f6r att analysera kundf\'f6rfr\'e5gningar, en AI-driven chattrobot f\'f6r omedelbara svar och en anv\'e4ndarv\'e4nlig instrumentpanel f\'f6r \'f6vervakning och hantering av kundinteraktioner.\

\f0\b Tidslinje:
\f1\b0 Projektet f\'f6rv\'e4ntas vara slutf\'f6rt inom sex m\'e5nader, med viktiga delm\'e5l och leveranser som beskrivs i den bifogade projektplanen.\

\f0\b Projektteam:
\f1\b0 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\partightenfactor0
\ls1\ilvl0\cf2 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 Projektledare: Johan Svensson\
\pard\tx220\tx720\pardeftab720\li720\fi-720\partightenfactor0
\ls2\ilvl0\cf2 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 Ledande utvecklare: Emma Andersson\
\pard\tx220\tx720\pardeftab720\li720\fi-720\partightenfactor0
\ls3\ilvl0\cf2 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 UX/UI-designer: Mikael Rodriguez\
\pard\pardeftab720\sa400\partightenfactor0

\f0\b \cf2 Tidslinje:
\f1\b0 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\partightenfactor0
\ls4\ilvl0\cf2 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 Startdatum: 15 januari 2023\
\pard\tx220\tx720\pardeftab720\li720\fi-720\partightenfactor0
\ls5\ilvl0\cf2 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 Slutdatum: 30 juni 2023\
}
47 changes: 47 additions & 0 deletions src/documents/Projekthandling.rtf
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{\rtf1\ansi\ansicpg1252\cocoartf2758
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset0 .SFNS-Regular_wdth_opsz110000_GRAD_wght2580000;\f1\fnil\fcharset0 HelveticaNeue;}
{\colortbl;\red255\green255\blue255;\red42\green49\blue64;}
{\*\expandedcolortbl;;\cssrgb\c21569\c25490\c31765;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}}
\paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0
\deftab720
\pard\pardeftab720\sa400\partightenfactor0
\ls1\ilvl0
\f0\b\fs32 \cf2 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 Projektnamn:
\f1\b0 XYZ Produktlansering\
\ls1\ilvl0
\f0\b \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 Projektsponsor:
\f1\b0 Sara Andersson\
\ls1\ilvl0
\f0\b \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 Projektledare:
\f1\b0 Robert Davidsson\
\ls1\ilvl0
\f0\b \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 M\'e5l:
\f1\b0 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\partightenfactor0
\ls1\ilvl0\cf2 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 Framg\'e5ngsrik lansering av XYZ-produkten senast den 15 mars 2023.\
\ls1\ilvl0\kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 Uppn\'e5 en \'f6kning av marknadsandelar med 20% under det f\'f6rsta kvartalet efter lansering.\
\ls1\ilvl0\kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 S\'e4kerst\'e4lla kundn\'f6jdhet genom effektiv support efter lanseringen.\
\pard\pardeftab720\sa400\partightenfactor0
\ls1\ilvl0
\f0\b \cf2 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 Risker och \'c5tg\'e4rder:
\f1\b0 De fr\'e4msta riskerna innefattar f\'f6rseningar i produktutvecklingen och ov\'e4ntade tekniska problem. \'c5tg\'e4rdsstrategier inkluderar regelbundna projektm\'f6ten och ett dedikerat supportteam efter lanseringen.\
\ls1\ilvl0
\f0\b \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 Tidslinje:
\f1\b0 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\partightenfactor0
\ls1\ilvl0\cf2 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 Projektstart: 1 december 2022\
\ls1\ilvl0\kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 Lanseringsdatum: 15 mars 2023\
}
Binary file added src/documents/foodora-2.0-projektplan.docx
Binary file not shown.
4 changes: 4 additions & 0 deletions src/documents/newDoc.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Niels Houben älskar äppelpaj, äpplen, och äppeljuice.
Niels vill alltid äta äpplen!

Han gillar även ostkaka
Binary file added src/documents/rapport-niels-houben-koffein.docx
Binary file not shown.
99 changes: 2 additions & 97 deletions src/main.py
Original file line number Diff line number Diff line change
@@ -1,98 +1,3 @@
""" Main module to start the application """
import sys
""" Runs servers for model, mail, file-watcher """

from model_wrapper import prompt_model
from query_wrapper import preform_query
from test_prompts.test_prompts import test_prompts

chunks = """---
Title: Projektplan_-_Helhälsa.docx
Page: 0
Section: 1
Content:
Mäts genom juridisk granskning och säkerhetstester.Omfattning:Detaljerad beskrivning av projektets omfattning inkluderar utveckling av mobilapplikationen, integration med wearables och andra appar, backend-utveckling, skapande av dashboards och rapporteringsfunktioner, samt marknadsföring och lansering. Projektet inkluderar inte kontinuerligt underhåll och support eller utveckling av hårdvara.Tidsplan:Här är huvudpunkterna från projektets tidsplan:Projektstart: 1 januari 2024Designfas: 1 januari - 28 februari 2024Utvecklingsfas: 1 mars - 31 augusti 2024Testningsfas: 1 september - 31 oktober 2024Lanseringsfas: 1 november - 31 december 2024Budget:Detaljerad budget inklusive allokering av resurser:Personal: 1 miljon SEKUtrustning och Verktyg: 300,000 SEKLicenser: 200,000 SEKMarknadsföring: 400,000 SEKÖvriga kostnader: 100,000 SEKTotal budget: 2 miljoner SEKKvalitetskrav:
---
---
Title: Projektplan_-_Helhälsa.docx
Page: 0
Section: 0
Content:
Projektplan för HelHälsa Mobilapplikation:Introduktion:Projektplanen för HelHälsa Mobilapplikation syftar till att ge en detaljerad översikt över hur projektet ska genomföras för att uppfylla de fastställda målen. Dokumentet omfattar projektets mål, omfattning, tidsplan, budget, kvalitetskrav, riskhantering och kommunikationsplan.Mål:Utöver de övergripande målen som beskrivs i projektdirektivet, här är några detaljerade mål och hur de ska mätas:Användarvänlighet:Målet är att 90% av testanvändarna ska kunna navigera applikationen utan hjälp.Mäts genom användartester och feedback.Integration:Målet är att stödja minst 10 olika wearables och hälsorelaterade appar vid lansering.Mäts genom integrationstester.Datasekretess:Målet är att uppnå fullständig överensstämmelse med GDPR och andra relevanta dataskyddslagar.Mäts genom juridisk granskning och säkerhetstester.Omfattning:
---
---
Title: Projektplan_-_Helhälsa.docx
Page: 0
Section: 3
Content:
Planering: Identifiering, bedömning, och hantering av risker genom regelbunden översyn och förberedande åtgärder.Kommunikationsplan:Teamkommunikation: Veckovisa möten och dagliga stand-ups för att diskutera framsteg och eventuella problem.Stakeholderkommunikation: Månadsvisa uppdateringar och kvartalsvisa genomgångar för att informera intressenter om projektets framsteg.Kris kommunikation: Etablerade protokoll för att kommunicera och hantera eventuella kriser eller stora problem som uppstår under projektet.Denna projektplan ger en omfattande översikt över hur projektet ska genomföras för att säkerställa framgångsrik utveckling och lansering av HelHälsa mobilapplikationen.
---
---
Title: Projektplan_-_Helhälsa.docx
Page: 0
Section: 2
Content:
Licenser: 200,000 SEKMarknadsföring: 400,000 SEKÖvriga kostnader: 100,000 SEKTotal budget: 2 miljoner SEKKvalitetskrav:Prestanda: Applikationen ska ladda inom 2 sekunder och svarstiden för användarinteraktioner ska vara under 1 sekund.Säkerhet: Applikationen ska uppfylla alla relevanta säkerhetsstandarder inklusive GDPR.Användarvänlighet: Applikationen ska vara intuitiv och enkel att använda, med en hög nivå av användartillfredsställelse.Riskhantering:Tekniska Risker: Såsom buggar, fel i tredjepartsintegrationer och hårdvaruproblem.Säkerhetsrisker: Såsom dataintrång och förlust av användardata.Juridiska Risker: Såsom överensstämmelse med dataskyddslagar och andra relevanta regelverk.Planering: Identifiering, bedömning, och hantering av risker genom regelbunden översyn och förberedande åtgärder.Kommunikationsplan:"""

def question_loop():
while True:
usr_prompt = input("Ställ din fråga: ")
if usr_prompt == "e":
break
query_string = usr_prompt
result = preform_query(query_string)
# print("results:")
# print(str(result))

prompt_model(str(result), usr_prompt)


def main() -> None:
""" For now just a dummy """

sys_prompt = test_prompts[0]["sys_prompt"]
usr_prompt = test_prompts[0]["usr_prompt"]
# prompt_model(sys_prompt, usr_prompt)
prompt_model(chunks, "Kan du sammanfatta projektplanen för Helhälsa Mobilapplikation?")


# query_string = usr_prompt
# result = preform_query(query_string)
# print("results:")
# print(str(result))

# prompt_model(str(result), usr_prompt)

question_loop()

return 0


# could create user interface in json file that can be edited...

if __name__ == '__main__':
sys.exit(main())

# system_message = """
# Du är nu en chatbot för vårdspersonal vars mål är att ta ut relevant data ur databasen och svara på frågor. Se till att ge ett tydligt svar på frågan. Om du hittar svaret i en fil måste du refferera till exakt vart du hittade det (filnamn, datum).
# Fråga:
# Följande är data från databasen:

# 2021-05-12.txt:{
# Datum: 2021-05-12
# Läkarbesök: Kirurgkliniken
# Anteckningar: Niels presenterade med svullnad och rodnad kring höger knä. Inga tecken på infektion vid blodprov. Möjligt överansträngning eller mindre skada på ligament. Rekommenderad vila och is.
# }
# LäkarbesökVästerås.txt:{
# Datum: 2021-10-03
# Läkarbesök: Allmänpraktiken
# Anteckningar: Eftersom för uppföljning av knäskada. Bättre rörlighet och mindre smärta. Diskuterade fysioterapi som nästa steg för rehabilitering.
# }
# 17563.txt:{
# Datum: 2022-02-21
# Läkarbesök: Kardiologkliniken
# Anteckningar: Niels upplevde lätt andfåddhet vid ansträngning. EKG och ekokardiogram visade inga avvikelser. Råddes att minska på koffeinintaget och öka fysisk aktivitet.
# }

# Ditt svar är:
# """
# messages = ["Har Niels någon historik av högt koffeinintag och har han haft några infekt"]
# TODO, FIX THE THING
11 changes: 11 additions & 0 deletions src/model_server/test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import requests
import json

url = 'http://127.0.0.1:5000/prompt'
headers = {'Content-Type': 'application/json'}
data = {'prompt': 'Hej, vad är budgeten?'}
json_data = json.dumps(data)
response = requests.post(url, headers=headers, data=json_data)

print(response.status_code)
print(response.json())
26 changes: 2 additions & 24 deletions src/model_wrapper.py
Original file line number Diff line number Diff line change
@@ -1,29 +1,7 @@
from model_wrapper_utils.llama2_chat_hf_wrapper import prompt_model


# TODO
# create a function here, allowing us to choose model, then returning a prompt_model function
# exmaple usage in main.py: prompt_model = initialize_model('llama2-chat...

# from llama2_chat_wrapper import Llama2ChatCompletion

# model = Llama2ChatCompletion(
# model_path='/data/dev/llama/llama-2-13b-chat/',
# tokenizer_path='tokenizer.model',
# max_seq_len=512,
# max_batch_size=4,
# temperature=0.6,
# )

# def prompt(system_message: str, user_message: str):
# print('sölkjdf')
# return model.query(system_message, user_messages)


# if __name__ =="__main__":
# system_message = 'Du ar en chattbott som ska svara pa svenska.'
# messages = ['Hur lagar man kyckling?']

# # model.query(system_message=system_message, user_messages=messages)
# print(prompt(system_message, messages))
# ...
# exmaple usage in main.py: prompt_model = initialize_model('llama2-chat...

65 changes: 65 additions & 0 deletions src/model_wrapper_utils/falcon_wrapper.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@

import torch
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
from accelerate import init_empty_weights, load_checkpoint_and_dispatch

from rich.console import Console
from rich.markdown import Markdown
console = Console()

# Initialize Variables
model_name = "tiiuae/falcon-7b"
hf_auth = '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'

try:

# Initialize Tokenizer & Model
tokenizer = AutoTokenizer.from_pretrained(model_name, cache_dir="/data/.cache/huggingface/datasets",
token=hf_auth)
model = AutoModelForCausalLM.from_pretrained(model_name, cache_dir="/data/.cache/huggingface/datasets", device_map="auto",
token=hf_auth)

# generator = pipeline('text-generation', tokenizer=tokenizer, model=model, max_length=20000,
generator = pipeline('text-generation', tokenizer=tokenizer, model=model,
torch_dtype=torch.bfloat16,
num_return_sequences=1,
device_map="auto",
return_full_text=False,
max_new_tokens=512,
top_p=0.2,
top_k=4,
repetition_penalty=1.1,
temperature=0.01
)
except:
pass

def prompt_model(sys_prompt, usr_prompt):
prompt = """
<s>[INST] <<SYS>>
Jag är en svensk chatbot som svarar på frågor från dokument.
Jag svarar endast på svenska.
Jag svarar formellt, objektivt.
Jag svarar endast om jag har tillgång till informationen annars svarar jag att jag inte har tillgång till informationen.
<</SYS>>
Dokumentet jag har tillgång till:
{}
Frågan som jag svarar på svenska till är:
{}
[/INST]
""".format(sys_prompt, usr_prompt)
generated = generator(prompt, do_sample=True)
print("Hej [Användare], här kommer ditt automatiskt genererade svar:\n")
sequences = []
for seq in generated:
# print(seq['generated_text'])
sequences.append(seq['generated_text'])
console.print(Markdown(seq['generated_text']))
print()
print("Med Vänliga Hälsningar,\nEffektiv-Administration,\nAISweden")
return ' '.join(sequences)

# return prompt
File renamed without changes.
Loading

0 comments on commit c7ff2bd

Please sign in to comment.