Spaces:
Sleeping
Sleeping
Commit
·
54c5926
1
Parent(s):
a823c3f
this should activate lfs file support
Browse files- .gitattributes +1 -0
- app.py +2 -37
- repository/intel_npu.py +30 -31
- requirements.txt +2 -1
.gitattributes
CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
+
deps/intel_npu_acceleration_library-1.3.0-cp310-cp310-win_amd64.whl filter=lfs diff=lfs merge=lfs -text
|
app.py
CHANGED
@@ -16,43 +16,9 @@ user_msg = "Please describe what you need to do. To get the best results try to
|
|
16 |
def check_for_missing_answers(parsed_questions: dict[int, str]):
|
17 |
return [k for k in parsed_questions if parsed_questions[k] is None]
|
18 |
|
19 |
-
|
20 |
-
def ask_again(missing_questions: list[int], user_questions: list[str], parsed_questions: dict[int, str]):
|
21 |
-
for id_ in missing_questions:
|
22 |
-
new_answer = input(f"I could not find the answer to this question: {user_questions[id_].lower()}")
|
23 |
-
parsed_questions[id_] = new_answer
|
24 |
-
|
25 |
-
|
26 |
-
def use_command_line():
|
27 |
-
prompts_manager = PromptsManager()
|
28 |
-
user_prompt = input(f"{user_msg}\n{'\n'.join(prompts_manager.questions)}\n\n>")
|
29 |
-
|
30 |
-
repository = get_repository("intel_npu", Model("meta-llama/Meta-Llama-3-8B-Instruct",
|
31 |
-
ModelRoles("system", "user", "assistant")),
|
32 |
-
prompts_manager.system_prompt, Path("llm_log.txt"))
|
33 |
-
repository.init()
|
34 |
-
# repository.send_prompt(prompts_manager.ingest_user_answers(user_prompt))
|
35 |
-
answer = repository.send_prompt(prompts_manager.verify_user_input_prompt(user_prompt))
|
36 |
-
answers = LlmParser.parse_verification_prompt_answers(answer['content'])
|
37 |
-
|
38 |
-
missing_answers = check_for_missing_answers(answers)
|
39 |
-
while missing_answers:
|
40 |
-
ask_again(missing_answers, prompts_manager.questions, answers)
|
41 |
-
missing_answers = check_for_missing_answers(answers)
|
42 |
-
answer = repository.send_prompt(prompts_manager.get_work_category(answers[1]))
|
43 |
-
categories = LlmParser.parse_get_categories_answer(answer['content'])
|
44 |
-
|
45 |
-
form_data = build_form_data_from_answers(answers, categories, f"{Path(__file__, "..", "signature.png")}")
|
46 |
-
write_pdf_form(form_data, Path("signed_form1.pdf"))
|
47 |
-
|
48 |
-
|
49 |
-
def update_answer (answers, missing_answer):
|
50 |
-
answers[missing_answer] = getattr(st.session_state, f"ma_{missing_answer}")
|
51 |
-
|
52 |
-
|
53 |
def use_streamlit():
|
54 |
pm = PromptsManager()
|
55 |
-
help_ = f"{user_msg}\n\n
|
56 |
repository = get_repository("ondemand", Model("ondemand-gpt-3.5-turbo", ModelRoles("system", "user", "assistant")))
|
57 |
if not st.session_state.get("step"):
|
58 |
with st.form("Please describe your request"):
|
@@ -100,7 +66,7 @@ def use_streamlit():
|
|
100 |
|
101 |
with st.status("categories found, creating PDF form"):
|
102 |
|
103 |
-
form_filename = f"{st.session_state[
|
104 |
st.session_state["form_filename"] = form_filename
|
105 |
form_data = build_form_data_from_answers(st.session_state["answers"], categories,
|
106 |
st.session_state.get("signature"))
|
@@ -116,4 +82,3 @@ def use_streamlit():
|
|
116 |
|
117 |
|
118 |
use_streamlit()
|
119 |
-
#use_command_line()
|
|
|
16 |
def check_for_missing_answers(parsed_questions: dict[int, str]):
|
17 |
return [k for k in parsed_questions if parsed_questions[k] is None]
|
18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
def use_streamlit():
|
20 |
pm = PromptsManager()
|
21 |
+
help_ = f"{user_msg}\n\n" + '\n'.join(pm.questions)
|
22 |
repository = get_repository("ondemand", Model("ondemand-gpt-3.5-turbo", ModelRoles("system", "user", "assistant")))
|
23 |
if not st.session_state.get("step"):
|
24 |
with st.form("Please describe your request"):
|
|
|
66 |
|
67 |
with st.status("categories found, creating PDF form"):
|
68 |
|
69 |
+
form_filename = f"{st.session_state['session_id']}_form.pdf"
|
70 |
st.session_state["form_filename"] = form_filename
|
71 |
form_data = build_form_data_from_answers(st.session_state["answers"], categories,
|
72 |
st.session_state.get("signature"))
|
|
|
82 |
|
83 |
|
84 |
use_streamlit()
|
|
repository/intel_npu.py
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
import json
|
2 |
from pathlib import Path
|
3 |
|
4 |
-
|
5 |
-
|
6 |
from transformers import AutoTokenizer
|
7 |
|
8 |
from repository.repository_abc import Repository, Model
|
@@ -25,35 +25,34 @@ class IntelNpuRepository(Repository):
|
|
25 |
return self.message_history
|
26 |
|
27 |
def init(self):
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
# self.terminators = [self.tokenizer.eos_token_id, self.tokenizer.convert_tokens_to_ids("<|eot_id|>")]
|
34 |
|
35 |
def send_prompt(self, prompt: str, add_to_history: bool = True) -> dict[str, str]:
|
36 |
pass
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
|
|
1 |
import json
|
2 |
from pathlib import Path
|
3 |
|
4 |
+
from intel_npu_acceleration_library import NPUModelForCausalLM, int4
|
5 |
+
from intel_npu_acceleration_library.compiler import CompilerConfig
|
6 |
from transformers import AutoTokenizer
|
7 |
|
8 |
from repository.repository_abc import Repository, Model
|
|
|
25 |
return self.message_history
|
26 |
|
27 |
def init(self):
|
28 |
+
compiler_conf = CompilerConfig(dtype=int4)
|
29 |
+
self.model = NPUModelForCausalLM.from_pretrained(self.model_info.name, use_cache=True, config=compiler_conf,
|
30 |
+
export=True, temperature=0).eval()
|
31 |
+
self.tokenizer = AutoTokenizer.from_pretrained(self.model_info.name)
|
32 |
+
self.terminators = [self.tokenizer.eos_token_id, self.tokenizer.convert_tokens_to_ids("<|eot_id|>")]
|
|
|
33 |
|
34 |
def send_prompt(self, prompt: str, add_to_history: bool = True) -> dict[str, str]:
|
35 |
pass
|
36 |
+
print("prompt to be sent: " + prompt)
|
37 |
+
user_prompt = {"role": self.model_info.roles.user_role, "content": prompt}
|
38 |
+
if self.log_to_file:
|
39 |
+
with open(self.log_to_file, "a+") as log_file:
|
40 |
+
log_file.write(json.dumps(user_prompt, indent=2))
|
41 |
+
log_file.write("\n")
|
42 |
+
self.get_message_history().append(user_prompt)
|
43 |
+
input_ids = (self.tokenizer.apply_chat_template(self.get_message_history(), add_generation_prompt=True,
|
44 |
+
return_tensors="pt")
|
45 |
+
.to(self.model.device))
|
46 |
+
outputs = self.model.generate(input_ids, eos_token_id=self.terminators, do_sample=True, max_new_tokens=2000, cache_position=None)
|
47 |
+
generated_token_array = outputs[0][len(input_ids[0]):]
|
48 |
+
generated_tokens = "".join(self.tokenizer.batch_decode(generated_token_array, skip_special_tokens=True))
|
49 |
+
answer = {"role": self.get_model_info().roles.ai_role, "content": generated_tokens}
|
50 |
+
if self.log_to_file:
|
51 |
+
with open(self.log_to_file, "a+") as log_file:
|
52 |
+
log_file.write(json.dumps(answer, indent=2))
|
53 |
+
log_file.write("\n")
|
54 |
+
if add_to_history:
|
55 |
+
self.message_history.append(answer)
|
56 |
+
else:
|
57 |
+
self.message_history.pop()
|
58 |
+
return answer
|
requirements.txt
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
PyPDFForm
|
2 |
ollama
|
3 |
transformers
|
4 |
-
|
|
|
|
1 |
PyPDFForm
|
2 |
ollama
|
3 |
transformers
|
4 |
+
streamlit
|
5 |
+
deps/intel_npu_acceleration_library-1.3.0-cp310-cp310-win_amd64.whl
|