willn9's picture
updated with additional inputs
4e9d3eb verified
raw
history blame
3.2 kB
import gradio as gr
from huggingface_hub import InferenceClient
# Initialize the Hugging Face Inference client
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
def respond(
message,
history: list[tuple[str, str]],
system_message,
customer_profile,
customer_goals,
main_topic,
ask_for_topic_suggestions,
max_tokens,
temperature,
top_p,
):
# Construct the system message with additional inputs
enhanced_system_message = (
f"{system_message}\n\n"
f"Customer Profile: {customer_profile}\n"
f"Customer Goals, Pain Points, and Preferences: {customer_goals}\n"
f"Main Topic: {main_topic}\n"
)
# If the user wants topic suggestions, modify the prompt
if ask_for_topic_suggestions:
enhanced_system_message += "The user is also asking for topic suggestions to address their customer's needs."
messages = [{"role": "system", "content": enhanced_system_message}]
# Add conversation history
for val in history:
if val[0]:
messages.append({"role": "user", "content": val[0]})
if val[1]:
messages.append({"role": "assistant", "content": val[1]})
# Add the current user message
messages.append({"role": "user", "content": message})
# Generate the response
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
# Define the Gradio interface
demo = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(
value="You are a friendly Chatbot, a digital marketing expert and a talented copywriter. You are trying to help a user write a creative post to improve their SEO based on their input.",
label="Instructions to Bot",
),
gr.Textbox(label="Customer Profile", placeholder="Describe your customer profile (e.g., age, interests, profession)"),
gr.Textbox(
label="Customer Goals, Pain Points, and Preferences",
placeholder="Describe your customer's goals, pain points, concerns, obstacles, wishes, and preferences",
),
gr.Textbox(label="Main Topic", placeholder="Enter the main topic of the post"),
gr.Checkbox(label="Ask for Topic Suggestions", value=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)",
),
],
title="SEO Assistant",
description="This app provides customized content that resonates with your customers to improve your SEO. Based on your input. Powered by Hugging Face Inference, Design Thinking, and domain expertise. Developed by wn. Disclaimer: AI can make mistakes. Use with caution and at your own risk!",
)
if __name__ == "__main__":
demo.launch()