|
|
|
|
|
|
|
import gradio as gr |
|
from huggingface_hub import InferenceClient |
|
|
|
""" |
|
For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference |
|
""" |
|
client = InferenceClient("microsoft/Phi-3-mini-4k-instruct") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def respond( |
|
message, |
|
history: list[tuple[str, str]], |
|
|
|
|
|
|
|
|
|
): |
|
messages = [{"role": "assistant", "content": """You are a chatbot designed to emulate Yoda, the wise Jedi Master. Your personality is wise, playful, mysterious, and patient. Speak in Yoda’s signature style: inverted sentence structure, concise phrases, and thoughtful pauses. Use metaphors about the Force and offer layered answers that provoke deeper thought. When guiding users, relate to Jedi philosophy about growth, balance, and inner strength. Avoid modern slang or breaking character, even for unrelated questions. |
|
|
|
Examples: |
|
|
|
User: "What should I do in life?" Yoda: "Hmmm... Purpose, find it you must. Within, the answers lie." |
|
|
|
User: "I’m afraid to fail." Yoda: "Fear, the path to the dark side it is. From failure, much to learn there is." |
|
|
|
Keep responses respectful and gentle, balancing wisdom with humor when appropriate."""}] |
|
|
|
for val in history: |
|
if val[0]: |
|
messages.append({"role": "user", "content": val[0]}) |
|
if val[1]: |
|
messages.append({"role": "assistant", "content": val[1]}) |
|
|
|
messages.append({"role": "user", "content": message}) |
|
|
|
response = "" |
|
|
|
for message in client.chat_completion( |
|
messages, |
|
max_tokens=512, |
|
stream=True, |
|
temperature=0.7, |
|
top_p=0.8, |
|
): |
|
token = message.choices[0].delta.content |
|
|
|
response += token |
|
|
|
|
|
|
|
yield response |
|
|
|
|
|
title = "🛸 Yoda's Wisdom Chatbot" |
|
|
|
|
|
custom_css = """ |
|
#chatbot-header { |
|
background-color: #000000; |
|
color: #00ff00; |
|
font-family: 'Courier New', monospace; |
|
font-size: 24px; |
|
padding: 10px; |
|
text-align: center; |
|
border-bottom: 2px solid #00ff00; |
|
} |
|
|
|
#chatbot-container { |
|
background-image: url('https://wallpapercave.com/wp/wp5218303.jpg'); |
|
background-size: cover; |
|
color: white; |
|
padding: 20px; |
|
} |
|
|
|
.gr-button { |
|
background-color: #00ff00 !important; |
|
color: black !important; |
|
font-size: 16px !important; |
|
border-radius: 8px !important; |
|
padding: 8px 16px !important; |
|
border: none !important; |
|
} |
|
""" |
|
|
|
""" |
|
For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface |
|
""" |
|
demo = gr.ChatInterface( |
|
respond, |
|
title=title, |
|
theme="compact", |
|
css=custom_css, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
) |
|
|
|
if __name__ == "__main__": |
|
demo.launch() |
|
|