Spaces:
Runtime error
Runtime error
File size: 6,739 Bytes
275e579 2b2ce8b 594e429 275e579 fd264ea 275e579 fd264ea 275e579 594e429 275e579 fd264ea 275e579 fd264ea 9206c2d dc15a3a 275e579 fd264ea 594e429 275e579 fd264ea 275e579 9206c2d 275e579 9206c2d 5d25c33 9206c2d 72ee1e9 9206c2d 72ee1e9 275e579 fd264ea 275e579 72ee1e9 9206c2d 72ee1e9 2c0c6d3 9206c2d 6d1b602 9206c2d 72ee1e9 9206c2d 275e579 9206c2d 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 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
import streamlit as st
from streamlit_chat import message
import requests
# changed
url = 'https://api.webraft.in/v2/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("Chat Model:", ("gpt-3.5-turbo","gpt-3.5-turbo-1106","gpt-4","gpt-4-32k","gpt-4-1106-preview","gpt-4-0125-preview","gpt-4o","claude-3-haiku","claude-3-sonnet","claude-3-opus",""))
image_model = st.sidebar.selectbox("Image Model:", ("dalle-3","sdxl", "midjourney","stable-cascade"))
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.1, max_chars=None, key=None,placeholder=0.1, type="default")
system_message = st.sidebar.text_area("System_message", value="You are a helpful AI assistant.", max_chars=None, key=None,placeholder="You are a helpful AI assistant.")
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}
]
model = model_name
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)
try:
response = response.json()
choices = response.get('choices', [])
if choices:
sentie = response
sentence = choices[0].get('message', {}).get('content'," API Returned: \n ```{sentie}``` \n \n Is the API not working? check https://stats.uptimerobot.com/KkZE2T84mj \n If you are still encountering errors then please open a ticket from our discord server at https://discord.gg/webraftai . ")
else:
sentie = response
sentence = f"API Returned: \n ```{sentie}``` \n \n Is the API not working? check https://stats.uptimerobot.com/KkZE2T84mj \n If you are still encountering errors then please open a ticket from our discord server at https://discord.gg/webraftai . "
except requests.exceptions.JSONDecodeError as e:
sentie= response.content
sentence = f"API Returned:\n ```{sentie}``` \n \n Is the API not working? check https://stats.uptimerobot.com/KkZE2T84mj \n If you are still encountering errors then please open a ticket from our discord server at https://discord.gg/webraftai . "
return sentence
def generate_response(prompt):
st.session_state['messages'].append({"role": "user", "content": prompt})
prompt = prompt.lower()
if prompt.startswith("draw"):
data = {"prompt": prompt.replace("draw",""),
"model": image_model
}
response = requests.post("https://api.webraft.in/api/images/generations", json=data, headers=headers)
total_tokens = "153"
prompt_tokens = "153"
completion_tokens = "153"
try:
response = response.json()
imageurl = response['data'][0]['url']
ie = f"Here is the generated image:\n {imageurl} \n \n Model used: `{image_model}`"
st.session_state['messages'].append({"role": "assistant", "content": ie})
except requests.exceptions.JSONDecodeError as e:
sentie = response.content
ie= f"Image generation API returned:\n ```{sentie}``` \n \n Is the API not working? check https://stats.uptimerobot.com/KkZE2T84mj \n If you are still encountering errors then please open a ticket from our discord server at https://discord.gg/webraftai . "
st.session_state['messages'].append({"role": "assistant", "content": ie})
return ie,total_tokens,prompt_tokens,completion_tokens
question = st.session_state['messages']
sentence = evaluate(model, question,top_p=float(top_p),max_tokens=int(max_tokens),temperature=float(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)) |