beeguy commited on
Commit
46abd15
·
1 Parent(s): fe724e6
Files changed (4) hide show
  1. app.py +9 -7
  2. static/index.html +8 -7
  3. static/script.js +12 -10
  4. static/style.css +10 -0
app.py CHANGED
@@ -55,16 +55,18 @@ async def chat(request: Request):
55
  reply = response.content
56
  return {"reply": reply}
57
 
58
- @app.get("/embeddings")
59
- def get_embeddings(input: str):
60
  loader = create_loader(input)
61
  docs = loader.load()
62
- my_vector_store = InMemoryVectorStore.from_documents(docs, embeddings)
63
-
64
  return {
65
- "embeddings": [],
66
- "test": "testtext"
67
- }
 
 
 
 
68
 
69
  @app.get("/", response_class=HTMLResponse)
70
  def get_index():
 
55
  reply = response.content
56
  return {"reply": reply}
57
 
58
+ @app.get("/parsing")
59
+ def parse_url(input: str):
60
  loader = create_loader(input)
61
  docs = loader.load()
 
 
62
  return {
63
+ "docs": docs
64
+ }
65
+
66
+ @app.get("/embeddings")
67
+ def get_embeddings():
68
+ my_vector_store = InMemoryVectorStore.from_documents(docs, embeddings)
69
+ return {"status": "OK"}
70
 
71
  @app.get("/", response_class=HTMLResponse)
72
  def get_index():
static/index.html CHANGED
@@ -11,20 +11,21 @@
11
 
12
  <body>
13
  <main>
 
14
  <section id="text-gen">
15
- <h1>Chat with your favorite website!</h1>
16
- <p>Here you can create a vector storage from the url you provide.</p>
17
  <form class="text-gen-form">
18
- <label for="text-gen-input">The url of the website</label>
 
19
  <input id="text-gen-input" type="text" />
20
- <button id="text-gen-submit">Submit</button>
21
- <button id="download-embeddings" type="button">Download Embeddings</button>
22
  <p class="text-gen-output"></p>
23
  </form>
24
- <p>If you have embeddings, you can upload them instead.</p>
25
  <form class="text-gen-form">
26
  <input type="file" id="file-input" style="display: none;" />
27
- <button id="upload-embeddings" type="button">Upload Embeddings</button>
28
  </form>
29
  </section>
30
  <section id="chat">
 
11
 
12
  <body>
13
  <main>
14
+ <h1>Chat with your favorite website!</h1>
15
  <section id="text-gen">
16
+ <p>here you can create a vector storage from the url you provide.</p>
 
17
  <form class="text-gen-form">
18
+ <p>Here you will parse url and get list of docs</p>
19
+ <label for="text-gen-input">the url of the website</label>
20
  <input id="text-gen-input" type="text" />
21
+ <button id="text-gen-submit">submit</button>
22
+ <button id="download-embeddings" type="button">download docs</button>
23
  <p class="text-gen-output"></p>
24
  </form>
25
+ <p>if you have docs, you can upload them instead.</p>
26
  <form class="text-gen-form">
27
  <input type="file" id="file-input" style="display: none;" />
28
+ <button id="upload-embeddings" type="button">upload docs</button>
29
  </form>
30
  </section>
31
  <section id="chat">
static/script.js CHANGED
@@ -1,11 +1,11 @@
1
  const textGenForm = document.querySelector('.text-gen-form');
2
- let embeddingsList = [];
3
 
4
  const embedText = async (text) => {
5
- const inferResponse = await fetch(`embeddings?input=${text}`);
6
  const inferJson = await inferResponse.json();
7
 
8
- return inferJson.embeddings;
9
  };
10
 
11
  const spinnerOverlay = document.createElement('div');
