import streamlit as st from streamlit_chat import message import requests url = 'https://api.webraft.in/v1/chat/completions' st.set_page_config(page_title="WebraftAI Chat", page_icon=":robot_face:") st.markdown("

WebraftAI Chat

", unsafe_allow_html=True) if 'generated' not in st.session_state: st.session_state['generated'] = [] if 'past' not in st.session_state: st.session_state['past'] = [] if 'model_name' not in st.session_state: st.session_state['model_name'] = [] if 'cost' not in st.session_state: st.session_state['cost'] = [] if 'total_tokens' not in st.session_state: st.session_state['total_tokens'] = [] if 'total_cost' not in st.session_state: st.session_state['total_cost'] = 1 if 'api_key' not in st.session_state: st.session_state['api_key']="" st.sidebar.title("Settings") model_name = st.sidebar.selectbox("Model:", ("gpt3.5","gpt3.5-16k","gpt4-32k","mini-orca-v3-13b")) counter_placeholder = st.sidebar.empty() api_key = st.sidebar.text_input("API_Key", value=st.session_state['api_key'], max_chars=None,placeholder=st.session_state['api_key'], key=None, type="password", label_visibility="visible") st.session_state['api_key'] = api_key max_tokens = st.sidebar.text_input("Max_tokens", value=4096, max_chars=None, key=None,placeholder=4096, type="default") top_p = st.sidebar.text_input("Top_p", value=0.7, max_chars=None, key=None,placeholder=0.7, type="default") temperature = st.sidebar.text_input("Temperature", value=0.7, max_chars=None, key=None,placeholder=0.7, type="default") system_message = st.sidebar.text_box("System_message", value="You are a helpful AI assistant.", max_chars=None, key=None,placeholder="You are a helpful AI assistant.", type="default") clear_button = st.sidebar.button("Clear Conversation", key="clear") headers = { 'Content-Type': 'application/json', 'Authorization': f'Bearer {api_key}', } if 'messages' not in st.session_state: st.session_state['messages'] = [ {"role": "system", "content": system_message} ] if model_name == "gpt3.5": model = "gpt-3.5-turbo" elif model_name == "gpt3.5-16k": model = "gpt-3.5-turbo-16k" elif model_name == "gpt4-32k": model = "gpt4-32k" elif model_name == "mini-orca-v3-13b": model = "orca-mini-v3-13b" else: model = "gpt-3.5-turbo" if clear_button: st.session_state['generated'] = [] st.session_state['past'] = [] st.session_state['messages'] = [ {"role": "system", "content": system_message} ] st.session_state['number_tokens'] = [] st.session_state['model_name'] = [] st.session_state['cost'] = [] st.session_state['total_cost'] = 0.0 st.session_state['total_tokens'] = [] def evaluate(model, question, max_tokens=4096, top_p=0.7,temperature=0.1): data = { "model": model, "max_tokens": max_tokens, "messages": question, "temperature":temperature, "top_p":top_p } response = requests.post(url, headers=headers, json=data) response = response.json() sentence = response['choices'][0]['message']['content'] return sentence def generate_response(prompt): st.session_state['messages'].append({"role": "user", "content": prompt}) question = st.session_state['messages'] sentence = evaluate(model, question,top_p=top_p,max_tokens=max_tokens,temperature=temperature) response = sentence st.session_state['messages'].append({"role": "assistant", "content": response}) # print(st.session_state['messages']) total_tokens = "153" prompt_tokens = "153" completion_tokens = "153" return response, total_tokens, prompt_tokens, completion_tokens response_container = st.container() container = st.container() with container: with st.form(key='my_form', clear_on_submit=True): user_input = st.text_area("You:", key='input', height=2) submit_button = st.form_submit_button(label='✉') if submit_button and user_input: output, total_tokens, prompt_tokens, completion_tokens = generate_response(user_input) st.session_state['past'].append(user_input) st.session_state['generated'].append(output) st.session_state['model_name'].append(model_name) st.session_state['total_tokens'].append(total_tokens) if st.session_state['generated']: with response_container: for i in range(len(st.session_state['generated'])): message(st.session_state["past"][i], is_user=True, key=str(i) + '_user') message(st.session_state["generated"][i], key=str(i))