pratikshahp's picture
Update hf_app.py
570e852 verified
raw
history blame
2.4 kB
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")