@@ -30,8 +30,8 @@ textGenForm.addEventListener('submit', async (event) => {
30
 
31
  try {
32
  const embeddings = await embedText(textGenInput.value);
33
- embeddingsList = embeddings; // Store embeddings in the variable
34
- textGenParagraph.textContent = JSON.stringify(embeddingsList);
35
  updateDownloadButtonState(); // Update button state
36
  } catch (err) {
37
  console.error(err);
@@ -47,11 +47,11 @@ const uploadButton = document.getElementById('upload-embeddings');
47
  const fileInput = document.getElementById('file-input');
48
 
49
  const updateDownloadButtonState = () => {
50
- downloadButton.disabled = embeddingsList.length === 0;
51
  };
52
 
53
  const downloadEmbeddings = () => {
54
- const dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(embeddingsList));
55
  const downloadAnchorNode = document.createElement('a');
56
  downloadAnchorNode.setAttribute("href", dataStr);
57
  downloadAnchorNode.setAttribute("download", "embeddings.json");
@@ -72,10 +72,10 @@ fileInput.addEventListener('change', async (event) => {
72
  reader.onload = async (e) => {
73
  try {
74
  const embeddings = JSON.parse(e.target.result);
75
- embeddingsList = embeddings; // Store uploaded embeddings in the variable
76
 
77
  const textGenParagraph = document.querySelector('.text-gen-output');
78
- textGenParagraph.textContent = JSON.stringify(embeddingsList);
79
 
80
  updateDownloadButtonState(); // Update button state
81
  // Optionally, you can send the embeddings to the server
@@ -84,7 +84,7 @@ fileInput.addEventListener('change', async (event) => {
84
  headers: {
85
  'Content-Type': 'application/json'
86
  },
87
- body: JSON.stringify({ embeddings: embeddingsList })
88
  });
89
  } catch (err) {
90
  console.error('Error reading or parsing the file', err);
@@ -127,6 +127,7 @@ chatForm.addEventListener('submit', async (event) => {
127
 
128
  const userMessageElement = document.createElement('div');
129
  userMessageElement.textContent = `You: ${userMessage}`;
 
130
  chatBox.appendChild(userMessageElement);
131
 
132
  chatInput.value = '';
@@ -135,6 +136,7 @@ chatForm.addEventListener('submit', async (event) => {
135
  const reply = await sendMessage(userMessage);
136
  const replyMessageElement = document.createElement('div');
137
  replyMessageElement.textContent = `Bot: ${reply}`;
 
138
  chatBox.appendChild(replyMessageElement);
139
  } catch (err) {
140
  console.error('Error sending message:', err);
 
1
  const textGenForm = document.querySelector('.text-gen-form');
2
+ let docsList = [];
3
 
4
  const embedText = async (text) => {
5
+ const inferResponse = await fetch(`parsing?input=${text}`);
6
  const inferJson = await inferResponse.json();
7
 
8
+ return inferJson;
9
  };
10
 
11
  const spinnerOverlay = document.createElement('div');
 
30
 
31
  try {
32
  const embeddings = await embedText(textGenInput.value);
33
+ docsList = embeddings; // Store embeddings in the variable
34
+ textGenParagraph.textContent = JSON.stringify(docsList);
35
  updateDownloadButtonState(); // Update button state
36
  } catch (err) {
37
  console.error(err);
 
47
  const fileInput = document.getElementById('file-input');
48
 
49
  const updateDownloadButtonState = () => {
50
+ downloadButton.disabled = docsList.length === 0;
51
  };
52
 
53
  const downloadEmbeddings = () => {
54
+ const dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(docsList));
55
  const downloadAnchorNode = document.createElement('a');
56
  downloadAnchorNode.setAttribute("href", dataStr);
57
  downloadAnchorNode.setAttribute("download", "embeddings.json");
 
72
  reader.onload = async (e) => {
73
  try {
74
  const embeddings = JSON.parse(e.target.result);
75
+ docsList = embeddings; // Store uploaded embeddings in the variable
76
 
77
  const textGenParagraph = document.querySelector('.text-gen-output');
78
+ textGenParagraph.textContent = JSON.stringify(docsList);
79
 
80
  updateDownloadButtonState(); // Update button state
81
  // Optionally, you can send the embeddings to the server
 
84
  headers: {
85
  'Content-Type': 'application/json'
86
  },
87
+ body: JSON.stringify({ embeddings: docsList })
88
  });
89
  } catch (err) {
90
  console.error('Error reading or parsing the file', err);
 
127
 
128
  const userMessageElement = document.createElement('div');
129
  userMessageElement.textContent = `You: ${userMessage}`;
130
+ userMessageElement.classList.add('user-message');
131
  chatBox.appendChild(userMessageElement);
132
 
133
  chatInput.value = '';
 
136
  const reply = await sendMessage(userMessage);
137
  const replyMessageElement = document.createElement('div');
138
  replyMessageElement.textContent = `Bot: ${reply}`;
139
+ replyMessageElement.classList.add('bot-reply');
140
  chatBox.appendChild(replyMessageElement);
141
  } catch (err) {
142
  console.error('Error sending message:', err);
static/style.css CHANGED
@@ -92,4 +92,14 @@ button {
92
  @keyframes spin {
93
  0% { transform: rotate(0deg); }
94
  100% { transform: rotate(360deg); }
 
 
 
 
 
 
 
 
 
 
95
  }
 
92
  @keyframes spin {
93
  0% { transform: rotate(0deg); }
94
  100% { transform: rotate(360deg); }
95
+ }
96
+
97
+ .user-message {
98
+ text-align: right;
99
+ margin: 0.5rem 0;
100
+ }
101
+
102
+ .bot-reply {
103
+ text-align: left;
104
+ margin: 0.5rem 0;
105
  }