Spaces:
Sleeping
Sleeping
File size: 3,439 Bytes
004aa85 70764ec 004aa85 69fcc6d 004aa85 69fcc6d 004aa85 69fcc6d 004aa85 69fcc6d 004aa85 55a003e 004aa85 69fcc6d 004aa85 69fcc6d 004aa85 69fcc6d 004aa85 69fcc6d | 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 | 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.")
|