ceew36 commited on
Commit
a6ea7c3
·
verified ·
1 Parent(s): 2273cad

Upload 3 files

Browse files
Files changed (4) hide show
  1. .gitattributes +1 -0
  2. Document (1).pdf +3 -0
  3. app (1).py +118 -0
  4. requirements.txt +10 -8
.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
+ Document[[:space:]](1).pdf filter=lfs diff=lfs merge=lfs -text
Document (1).pdf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cdb4d733f0f28ec3927a30f31d927e39b56e65d305081111a0c9a020d893c54b
3
+ size 4574439
app (1).py ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # FINAL COMBINE GRADIO INTERFACE ,WITH THR DEFAULT VALUES and STOP FACILITIES
2
+
3
+ import PIL.Image as Image
4
+ import gradio as gr
5
+ from ultralytics import YOLO
6
+ import os
7
+ import time
8
+ from langchain_groq import ChatGroq
9
+ from langchain_community.embeddings import HuggingFaceEmbeddings
10
+ from langchain.text_splitter import CharacterTextSplitter
11
+ from langchain.chains.combine_documents import create_stuff_documents_chain
12
+ from langchain_core.prompts import ChatPromptTemplate
13
+ from langchain.chains import create_retrieval_chain
14
+ from langchain_community.vectorstores import FAISS
15
+ from langchain_community.document_loaders import PyPDFLoader
16
+ from dotenv import load_dotenv
17
+
18
+ load_dotenv()
19
+ groq_api_key = os.getenv('GROQ_API_KEY')
20
+
21
+ # Initialize object detection model
22
+ model = YOLO("version4c.pt")
23
+
24
+ # Set default confidence and IoU thresholds
25
+ CONF_THRESHOLD = 0.25
26
+ IOU_THRESHOLD = 0.45
27
+
28
+ def predict_image(img):
29
+ # Perform object detection
30
+ results = model.predict(source=img, conf=CONF_THRESHOLD, iou=IOU_THRESHOLD, show_labels=True, show_conf=True, imgsz=640)
31
+ # Plot the result
32
+ for r in results:
33
+ im_array = r.plot()
34
+ im = Image.fromarray(im_array[..., ::-1])
35
+ return im
36
+
37
+ # Initialize chatbot components
38
+ llm = ChatGroq(groq_api_key=groq_api_key, model_name="Llama3-8b-8192")
39
+ prompt = ChatPromptTemplate.from_template(
40
+ """ Answer the questions based on the provided context only. Please provide the most accurate response based on the question <context> {context} <context> Questions:{input} """
41
+ )
42
+ embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
43
+ loader = PyPDFLoader("Document.pdf")
44
+ docs = loader.load()
45
+ text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
46
+ final_documents = text_splitter.split_documents(docs)
47
+ # Extract text content from the Document instances
48
+ doc_texts = [doc.page_content for doc in final_documents]
49
+ embeddings_result = embeddings.embed_documents(doc_texts)
50
+ if embeddings_result:
51
+ vectors = FAISS.from_documents(final_documents, embeddings)
52
+ else:
53
+ raise ValueError("Failed to generate embeddings. Please check your input documents or try a different embedding model.")
54
+
55
+ document_chain = create_stuff_documents_chain(llm, prompt)
56
+ retriever = vectors.as_retriever()
57
+ retrieval_chain = create_retrieval_chain(retriever, document_chain)
58
+
59
+ def print_like_dislike(x: gr.LikeData):
60
+ print(x.index, x.value, x.liked)
61
+
62
+ def add_message(history, message):
63
+ if message is not None:
64
+ history.append((message, None))
65
+ return history, gr.Textbox(value=None, interactive=False)
66
+
67
+ stop_generation = False
68
+
69
+ def bot(history):
70
+ global stop_generation
71
+ stop_generation = False
72
+ message = history[-1][0]
73
+ start_time = time.time()
74
+ response = retrieval_chain.invoke({'input': message})['answer']
75
+ response_time = time.time() - start_time
76
+ if response_time > 6:
77
+ return [(f"Sorry, I couldn't generate a response within 6 seconds. Please try again.", None)]
78
+ history[-1][1] = ""
79
+ for character in response:
80
+ if stop_generation:
81
+ break
82
+ history[-1][1] += character
83
+ time.sleep(0.05)
84
+ yield history
85
+
86
+ def stop_response(dummy_placeholder):
87
+ global stop_generation
88
+ stop_generation = True
89
+
90
+ with gr.Blocks() as demo:
91
+ with gr.Row():
92
+ with gr.Column(scale=2):
93
+ model_input = gr.Image(type="pil", label="Upload Image")
94
+ model_output = gr.Image(type="pil", label="Result")
95
+
96
+ model_btn = gr.Button("Detect Results")
97
+ model_btn.click(predict_image, inputs=model_input, outputs=model_output)
98
+
99
+ with gr.Column(scale=1):
100
+ chatbot = gr.Chatbot(
101
+ [],
102
+ elem_id="chatbot",
103
+ bubble_full_width=False
104
+ )
105
+
106
+ chat_input = gr.Textbox(interactive=True, placeholder="Enter message...", show_label=False)
107
+ chat_msg = chat_input.submit(add_message, [chatbot, chat_input], [chatbot, chat_input])
108
+ bot_msg = chat_msg.then(bot, chatbot, chatbot, api_name="bot_response")
109
+ bot_msg.then(lambda: gr.Textbox(interactive=True), None, [chat_input])
110
+ chatbot.like(print_like_dislike, None, None)
111
+
112
+ stop_btn = gr.Button("Stop Generation")
113
+ stop_btn.click(stop_response, None, None)
114
+
115
+ demo.queue()
116
+
117
+ if __name__ == "__main__":
118
+ demo.launch()
requirements.txt CHANGED
@@ -1,8 +1,10 @@
1
- gradio
2
- ultralytics
3
- opencv-python
4
- pypdf
5
- langchain_groq
6
- langchain_community
7
- langchain==0.1.17
8
- HuggingFaceEmbeddings
 
 
 
1
+ gradio
2
+ ultralytics
3
+ opencv-python
4
+ pypdf
5
+ sentence-transformers
6
+ langchain_groq
7
+ faiss-cpu
8
+ langchain_community
9
+ langchain==0.1.17
10
+ HuggingFace