Spaces:
Runtime error
Runtime error
File size: 2,872 Bytes
9cfe82c ee43960 9cfe82c ee43960 9cfe82c d88b860 4b4b581 ee43960 4b4b581 ee43960 d88b860 ee43960 d88b860 4b4b581 d88b860 9cfe82c 59414a8 d88b860 9cfe82c ee43960 d88b860 ee43960 d88b860 ee43960 d88b860 9cfe82c ee43960 9cfe82c d88b860 ee43960 9cfe82c 4b4b581 9cfe82c ee43960 a32839b 9cfe82c |
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 |
import gradio as gr
from huggingface_hub import InferenceClient
from collections import defaultdict
# Initialize the model client
client = InferenceClient("Futuresony/future_ai_12_10_2024.gguf")
# Store user preferences & chat history
user_preferences = defaultdict(int) # Tracks user interests
session_histories = defaultdict(list) # Stores chat history per session
def format_chat_history(history, system_message):
"""Formats history into a single string in Alpaca/LLaMA style."""
chat_str = f"{system_message}\n\n" # Start with system message
for user_msg, bot_response in history:
chat_str += f"### Instruction:\n{user_msg}\n\n### Response:\n{bot_response}\n\n"
return chat_str # Return formatted conversation history
def extract_keywords(text):
"""Extracts simple keywords from user input."""
words = text.lower().split()
common_words = {"the", "is", "a", "and", "to", "of", "in", "it", "you", "for"} # Ignore common words
return [word for word in words if word not in common_words]
def respond(message, history, system_message, max_tokens, temperature, top_p):
session_id = id(history) # Unique ID for each session
session_history = session_histories[session_id] # Retrieve session history
# Extract keywords & update preferences
keywords = extract_keywords(message)
for kw in keywords:
user_preferences[kw] += 1
# Format full conversation as a single string
formatted_input = format_chat_history(session_history, system_message) + f"### Instruction:\n{message}\n\n### Response:\n"
# Send request (fix: ensure input is a single string)
response = client.text_generation(
formatted_input,
max_new_tokens=max_tokens,
temperature=temperature,
top_p=top_p,
)
# ✅ Extract only the response
cleaned_response = response.split("### Response:")[-1].strip()
# Save to session history
session_history.append((message, cleaned_response))
# Adapt response based on learning
most_asked = max(user_preferences, key=user_preferences.get, default=None)
if most_asked and most_asked in message.lower():
cleaned_response += f"\n\nNaona unapenda mada ya '{most_asked}' sana! Unataka kujua zaidi?"
return cleaned_response # ✅ Fixed: Returns only the final response
# Create Chat Interface
demo = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(value="Wewe ni msaidizi wa kirafiki anayejifunza upendeleo wa mtumiaji.", label="System message"),
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()
|