correct waiting for ES, change bot, delete bot
All checks were successful
Gitea Docker Redeploy / Redploy-App-on-self-via-SSH (push) Successful in 29s

This commit is contained in:
Tobias Weise 2024-08-21 00:21:52 +02:00
parent 86a8d4589f
commit 2645b89488
4 changed files with 175 additions and 52 deletions

View File

@ -612,8 +612,8 @@ def catchAll(path):
return send_from_directory('./public', path)
if __name__ == '__main__':
def main():
LOG_LEVEL = os.getenv("LOG_LEVEL")
if LOG_LEVEL:
logging.basicConfig(level=eval("logging." + LOG_LEVEL))
@ -634,12 +634,19 @@ if __name__ == '__main__':
app.logger.addHandler(handler)
"""
wait_for_elasticsearch()
#wait_for_elasticsearch()
download_llm()
connections.create_connection(hosts=app.config['elastic_uri'], request_timeout=60)
wait_for_elasticsearch()
init_indicies()
create_default_users()
app.run(debug=False, threaded=True, host='0.0.0.0')
if __name__ == '__main__':
main()

View File

@ -88,6 +88,7 @@ def wait_for_elasticsearch():
while True:
try:
client = Elasticsearch(hosts=elastic_url)
client.indices.get_alias(index="*")
#connections.create_connection(hosts=app.config['elastic_uri'])
#connections.get_connection().cluster.health(wait_for_status='yellow')
#init_indicies()
@ -100,3 +101,6 @@ def wait_for_elasticsearch():
print("Elasticsearch not found! Wait %s seconds!" % i, flush=True)

View File

@ -192,6 +192,10 @@
<a id="tab3" class="nav-link disabled" data-bs-toggle="tab" href="#tweak_bot_tab">Tweak bot</a>
</li>
<li class="nav-item">
<a id="tab4" class="nav-link disabled" data-bs-toggle="tab" href="#question_templates_tab">Question templates</a>
</li>
</ul>
<!-- Tab panes -->
@ -325,6 +329,13 @@
<form>
<label for="change_bots">Choose a bot:</label>
<select name="change_bots" id="change_bot_select" class="form-select">
<option value="md">Some bot</option>
</select>
<br>
<label for="bot_name" class="form-label">Name:</label>
<input type="bot_name" class="form-control" id="bot_name" placeholder="The displayed name of the bot.">

View File

@ -72,8 +72,43 @@ async function register(email, pwd){
}
async function text2speech(txt){
const formData = new FormData();
formData.append("text", txt);
const response = await fetch("/text2speech", {
method: "POST",
headers: {
'accept': '*/*'//,
//'Authorization': 'Bearer ' + jwt
},
body: formData
});
return response.json();
}
//======= bot crud ===================
async function create_bot(jwt, name, visibility, description, llm, sys_prompt){
const formData = new FormData();
formData.append("name", name);
formData.append("visibility", visibility);
formData.append("description", description);
formData.append("llm_model", llm);
formData.append("system_prompt", sys_prompt);
const response = await fetch("/bot", {
method: "POST",
headers: {
'accept': '*/*',
'Authorization': 'Bearer ' + jwt
},
body: formData
});
return response.json();
}
async function get_bots(jwt){
if(jwt){
const response = await fetch("/bot", {
@ -96,21 +131,7 @@ async function get_bots(jwt){
}
}
async function text2speech(txt){
const formData = new FormData();
formData.append("text", txt);
const response = await fetch("/text2speech", {
method: "POST",
headers: {
'accept': '*/*'//,
//'Authorization': 'Bearer ' + jwt
},
body: formData
});
return response.json();
}
async function create_bot(jwt, name, visibility, description, llm, sys_prompt){
async function change_bot(jwt, name, visibility, description, llm, sys_prompt){
const formData = new FormData();
formData.append("name", name);
formData.append("visibility", visibility);
@ -119,7 +140,7 @@ async function create_bot(jwt, name, visibility, description, llm, sys_prompt){
formData.append("system_prompt", sys_prompt);
const response = await fetch("/bot", {
method: "POST",
method: "PUT",
headers: {
'accept': '*/*',
'Authorization': 'Bearer ' + jwt
@ -129,6 +150,23 @@ async function create_bot(jwt, name, visibility, description, llm, sys_prompt){
return response.json();
}
async function delete_bot(jwt, bot_id){
const formData = new FormData();
formData.append("id", bot_id);
const response = await fetch("/bot", {
method: "DELETE",
headers: {
'accept': '*/*',
'Authorization': 'Bearer ' + jwt
},
body: formData
});
return response.json();
}
async function* ask_question(bot_id, question, system_prompt=""){
let socket;
let room = null;
@ -243,6 +281,30 @@ function alert_bot_change(success){
`;
}
function is_graph(obj){
if("nodes" in obj){
if("edges" in obj || "links" in obj){
return true;
}
}
return false;
}
function rename_attr(obj, old, s){
if(obj[old]){
obj[s] = obj[old];
delete obj[old];
}
return obj;
}
window.onload = async ()=>{
document.documentElement.style.setProperty("--bs-primary-rgb", "45, 124, 172");
@ -275,12 +337,16 @@ window.onload = async ()=>{
//change bot form
let change_bot_btn = document.getElementById("change_bot_btn");
let change_bot_select = document.getElementById("change_bot_select");
let change_bot_name = document.getElementById("change_bot_name");
let change_bot_visibility_select = document.getElementById("change_bot_visibility_select");
let change_bot_description = document.getElementById("change_bot_description");
let change_bot_llm_select = document.getElementById("change_bot_llm_select");
let change_bot_system_prompt = document.getElementById("change_bot_system_prompt");
let delete_bot_btn = document.getElementById("delete_bot_btn");
@ -323,6 +389,8 @@ window.onload = async ()=>{
//enable create bot button
create_bot_btn.removeAttribute("disabled");
change_bot_btn.removeAttribute("disabled");
delete_bot_btn.removeAttribute("disabled");
login_btn.style.display = "none";
logout_btn.style.display = "block";
@ -335,6 +403,8 @@ window.onload = async ()=>{
//disable create bot button
create_bot_btn.setAttribute("disabled", "disabled");
change_bot_btn.setAttribute("disabled", "disabled");
delete_bot_btn.setAttribute("disabled", "disabled");
logout_btn.style.display = "none";
login_btn.style.display = "block";
@ -344,6 +414,29 @@ window.onload = async ()=>{
}
function update_ui(){
//are we logged in?
let jwt = localStorage.getItem("jwt");
if(jwt === null){
let ls = await get_bots();
set_bot_list(ls);
set_ui_loggedin(false);
}
else{
let ls = await get_bots(jwt);
set_bot_list(ls);
set_ui_loggedin(true);
}
}
/*
//init: are we logged in on start?
let jwt = localStorage.getItem("jwt");
if(jwt === null){
@ -356,6 +449,10 @@ window.onload = async ()=>{
set_bot_list(ls);
set_ui_loggedin(true);
}
*/
update_ui();
//init chat
log_msg(get_bot_name(), "Ask a question!");
@ -386,9 +483,10 @@ window.onload = async ()=>{
clean_bot_create_form();
//update bot list
let ls = await get_bots(jwt);
set_bot_list(ls);
//let ls = await get_bots(jwt);
//set_bot_list(ls);
update_ui();
}
catch(err){
console.error(err);
@ -398,6 +496,29 @@ window.onload = async ()=>{
}
};
delete_bot_btn.onclick = async ()=>{
let jwt = localStorage.getItem("jwt");
if(jwt){
let bot_id = change_bot_select.value
try{
let r = await delete_bot(jwt, bot_id);
alert_bot_change(true);
//clean_bot_create_form();
//update bot list
//let ls = await get_bots(jwt);
//set_bot_list(ls);
update_ui();
}
catch(err){
console.error(err);
console.error("Couldn't delete bot!");
alert_bot_change(false);
}
}
};
change_bot_btn.onclick = async ()=>{
@ -422,12 +543,7 @@ window.onload = async ()=>{
try{
let {bot_id} = await change_bot(jwt, name, visibility, description, llm, sys_prompt);
alert_bot_change(true);
//clean_bot_create_form();
//update bot list
let ls = await get_bots(jwt);
set_bot_list(ls);
update_ui();
}
catch(err){
console.error(err);
@ -465,11 +581,13 @@ window.onload = async ()=>{
if(!jwt) throw Error("No JWT!");
localStorage.setItem("jwt", jwt);
set_ui_loggedin(true);
set_ui_loggedin(true);
let ls = await get_bots(jwt);
set_bot_list(ls);
let myModalEl = document.querySelector('#myModal');
let myModal = bootstrap.Modal.getOrCreateInstance(myModalEl);
myModal.hide();
@ -522,21 +640,18 @@ window.onload = async ()=>{
logout_btn.onclick = async ()=>{
localStorage.removeItem("jwt");
set_ui_loggedin(false);
update_ui();
let ls = await get_bots();
set_bot_list(ls);
//set_ui_loggedin(false);
//let ls = await get_bots();
//set_bot_list(ls);
};
function replace_dom_code(f, root_ele){
let eles = root_ele.getElementsByTagName("code");
for(let i=0; i<eles.length; i++){
@ -554,24 +669,8 @@ window.onload = async ()=>{
function is_graph(obj){
if("nodes" in obj){
if("edges" in obj || "links" in obj){
return true;
}
}
return false;
}
function rename_attr(obj, old, s){
if(obj[old]){
obj[s] = obj[old];
delete obj[old];
}
return obj;
}
function translate_graph(obj){
@ -646,6 +745,8 @@ window.onload = async ()=>{
}
let receiving_token_atm = false;
submit_btn.onclick = async evt =>{
let input_string = user_input.value;