Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import requests | |
| from bs4 import BeautifulSoup, Comment | |
| import os | |
| from llama_cpp import Llama | |
| def tag_visible(element): | |
| if element.parent.name in ['style', 'script', 'head', 'title', 'meta', '[document]']: | |
| return False | |
| if isinstance(element, Comment): | |
| return False | |
| return True | |
| def get_text_from_url(url): | |
| response = requests.get(url, timeout=10) | |
| soup = BeautifulSoup(response.text, 'html.parser') | |
| # Use 'string=True' instead of deprecated 'text=True' | |
| texts = soup.find_all(string=True) | |
| visible_texts = filter(tag_visible, texts) | |
| return " ".join(t.strip() for t in visible_texts) | |
| # Pre-fetch and truncate homepage text | |
| text_list = [] | |
| homepage_url = "https://sites.google.com/view/abhilashnandy/home/" | |
| extensions = ["", "pmrf-profile-page"] | |
| for ext in extensions: | |
| try: | |
| full_text = get_text_from_url(homepage_url + ext) | |
| truncated_text = full_text[:2000] # Adjust truncation length as needed | |
| text_list.append(truncated_text) | |
| except Exception as e: | |
| text_list.append(f"Error fetching {homepage_url+ext}: {str(e)}") | |
| CONTEXT = " ".join(text_list) | |
| # Set the model path. Make sure the model file is downloaded and placed in the 'models' directory. | |
| model_path = "TheBloke/Mistral-7B-Instruct-v0.1-GGUF" | |
| if not os.path.exists(model_path): | |
| raise ValueError(f"Model file not found at {model_path}. Please download the model file and place it in the 'models' folder.") | |
| llm = Llama(model_path=model_path, n_ctx=4096, n_threads=6, verbose=False) | |
| def answer_query(query): | |
| prompt = ( | |
| "You are an AI chatbot answering queries based on Abhilash Nandy's homepage. " | |
| "Provide concise answers (under 30 words).\n\n" | |
| f"Context: {CONTEXT}\n\nUser: {query}\nAI:" | |
| ) | |
| response = llm(prompt, max_tokens=50, stop=["\nUser:", "\nAI:"], echo=False) | |
| return response["choices"][0]["text"].strip() | |
| iface = gr.Interface( | |
| fn=answer_query, | |
| inputs=gr.Textbox(lines=2, placeholder="Ask a question about Abhilash Nandy's homepage..."), | |
| outputs="text", | |
| title="Homepage QA Chatbot", | |
| description="A chatbot answering queries based on homepage context." | |
| ) | |
| if __name__ == '__main__': | |
| iface.launch() |