CoolFace
Apppublic

d221/Qdrant_Backend

sourceHugging Faceapache-2.0updated 2y agoView on Hugging Face
0likes
index.html120 linesDownload Raw Back to templates
1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="UTF-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
6    <title>Oncology RAG App</title>
7    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600&display=swap" rel="stylesheet">
8    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
9    <style>
10        body {
11            background-color: black;
12            font-family: 'Poppins', sans-serif;
13            color: white;
14        }
15        .chat-container {
16            max-width: 800px;
17            margin: 50px auto;
18            margin-top: 10%;
19            padding: 20px;
20            background-color: #333;
21            border-radius: 10px;
22        }
23        .chat-heading {
24            text-align: center;
25            font-size: 2.5em;
26            font-weight: 600;
27            margin-bottom: 30px;
28            color: #ffd700; /* Golden color for the heading */
29        }
30        .chat-input {
31            margin-top: 20px; /* Added margin */
32            margin-bottom: 20px;
33            height: 100px; /* Increased height */
34        }
35        .chat-button {
36            background-color: green;
37            color: white;
38            padding: 10px 20px;
39            font-size: 1.2em;
40        }
41        .chat-response {
42            background-color: #444;
43            padding: 15px;
44            border-radius: 5px;
45            min-height: 100px; /* Minimum height for the response box */
46            margin-top: 20px;
47        }
48        .accordion {
49            margin-top: 20px;
50            background-color: #444;
51            border-radius: 5px;
52        }
53        .accordion-button {
54            color: white;
55            background-color: #555;
56        }
57        .accordion-body {
58            color: white; /* Improved visibility of text */
59        }
60        pre {
61            white-space:pre-wrap;
62        }
63    </style>
64</head>
65<body>
66    <div class="container chat-container">
67        <h1 class="chat-heading">Medical RAG QA App</h1>
68
69        <div class="accordion" id="appDescriptionAccordion">
70            <div class="accordion-item">
71                <h2 class="accordion-header" id="descriptionHeading">
72                    <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseDescription" aria-expanded="true" aria-controls="collapseDescription">
73                        About This App
74                    </button>
75                </h2>
76                <div id="collapseDescription" class="accordion-collapse collapse" aria-labelledby="descriptionHeading" data-bs-parent="#appDescriptionAccordion">
77                    <div class="accordion-body text-dark">
78                        This is a RAG implementation using Open Source stack. Intel's Neural Chat has been used to build this app along with BGE Embeddings as an embedding model, Chroma DB as a vector store, and Langchain & CTransformers as an orchestration frameworks.
79                    </div>
80                </div>
81            </div>
82        </div>
83
84        <div class="row">
85            <div class="col">
86                <textarea id="userInput" class="form-control chat-input" placeholder="Type your query here..."></textarea>
87                <button id="submitBtn" class="btn chat-button">Submit</button>
88                <div id="response" class="chat-response"></div>
89            </div>
90        </div>
91    </div>
92
93    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
94    <script>
95        document.getElementById('submitBtn').addEventListener('click', async function() {
96            var userInput = document.getElementById('userInput').value;
97            document.getElementById('response').innerHTML = '<p>Processing...</p>';
98            const formData = new FormData();
99            formData.append('query', userInput); 
100            try {
101                const response = await fetch('/get_response', {
102                    method: 'POST',
103                    body: formData
104                });
105
106                if (!response.ok) {
107                    throw new Error('Network response was not ok');
108                }
109
110                const data = await response.json();
111                document.getElementById('response').innerHTML = `<p>${data.answer}</p><br><pre><b>Context: </b> ${data.source_document}</pre><br><pre><b>Source Document: </b> ${data.doc}</pre>`;
112            } catch (error) {
113                console.error('Error:', error);
114                document.getElementById('response').innerHTML = '<p>Error processing your request</p>';
115            }
116        });
117
118    </script>
119</body>
120</html>