totallysaber commited on
Commit
3d64e75
·
verified ·
1 Parent(s): e966533

Upload 14 files

Browse files

had to delete old repo and make a new one as api key was made public, and commit history revealed it. do note in data folder i have attached two jpg's. these are the test cases Steve had told us to get working.

.gitattributes CHANGED
@@ -1,35 +1,36 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz 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
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz 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
+ db/chroma.sqlite3 filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -1,13 +1,12 @@
1
- ---
2
- title: AICopilot
3
- emoji: 🐢
4
- colorFrom: red
5
- colorTo: pink
6
- sdk: streamlit
7
- sdk_version: 1.36.0
8
- app_file: app.py
9
- pinned: false
10
- license: other
11
- ---
12
-
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
+ ---
2
+ title: EmeraldEnergy
3
+ emoji: 🐨
4
+ colorFrom: yellow
5
+ colorTo: purple
6
+ sdk: streamlit
7
+ sdk_version: 1.35.0
8
+ app_file: app.py
9
+ pinned: false
10
+ ---
11
+
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
TODO.md ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ ##I still have the following things to do
2
+ - [x] Recognize state diagram on p73 at least.
3
+ - [x] can we implement a better way of reading text from the pdf (which is fully working using langchain py pdfdirectoryloader) that can make better assumptions on the diagram text
4
+ - [x] is there a better way of splitting text?
5
+ - [ ] may want to deploy on streamlit for the sake of time.
6
+ - [ ] **Chat history. Remember previous queries**
7
+ - [ ] Work on slide deck
app.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import streamlit as st
3
+ from langchain_openai import OpenAI
4
+ from langchain.chains import RetrievalQA
5
+ from langchain_openai import OpenAIEmbeddings
6
+ from langchain_community.vectorstores import Chroma
7
+ from dotenv import load_dotenv
8
+ from langchain_core.messages import HumanMessage, AIMessage
9
+
10
+ def run_query(query, chat_history, k, temperature,ai_key):
11
+ load_dotenv()
12
+ openai_key = ai_key
13
+ persist_directory = 'db'
14
+
15
+ db = Chroma(persist_directory=persist_directory, embedding_function=OpenAIEmbeddings()) # access db
16
+ retriever = db.as_retriever(search_kwargs={"k": k}) # kwargs determines how many docs it uses
17
+
18
+ llm = OpenAI(api_key=openai_key, max_tokens=1500, temperature=temperature) # api key self explanatory. max_tokens provides how long of a response
19
+ # we get from the llm (do note the llm has a cap of 4097.) and temperature provides a scale form 0.0 to 1.0 of how much freedom
20
+ # the llm should take in its response (how closely it should adhere to docs vs how freely)
21
+
22
+ # Perform similarity search
23
+ search_results = retriever.get_relevant_documents(query)
24
+
25
+ # Extract texts from the retrieved documents
26
+ context = "\n".join([doc.page_content for doc in search_results])
27
+
28
+ # Combine the context with the query
29
+ full_query = f"{context}\n\n{query}"
30
+
31
+ # Get response from LLM
32
+ llm_response = llm(full_query)
33
+
34
+ # Store the interaction in chat history
35
+ chat_history.append((HumanMessage(content=query), AIMessage(content=llm_response)))
36
+
37
+ return llm_response
38
+
39
+ def main():
40
+ st.title("EmeraldEnergy™️ HVAC Technician Assistant")
41
+ api_key = st.text_input("Enter your API key:")
42
+ chat_history = []
43
+
44
+ role = 'Pretend I am an HVAC technician installing a Mitsubishi heat pump. I do not have access to the manual. Help me install this using your knowledge of the mitsubishi heatpump. Please consider the section under instruction of troubleshooting. If you can not help me, then provide generalized guidance. Please ask for which model of the product we are using at the end. \n'
45
+
46
+ query = st.text_area("Enter your query:", height=100)
47
+
48
+ k = st.slider("Number of documents to retrieve (k):", min_value=1, max_value=4, value=4)
49
+
50
+ temperature = st.slider("Temperature:", min_value=0.0, max_value=1.0, value=0.2)
51
+
52
+ if st.button("Submit"):
53
+ full_query = role + query
54
+ result = run_query(full_query, chat_history, k, temperature,api_key)
55
+ st.write(f"AI: {result}")
56
+
57
+ # Display chat history
58
+ st.write("### Chat History")
59
+ for human_msg, ai_msg in chat_history:
60
+ st.write(f"**Human:** {query}")
61
+ st.write(f"**AI:** {ai_msg.content}")
62
+
63
+ if __name__ == "__main__":
64
+ main()
data/Mitsubishi Heat Pump Training Manual.pdf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1eb31bb90fc05a568c0d99d9cea346709b9c12b62bba665c1327e9f2c0a3f696
3
+ size 2911401
data/page75.jpg ADDED
data/page76.jpg ADDED
database.py ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from langchain_community.document_loaders import PyPDFDirectoryLoader
3
+ from langchain_openai import OpenAIEmbeddings
4
+ from langchain_community.vectorstores import Chroma
5
+ from dotenv import load_dotenv
6
+ from langchain_text_splitters import CharacterTextSplitter
7
+
8
+ load_dotenv()
9
+ persist_directory = 'db'
10
+ raw_documents = PyPDFDirectoryLoader("data").load() # Load PDFs from folder
11
+
12
+ if not raw_documents:
13
+ raise ValueError("No documents found. Ensure the document loading is correct.")
14
+
15
+ # split it into chunks
16
+ text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
17
+ documents = text_splitter.split_documents(raw_documents)
18
+
19
+ db = Chroma.from_documents(documents, OpenAIEmbeddings(), persist_directory=persist_directory) # Initialize the database
20
+ print("Documents loaded into the database successfully.")
db/71479b33-11bd-4cc8-b914-f87d533ff84b/data_level0.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f18abd8c514282db82706e52b0a33ed659cd534e925a6f149deb7af9ce34bd8e
3
+ size 6284000
db/71479b33-11bd-4cc8-b914-f87d533ff84b/header.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:effaa959ce2b30070fdafc2fe82096fc46e4ee7561b75920dd3ce43d09679b21
3
+ size 100
db/71479b33-11bd-4cc8-b914-f87d533ff84b/length.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c261d2d09c9278a747d6fc53ef0b3374019bc7e52327522bf2802432c854713b
3
+ size 4000
db/71479b33-11bd-4cc8-b914-f87d533ff84b/link_lists.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
3
+ size 0
db/chroma.sqlite3 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3feecd0b832dddddd3c6788806ec93f4614ff0460b0de6cc327a8db6899d333b
3
+ size 2646016
requirements.txt ADDED
Binary file (5.86 kB). View file