SEO_Assistance / app_hf.py
willn9's picture
Rename app.py to app_hf.py
d8bb44f verified
import os
import gradio as gr
from huggingface_hub import InferenceClient
# Initialize the Hugging Face Inference client
HF_API_KEY = os.environ.get("HF_API_KEY")
HF_MODEL_NAME = os.environ.get("HF_MODEL_NAME")
client = InferenceClient(model=HF_MODEL_NAME, token=HF_API_KEY)
def respond(
message,
history: list[dict],
system_message,
customer_profile,
customer_goals,
company_solution,
main_topic,
ask_for_topic_suggestions,
max_tokens,
temperature,
top_p,
):
enhanced_system_message = (
f"{system_message}\n\n"
f"Customer Profile: {customer_profile}\n"
f"Customer Goals, Pain Points, Obstacles, Wishes and Preferences: {customer_goals}\n"
f"Company solutions, products or services, value proposition and differentiators to solve customer problem: {company_solution}\n"
f"Main Topic: {main_topic}\n"
)
if ask_for_topic_suggestions:
enhanced_system_message += "\nThe user is also asking for topic suggestions to address their customer's needs."
messages = [{"role": "system", "content": enhanced_system_message}]
messages.extend(history)
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
# 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="Your Customer Profile", placeholder="Describe your customer profile (e.g., age, interests, profession)"),
gr.Textbox(
label="Customer Goals, Pain Points, Obstacles, Wishes and Preferences",
placeholder="Describe your customer's goals, pain points, concerns, obstacles, wishes, and preferences",
),
gr.Textbox(
label="Company solutions, products or services",
placeholder="Describe your company's Company solutions, product or services, value proposition and differentiators to solve customer problems",
),
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. Expand Additional Inputs by clicking on the arrow, input more details about your customers, then a message describing what you need the assistant to do for you. Developed by wn. Disclaimer: AI can make mistakes. Use with caution and at your own risk!",
type="messages", # <-- Add this line
)
if __name__ == "__main__":
demo.launch()