Spaces:
Sleeping
Sleeping
| 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() |