chatbot2 / app.py
ashutoshsharma58's picture
Update app.py
5f9e82d verified
import gradio as gr
from huggingface_hub import InferenceClient
import requests
from bs4 import BeautifulSoup
import re
# Initialize Hugging Face InferenceClient
client = InferenceClient(model="HuggingFaceH4/zephyr-7b-beta")
def is_url(input_string):
url_pattern = re.compile(r'^(https?://)?([a-zA-Z0-9.-]+(?:\.[a-zA-Z]{2,4}))(?:/[^\s]*)?/?$')
return url_pattern.match(input_string) is not None
def scrape_website(url):
try:
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
return ' '.join([p.text for p in soup.find_all('p')])
except Exception as e:
return f"Failed to scrape the website. Error: {str(e)}"
def generate_response(input_text):
if is_url(input_text):
scraped_content = scrape_website(input_text)
return f"I've found the following content from the website:\n\n{scraped_content}"
else:
response = client.text_generation(f"User: {input_text}\nAssistant:", max_new_tokens=100, temperature=0.6)
return response['generated_text']
def process_input(input_text):
return generate_response(input_text)
# Define Gradio interface
with gr.Blocks() as demo:
gr.Markdown("# Conversational Chatbot with Web Scraping Ability")
with gr.Row():
with gr.Column():
text_input = gr.Textbox(label="Enter your message or URL here")
submit_button = gr.Button("Submit")
with gr.Column():
response_output = gr.Textbox(label="Chatbot Response", interactive=False)
submit_button.click(fn=process_input, inputs=[text_input], outputs=[response_output])
demo.launch()