Futuresony commited on
Commit
d5cf576
·
verified ·
1 Parent(s): f92b521

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +73 -0
app.py ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import requests
3
+ import importlib
4
+ from bs4 import BeautifulSoup
5
+ from huggingface_hub import InferenceClient
6
+
7
+ # Import weather script
8
+ weather = importlib.import_module("weather")
9
+
10
+ # Hugging Face model
11
+ client = InferenceClient("Futuresony/future_ai_12_10_2024.gguf")
12
+
13
+ def google_search(query):
14
+ """Scrape Google search for an answer."""
15
+ url = f"https://www.google.com/search?q={query}"
16
+ headers = {"User-Agent": "Mozilla/5.0"}
17
+
18
+ try:
19
+ response = requests.get(url, headers=headers)
20
+ soup = BeautifulSoup(response.text, "html.parser")
21
+ result = soup.find("div", class_="BNeawe iBp4i AP7Wnd")
22
+
23
+ if result:
24
+ return result.text
25
+ return "Samahani, siwezi kupata majibu."
26
+ except Exception:
27
+ return "Samahani, siwezi kuwasiliana na Google kwa sasa."
28
+
29
+ def respond(message, history, system_message, max_tokens, temperature, top_p):
30
+ """Chatbot that answers user and fetches real-time info if needed."""
31
+
32
+ # Handle weather requests
33
+ if "weather" in message.lower() or "hali ya hewa" in message.lower():
34
+ city = message.split()[-1] # Last word as city name
35
+ return weather.get_weather(city)
36
+
37
+ # Handle time requests
38
+ if "time" in message.lower() or "saa ngapi" in message.lower():
39
+ from datetime import datetime
40
+ return f"Saa ya sasa ni {datetime.now().strftime('%H:%M:%S')}."
41
+
42
+ # Model response
43
+ messages = [{"role": "system", "content": system_message}]
44
+ for val in history:
45
+ if val[0]: messages.append({"role": "user", "content": val[0]})
46
+ if val[1]: messages.append({"role": "assistant", "content": val[1]})
47
+ messages.append({"role": "user", "content": message})
48
+
49
+ response = ""
50
+ for message in client.chat_completion(messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p):
51
+ token = message.choices[0].delta.content
52
+ response += token
53
+
54
+ # If model doesn't know, fetch from Google
55
+ if "I don't know" in response or response.strip() == "":
56
+ response = google_search(message)
57
+
58
+ return response
59
+
60
+ # Gradio UI
61
+ demo = gr.ChatInterface(
62
+ respond,
63
+ additional_inputs=[
64
+ gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
65
+ gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
66
+ gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
67
+ gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p"),
68
+ ],
69
+ )
70
+
71
+ if __name__ == "__main__":
72
+ demo.launch()
73
+