Spaces:
Runtime error
Runtime error
| from dotenv import load_dotenv | |
| import gradio as gr | |
| from transformers import pipeline | |
| import os | |
| load_dotenv() | |
| # Load the Hugging Face model and tokenizer for text generation | |
| hf_token = os.getenv('HF_TOKEN') # Hugging Face Token for authentication | |
| model_name = "meta-llama/Llama-3-70b-chat-hf" # Hugging Face model | |
| chat_pipeline = pipeline("text-generation", model=model_name, use_auth_token=hf_token) | |
| # Function to handle the chatbot's response to user queries | |
| # You can only answer finance-related queries. | |
| # - Do not answer non-finance questions. | |
| def run_action(message, history): | |
| system_prompt = """You are a financial assistant. | |
| - Answer in 50 words. | |
| - Ensure responses adhere to the safety policy.""" | |
| messages = [{"role": "system", "content": system_prompt}] | |
| # Convert history into the appropriate format | |
| for entry in history: | |
| if entry["role"] == "user": | |
| messages.append({"role": "user", "content": entry["content"]}) | |
| elif entry["role"] == "assistant": | |
| messages.append({"role": "assistant", "content": entry["content"]}) | |
| # Add the user's current action | |
| messages.append({"role": "user", "content": message}) | |
| # Generate the model output using Hugging Face's pipeline | |
| response = chat_pipeline(messages) | |
| return response[0]['generated_text'] | |
| # Main loop for the chatbot to handle user input | |
| def main_loop(message, history): | |
| """ | |
| Main loop for the chatbot to handle user input. | |
| """ | |
| # Validate the user's input for safety | |
| if not is_safe(message): | |
| return "Your input violates our safety policy. Please try again with a finance-related query." | |
| # Generate and validate the response | |
| return run_action(message, history) | |
| # Gradio Chat Interface | |
| demo = gr.ChatInterface( | |
| main_loop, | |
| chatbot=gr.Chatbot( | |
| height=450, | |
| placeholder="Ask a finance-related question. Type 'exit' to quit.", | |
| type="messages", # Proper rendering of chat format | |
| ), | |
| textbox=gr.Textbox( | |
| placeholder="What do you want to ask about finance?", | |
| container=False, | |
| scale=7, | |
| ), | |
| title="Finance Chatbot", | |
| theme="Monochrome", | |
| examples=["What is compound interest?", "How to save for retirement?", "What are tax-saving options?"], | |
| cache_examples=False, | |
| ) | |
| # Launch the Gradio app | |
| demo.launch(share=True, server_name="0.0.0.0") | |