Spaces:
Runtime error
Runtime error
File size: 3,936 Bytes
bf75e36 dbe86dc bf75e36 dbe86dc c74e6a3 7335d83 7d76935 ad3cf41 7d76935 ad3cf41 7d76935 7335d83 6956a8c 7335d83 6956a8c 7335d83 5e3379b 7335d83 6956a8c 7335d83 fd6a777 5df9ce0 ad3cf41 9032410 3123805 fd6a777 7335d83 fd6a777 9032410 99e9daf 05f293d fd6a777 05f293d ba46af2 d345020 7335d83 f72e33a ad3cf41 7d6f75f ad3cf41 d8e3866 9032410 ad3cf41 6956a8c 7335d83 ad3cf41 9032410 ad3cf41 cdac148 9032410 7d6f75f ad3cf41 d345020 9032410 05f293d 99e9daf 05f293d 9032410 344e851 9032410 344e851 99e9daf 9032410 399b998 33441e9 ad3cf41 bf75e36 05f293d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | import gradio as gr
from huggingface_hub import InferenceClient
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
example_questions_en = [
"What is a TFSA?",
"What are good long-term stocks?",
"How does compound interest work?",
"What is the difference between ETFs and stocks?",
"How do I start investing with a small budget?",
"What are dividend stocks and how do they work?",
"How do I diversify my portfolio?",
"What are the risks of investing in stocks?"
]
example_questions_fr = [
"Qu'est-ce qu'un CELI?",
"Quelles sont de bonnes actions à long terme?",
"Comment fonctionne l'intérêt composé?",
"Quelle est la différence entre les FNB et les actions?",
"Comment commencer à investir avec un petit budget?",
"Qu'est-ce qu'une action à dividendes et comment fonctionne-t-elle?",
"Comment diversifier mon portefeuille?",
"Quels sont les risques d'investir en bourse?"
]
def respond(message, history, language):
if history is None:
history = []
if language == "English":
system_prompt = (
"You are a financial assistant specializing in investment strategies. "
"Provide concise and direct answers to each question. "
"Keep answers short and simple, offering general information, not specific advice."
)
else:
system_prompt = (
"Vous êtes un assistant financier spécialisé dans les stratégies d'investissement. "
"Fournissez des réponses concises et directes à chaque question. "
"Gardez les réponses courtes et simples, en offrant des informations générales, pas des conseils spécifiques."
)
messages = [{"role": "system", "content": system_prompt}]
for user_msg, bot_reply in history:
if user_msg:
messages.append({"role": "user", "content": user_msg})
if bot_reply:
messages.append({"role": "assistant", "content": bot_reply})
messages.append({"role": "user", "content": message})
reply = client.chat_completion(
messages=messages,
max_tokens=256,
temperature=0.7,
top_p=0.95,
)
response = reply.choices[0].message.content
return response
def submit_message(message, history, language):
if not message.strip():
return history, ""
bot_response = respond(message, history, language)
history.append((message, bot_response))
return history, ""
def update_suggested_questions(language):
questions = example_questions_en if language == "English" else example_questions_fr
return gr.update(choices=questions)
def reset_chat():
return [], "", []
with gr.Blocks() as demo:
state = gr.State([])
with gr.Row():
chatbot = gr.Chatbot(height=450)
language_toggle = gr.Radio(
["English", "Français"],
label="Select Language / Sélectionner la langue",
value="English"
)
suggested_questions = gr.Dropdown(choices=example_questions_en, label="Suggested Questions")
user_input = gr.Textbox(label="Your Message", elem_id="user_input")
send_button = gr.Button("Send", elem_id="send_button")
new_chat_button = gr.Button("New Chat", elem_id="new_chat_button")
send_button.click(
fn=submit_message,
inputs=[user_input, state, language_toggle],
outputs=[chatbot, user_input],
queue=False
)
language_toggle.change(
fn=update_suggested_questions,
inputs=language_toggle,
outputs=suggested_questions
)
suggested_questions.change(
fn=lambda q: ([], q),
inputs=suggested_questions,
outputs=[state, user_input]
)
new_chat_button.click(
fn=reset_chat,
inputs=[],
outputs=[chatbot, user_input, state]
)
if __name__ == "__main__":
demo.launch(share=True) |