b-AI / app.py
ianeksdi's picture
Update app.py
4d0e77c verified
raw
history blame
2.57 kB
import gradio as gr
from huggingface_hub import InferenceClient
import requests
client = InferenceClient("mistralai/Mistral-Nemo-Instruct-2407")
def get_internet_data(query: str) -> str:
"""
Uses DuckDuckGo's Instant Answer API to fetch search data.
Returns a short summary of the query result.
"""
url = "https://api.duckduckgo.com"
params = {
"q": query,
"format": "json",
"no_redirect": 1,
"skip_disambig": 1,
}
try:
response = requests.get(url, params=params, timeout=5)
response.raise_for_status()
data = response.json()
# Retrieve a summary from the API's result
result = data.get("AbstractText", "")
if not result:
result = "Wala koy nakuha nga impormasyon gikan sa internet."
except Exception:
result = "Naay problema sa pagkuha sa impormasyon gikan sa internet."
return result
def respond(message, history: list[tuple[str, str]]):
system_message = "Ikaw usa ka buotan nga Chatbot. Tubaga lang sa binisaya, ug ayaw gamita ang english nga pinulungan."
max_tokens = 4096
temperature = 0.6
top_p = 0.95
messages = [{"role": "system", "content": system_message}]
for user_text, assistant_text in history:
if user_text:
messages.append({"role": "user", "content": user_text})
if assistant_text:
messages.append({"role": "assistant", "content": assistant_text})
# Automatically perform an internet search for the user's query.
search_result = get_internet_data(message)
messages.append({
"role": "assistant",
"content": f"Mga resulta gikan sa internet para sa '{message}': {search_result}"
})
# Include the original query as part of the conversation context.
messages.append({"role": "user", "content": message})
response = ""
previous_response = ""
for token_message in client.chat_completion(
messages,
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
):
token = token_message.choices[0].delta.get("content", "")
if not token:
break
response += token
# Yield only if new content was added
if response != previous_response:
yield response
previous_response = response
# Optional: break if the response is too long
if len(response) > 3000:
break
demo = gr.ChatInterface(respond)
if __name__ == "__main__":
demo.launch()