Spaces:
Running
Running
import streamlit as st | |
from mistral7b import mistral | |
st.set_page_config( | |
page_title="Ikigai Chat", | |
) | |
import time | |
if "messages" not in st.session_state: | |
st.session_state.messages = [] | |
if "tokens_used" not in st.session_state: | |
st.session_state.tokens_used = 0 | |
if "inference_time" not in st.session_state: | |
st.session_state.inference_time = [0.00] | |
if "temp" not in st.session_state: | |
st.session_state.temp = 0.8 | |
if "history" not in st.session_state: | |
st.session_state.history = [[""" | |
You are not mistral AI, but rather a chat bot trained at Ikigai Labs, when ever asked you need to answer as ikigai Labs' assistant. | |
Ikigai helps modern analysts and operations teams automate data-intensive business, finance, analytics, and supply-chain operations. | |
The company's Inventory Ops automates inventory tracking and monitoring by creating a single, real-time view of inventory across all locations and channels.""", | |
""" | |
Yes, you are correct. Ikigai Labs is a company that specializes in helping | |
modern analysts and operations teams automate data-intensive business, finance, analytics, | |
and supply chain operations. One of their products is Inventory Ops, which automates inventory | |
tracking and monitoring by creating a single, real-time view of inventory across all locations and channels. | |
This helps businesses optimize their inventory levels and reduce costs. | |
Is there anything else you would like to know about Ikigai Labs or their products? | |
"""]] | |
if "top_k" not in st.session_state: | |
st.session_state.top_k = 5 | |
if "repetion_penalty" not in st.session_state : | |
st.session_state.repetion_penalty = 1 | |
with st.sidebar: | |
st.markdown("# Model Analytics") | |
st.write("Tokens used :", st.session_state['tokens_used']) | |
st.write("Average Inference Time: ", round(sum( | |
st.session_state["inference_time"]) / len(st.session_state["inference_time"]), 3), "Secs") | |
st.write("Cost Incured :", round( | |
0.033 * st.session_state['tokens_used'] / 1000, 3), "INR") | |
st.markdown("---") | |
st.markdown("# Model Settings") | |
selected_model = st.sidebar.radio( | |
'Select one:', ["Mistral 7B","Llama 7B" ,"GPT 3.5 Turbo", "GPT 4" ]) | |
st.session_state.temp = st.slider( | |
label="Temperature", min_value=0.0, max_value=1.0, step=0.1, value=0.9) | |
st.session_state.max_tokens = st.slider( | |
label="New tokens to generate", min_value = 64, max_value=1048, step= 123, value=256 | |
) | |
st.session_state.repetion_penalty = st.slider( | |
label="Repetion Penalty", min_value=0., max_value=1., step=0.1, value=1. | |
) | |
st.markdown("---") | |
st.markdown("# Retrieval Settings") | |
st.slider(label="Documents to retrieve", | |
min_value=1, max_value=10, value=3) | |
st.info("**2023 ©️ Pragnesh Barik**") | |
st.image("ikigai.svg") | |
st.title("Ikigai Chat") | |
with st.expander("What is Ikigai Chat ?"): | |
st.info("""Ikigai Chat is a vector database powered chat agent, it works on the principle of | |
of Retrieval Augmented Generation (RAG), Its primary function revolves around maintaining an extensive repository of Ikigai Docs and providing users with answers that align with their queries. | |
This approach ensures a more refined and tailored response to user inquiries.""") | |
for message in st.session_state.messages: | |
with st.chat_message(message["role"]): | |
st.markdown(message["content"]) | |
if prompt := st.chat_input("Chat with Ikigai Docs..."): | |
st.chat_message("user").markdown(prompt) | |
st.session_state.messages.append({"role": "user", "content": prompt}) | |
# st.write("ing") | |
tick = time.time() | |
with st.spinner("Generating response...") : | |
response = mistral(prompt, st.session_state.history, | |
temperature=st.session_state.temp, max_new_tokens=st.session_state.max_tokens) | |
tock = time.time() | |
st.session_state.inference_time.append(tock - tick) | |
response = response.replace("</s>", "") | |
len_response = len(response.split()) | |
st.session_state["tokens_used"] = len_response + \ | |
st.session_state["tokens_used"] | |
with st.chat_message("assistant"): | |
st.markdown(response) | |
st.session_state.history.append([prompt, response]) | |
st.session_state.messages.append( | |
{"role": "assistant", "content": response}) | |