Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from huggingface_hub import InferenceClient | |
| import os | |
| # ============================== | |
| # PAGE CONFIG | |
| # ============================== | |
| st.set_page_config(page_title="AI Assistant", layout="wide") | |
| st.title("🤖 AI Assistant") | |
| # ============================== | |
| # LOAD MODEL CLIENT | |
| # ============================== | |
| def load_client(): | |
| return InferenceClient( | |
| model="meta-llama/Meta-Llama-3-8B-Instruct", | |
| token=os.environ.get("HF_TOKEN") | |
| ) | |
| client = load_client() | |
| # ============================== | |
| # SESSION STATE (CHAT HISTORY) | |
| # ============================== | |
| if "messages" not in st.session_state: | |
| st.session_state.messages = [] | |
| # ============================== | |
| # DISPLAY CHAT HISTORY | |
| # ============================== | |
| for msg in st.session_state.messages: | |
| if msg["role"] == "user": | |
| st.chat_message("user").write(msg["content"]) | |
| else: | |
| st.chat_message("assistant").write(msg["content"]) | |
| # ============================== | |
| # USER INPUT | |
| # ============================== | |
| query = st.chat_input("Ask anything...") | |
| if query: | |
| # Store user message | |
| st.session_state.messages.append({"role": "user", "content": query}) | |
| st.chat_message("user").write(query) | |
| try: | |
| with st.spinner("Thinking..."): | |
| # ✅ Chat-based request (BEST PRACTICE) | |
| response = client.chat_completion( | |
| messages=[ | |
| {"role": "system", "content": "You are a helpful, professional AI assistant."} | |
| ] + st.session_state.messages, | |
| max_tokens=300, | |
| temperature=0.7, | |
| ) | |
| reply = response.choices[0].message["content"] | |
| # Store assistant reply | |
| st.session_state.messages.append({"role": "assistant", "content": reply}) | |
| st.chat_message("assistant").write(reply) | |
| except Exception as e: | |
| st.error(f"Error: {str(e)}") |