File size: 4,593 Bytes
275e579
 
 
 
 
 
fd264ea
275e579
 
 
 
 
 
 
fd264ea
275e579
 
 
 
 
 
 
 
 
 
 
 
fd264ea
275e579
fd264ea
 
275e579
fd264ea
 
 
 
275e579
 
 
 
 
fd264ea
 
 
 
275e579
 
fd264ea
 
 
275e579
fd264ea
 
 
 
275e579
 
 
 
 
fd264ea
275e579
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fd264ea
275e579
 
 
 
fd264ea
275e579
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
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("<h1 style='text-align: center;'>WebraftAI Chat</h1>", 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))