import numpy as np import streamlit as st import os from dotenv import load_dotenv import requests # Load environment variables load_dotenv() # Hugging Face API URL and token HUGGINGFACE_API_URL = "https://api-inference.huggingface.co/models/joermd/llma-speedy" HUGGINGFACE_API_TOKEN = os.environ.get('HUGGINGFACEHUB_API_TOKEN') # Random dog images for error messages random_dog = [ "0f476473-2d8b-415e-b944-483768418a95.jpg", "1bd75c81-f1d7-4e55-9310-a27595fa8762.jpg", # Add more images as needed ] def reset_conversation(): '''Resets conversation''' st.session_state.conversation = [] st.session_state.messages = [] return None # Create sidebar controls temp_values = st.sidebar.slider('Select a temperature value', 0.0, 1.0, 0.5) max_token_value = st.sidebar.slider('Select a max_token value', 1000, 9000, 5000) st.sidebar.button('Reset Chat', on_click=reset_conversation) # Set the model and display its name model_name = "joermd/llma-speedy" st.sidebar.write(f"You're now chatting with **{model_name}**") st.sidebar.markdown("*Generated content may be inaccurate or false.*") # Initialize chat history if "messages" not in st.session_state: st.session_state.messages = [] # Display chat messages from history on app rerun for message in st.session_state.messages: with st.chat_message(message["role"]): st.markdown(message["content"]) # Accept user input if prompt := st.chat_input(f"Hi, I'm {model_name}, ask me a question"): with st.chat_message("user"): st.markdown(prompt) st.session_state.messages.append({"role": "user", "content": prompt}) # Display assistant response with st.chat_message("assistant"): try: headers = {"Authorization": f"Bearer {HUGGINGFACE_API_TOKEN}"} payload = { "inputs": prompt, "parameters": {"temperature": temp_values, "max_new_tokens": max_token_value} } response = requests.post(HUGGINGFACE_API_URL, headers=headers, json=payload) if response.status_code == 200: result = response.json() assistant_response = result.get("generated_text", "No response generated.") else: assistant_response = "Error: Unable to reach the model." st.write(f"Status Code: {response.status_code}") except Exception as e: assistant_response = "😵‍💫 Connection issue! Try again later. Here's a 🐶:" st.image(f'https://random.dog/{random_dog[np.random.randint(len(random_dog))]}') st.write("Error message:") st.write(e) st.markdown(assistant_response) st.session_state.messages.append({"role": "assistant", "content": assistant_response})