Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	| import streamlit as st | |
| from pymongo import MongoClient | |
| from gradio_client import Client | |
| import time | |
| import os | |
| # Connect to MongoDB | |
| password = os.getenv("password") | |
| uri = f"mongodb+srv://E:{password}@cluster0.rvt8psd.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0" | |
| client = MongoClient(uri) | |
| db = client["instantqa"] | |
| collection = db["instantqa"] | |
| client_endpoint = "https://skier8402-mistral-super-fast.hf.space/" | |
| def ask_question(question): | |
| # Check if the question exists in the database | |
| query = {"question": question} | |
| result = collection.find_one(query) | |
| if result: | |
| return result["answer"] | |
| else: | |
| client = Client(client_endpoint) | |
| result = client.predict( | |
| question, | |
| 0.9, # Temperature | |
| 2000, # Max new tokens | |
| 0.9, # Top-p (nucleus sampling) | |
| 1.2, # Repetition penalty | |
| api_name="/chat" | |
| ) | |
| answer = result | |
| answer = answer[:-4] | |
| # Store the question-answer pair in MongoDB | |
| data = {"question": question, "answer": answer} | |
| collection.insert_one(data) | |
| return answer | |
| def typewriter(text: str, speed: int): | |
| tokens = text.split() | |
| container = st.empty() | |
| for index in range(len(tokens) + 1): | |
| curr_full_text = " ".join(tokens[:index]) | |
| container.markdown(curr_full_text) | |
| time.sleep(1 / speed) | |
| # JavaScript to scroll to the bottom of the page while typing | |
| st.write(f"<script>window.scrollTo(0, document.body.scrollHeight);</script>", unsafe_allow_html=True) | |
| def main(): | |
| st.title("Near Instant Question Answering") | |
| st.write("Limitations: May generate unhelpful or outdated content, no chat history.") | |
| st.write("Warning: Do not share any personal/public information.") | |
| question = st.text_input("Ask your question:") | |
| if st.button("Ask"): | |
| if question: | |
| answer_placeholder = st.empty() | |
| answer_placeholder.write("Thinking...") | |
| answer = ask_question(question) | |
| answer_placeholder.empty() | |
| typewriter("Answer: " + answer, speed=300) | |
| else: | |
| st.write("Please enter a question.") | |
| if __name__ == "__main__": | |
| main() | |