import gradio as gr from guardrail import is_safe # Import the guardrail validation function from langchain_huggingface import HuggingFaceEndpoint from dotenv import load_dotenv import os # Load environment variables load_dotenv() HF_TOKEN = os.getenv("HF_TOKEN") # Validate Hugging Face token if not HF_TOKEN: raise ValueError("Missing Hugging Face API token. Please check your .env file.") # Initialize the Hugging Face endpoint for generating responses llm = HuggingFaceEndpoint( repo_id="mistralai/Mistral-7B-Instruct-v0.3", huggingfacehub_api_token=HF_TOKEN.strip(), temperature=0.7, max_new_tokens=100 ) # Chatbot response function with safety checks def chatbot_response(user_message: str) -> str: """ Generates a chatbot response while ensuring the content is safe for children under 16. """ try: # Step 1: Validate the user input if not is_safe(user_message): return "Sorry, I cannot respond to that as it violates our safety policy." # Step 2: Generate a response using the Mistral model raw_response = llm.invoke(user_message) # Step 3: Validate the generated response if not is_safe(raw_response): return "Sorry, I cannot share that information as it violates our safety policy." # Step 4: Return the validated response return raw_response except Exception as e: return f"An error occurred: {str(e)}" # Gradio Interface for the chatbot with gr.Blocks() as app: gr.Markdown("## Kid-Safe Chatbot 🛡️") gr.Markdown("This chatbot ensures that all responses are appropriate for children under 16.") with gr.Row(): user_input = gr.Textbox(label="Your Message", placeholder="Type your message here...") response_output = gr.Textbox(label="Chatbot Response", placeholder="The chatbot will respond here.") submit_button = gr.Button("Send") # On button click, generate response submit_button.click( fn=chatbot_response, inputs=[user_input], outputs=[response_output] ) # Launch the app if __name__ == "__main__": app.launch()