from datetime import datetime import streamlit as st import os from mistralai import Mistral # Function to get the current year def current_year(): now = datetime.now() return now.year st.set_page_config(layout="wide") st.title("Just chat! 🤖") # Sidebar inputs for MISTRAL_API_ID and MISTRAL_API_KEY with st.sidebar: st.header("Mistral API Settings") mistral_api_id = st.text_input("Enter your MISTRAL API ID", placeholder="Enter API ID") api_key = st.text_input("Enter your MISTRAL API Key", type="password", placeholder="Enter API Key") with st.expander("Instruction Manual"): st.markdown(""" ## Mistral AI Agent 🤖 Chatbot This Streamlit app allows you to chat with Mistral AI Coder Agent. ### How to Use: 1. **Input**: Type your prompt into the chat input box labeled "What is up?". 2. **Response**: The app will display a response from Mistral AI. 3. **Chat History**: Previous conversations will be shown on the app. ### Credits: - **Developer**: [Yiqiao Yin](https://www.y-yin.io/) | [App URL](https://huggingface.co/spaces/eagle0504/gpt-4o-demo) | [LinkedIn](https://www.linkedin.com/in/yiqiaoyin/) | [YouTube](https://youtube.com/YiqiaoYin/) Enjoy chatting with Mistral AI agent! """) with st.expander("Examples"): st.success("Example: Write a simple hello world flask app for me.") st.success("Example: Write a program to simulate the value of pi.") st.success("Example: Write a 3-layer neural network for me?") # Button to clear session state if st.button("Clear Session"): st.session_state.messages = [] st.rerun() # Initialize chat history if "messages" not in st.session_state: st.session_state.messages = [] # Ensure messages are a list of dictionaries if not isinstance(st.session_state.messages, list): st.session_state.messages = [] if not all(isinstance(msg, dict) for msg in st.session_state.messages): 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"]) # React to user input if prompt := st.chat_input("😉 Ask any question or feel free to use the examples provided in the left sidebar."): # Display user message in chat message container st.chat_message("user").markdown(prompt) # Add user message to chat history st.session_state.messages.append({"role": "assistant", "content": f"You are a helpful assistant. Year now is {current_year()}"}) st.session_state.messages.append({"role": "user", "content": prompt}) # API Call if mistral_api_id and api_key: # Ensure both API ID and Key are entered bot = ChatBot(api_key) bot.history = st.session_state.messages.copy() # Update history from messages response = bot.generate_response( agent_id=mistral_api_id, user_message=prompt ) # Display assistant response in chat message container with st.chat_message("assistant"): st.markdown(response) # Add assistant response to chat history st.session_state.messages.append({"role": "assistant", "content": response}) else: st.error("Please enter both MISTRAL API ID and API Key in the sidebar.")