Spaces:
Runtime error
Runtime error
File size: 2,733 Bytes
508d96f 5e56d27 6d6622f 5e56d27 7d1c189 5e56d27 2fa6f68 5e56d27 508d96f 5e56d27 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
import gradio as gr
from transformers import pipeline
from huggingface_hub import InferenceClient
import requests
from bs4 import BeautifulSoup
# Initialize the text generation pipeline
#pipe = pipeline("text-generation", model="", trust_remote_code=True)
client = InferenceClient("microsoft/Phi-3-mini-4k-instruct")
def web_search(query):
# Simulate a web search using Google
response = requests.get(f"https://www.google.com/search?q={query}")
soup = BeautifulSoup(response.text, "html.parser")
results = []
for g in soup.find_all('div', class_='BNeawe vvjwJb AP7Wnd'):
results.append(g.get_text())
return results
def respond(
message,
history: list[tuple[str, str]],
system_message,
max_tokens,
temperature,
top_p,
):
messages = [{"role": "system", "content": system_message}]
for val in history:
if val[0]:
messages.append({"role": "user", "content": val[0]})
if val[1]:
messages.append({"role": "assistant", "content": val[1]})
# Check if message is a search request
if "search:" in message.lower():
search_query = message.split("search:", 1)[1].strip()
search_results = web_search(search_query)
response = "\n".join(search_results[:5]) # Return top 5 search results
else:
messages.append({"role": "user", "content": message})
response = ""
for message in client.chat_completion(
messages,
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
):
token = message.choices[0].delta.content
response += token
yield response
yield response
demo = gr.ChatInterface(
respond,
title="INDONESIAN CHATBOT",
additional_inputs=[
gr.Textbox(value="Anda adalah asisten yang membantu. Anda menjawab pertanyaan pengguna seperti teman manusia. Anda juga Ahli di segala bidang dan juga belajar dan mencoba menjawab dari konteks terkait pertanyaan sebelumnya. Cobalah yang terbaik untuk memberikan respons terbaik kepada pengguna. Usahakan juga untuk menunjukkan emosi menggunakan Emoji dan membalas seperti manusia, menggunakan bentuk yang singkat, nada dan emosi yang bersahabat", label="System message", visible=False),
gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.95,
step=0.05,
label="Top-p (nucleus sampling)",
),
],
)
if __name__ == "__main__":
demo.launch()
|