forked from React-Group/interstellar_ai
Merge branch 'main' of interstellardevelopment.org:sageTheDm/interstellar_ai
This commit is contained in:
commit
07771e46cf
8 changed files with 58 additions and 41 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -43,3 +43,5 @@ __pycache__/
|
||||||
key.pem
|
key.pem
|
||||||
cert.pem
|
cert.pem
|
||||||
api_key.txt
|
api_key.txt
|
||||||
|
|
||||||
|
database.json
|
||||||
|
|
|
@ -9,7 +9,6 @@ import { resolve } from "path";
|
||||||
import { FFmpeg } from "@ffmpeg/ffmpeg";
|
import { FFmpeg } from "@ffmpeg/ffmpeg";
|
||||||
import { fetchFile, toBlobURL } from "@ffmpeg/util"
|
import { fetchFile, toBlobURL } from "@ffmpeg/util"
|
||||||
|
|
||||||
|
|
||||||
const InputOutputBackend: React.FC = () => {
|
const InputOutputBackend: React.FC = () => {
|
||||||
// # variables
|
// # variables
|
||||||
type Message = {
|
type Message = {
|
||||||
|
@ -174,7 +173,15 @@ const InputOutputBackend: React.FC = () => {
|
||||||
if (postWorkerRef.current) {
|
if (postWorkerRef.current) {
|
||||||
addMessage("user", inputValue)
|
addMessage("user", inputValue)
|
||||||
console.log("input:", inputValue);
|
console.log("input:", inputValue);
|
||||||
postWorkerRef.current.postMessage({ messages: [...messages, { role: "user", content: inputValue }], ai_model: "llama3.2", access_token: accessToken })
|
const type = localStorage.getItem('type')
|
||||||
|
var api_key: string = ""
|
||||||
|
if (type != null && type != 'local') {
|
||||||
|
const try_key = localStorage.getItem(type)
|
||||||
|
if (try_key) {
|
||||||
|
api_key = try_key
|
||||||
|
}
|
||||||
|
}
|
||||||
|
postWorkerRef.current.postMessage({ messages: [...messages, { role: "user", content: inputValue }], ai_model: localStorage.getItem('model'), model_type: type, access_token: accessToken, api_key: api_key })
|
||||||
startGetWorker()
|
startGetWorker()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,27 +18,28 @@ if all went well, you will get the status 200 in response.data.status
|
||||||
to check if the request was accepted or declined, check response.data.response, it will be either true or false depending on if it worked, or not.
|
to check if the request was accepted or declined, check response.data.response, it will be either true or false depending on if it worked, or not.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export const sendToDatabase = (data: any): Promise<boolean> => {
|
export const sendToDatabase = async (data: any): Promise<boolean> => {
|
||||||
return axios.post("http://localhost:5000/interstellar_ai/db", data)
|
try {
|
||||||
.then(response => {
|
const response = await axios.post("http://localhost:5000/interstellar_ai/db", data);
|
||||||
const status = response.data.status;
|
const status = response.data.status;
|
||||||
const success = response.data.response;
|
const success = response.data.response;
|
||||||
postMessage({ status, success });
|
postMessage({ status, success });
|
||||||
return success; // Ensure success is returned to the caller
|
console.log(status);
|
||||||
})
|
return success;
|
||||||
.catch(error => {
|
} catch (error) {
|
||||||
postMessage({ status: 500, success: false });
|
postMessage({ status: 500, success: false });
|
||||||
return false; // Return false in case of an error
|
console.log("NO");
|
||||||
});
|
return false;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Functions for each action
|
// Functions for each action
|
||||||
export const createAccount = async (username: string, email: string, password: string) => {
|
export const createAccount = async (username: string, email: string, password: string) => {
|
||||||
const data = {
|
const data = {
|
||||||
action: "create_account",
|
action: "create_account",
|
||||||
username,
|
username: username,
|
||||||
email,
|
email: email,
|
||||||
password,
|
password: password,
|
||||||
};
|
};
|
||||||
return await sendToDatabase(data);
|
return await sendToDatabase(data);
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
|
|
||||||
onmessage = (e) => {
|
onmessage = (e) => {
|
||||||
const { messages, ai_model = "llama3.2", access_token } = e.data
|
const { messages, ai_model, model_type, access_token, api_key } = e.data
|
||||||
|
|
||||||
|
|
||||||
const Message = {
|
const Message = {
|
||||||
messages: messages,
|
messages: messages,
|
||||||
ai_model: "llama3.2",
|
ai_model: ai_model,
|
||||||
model_type: "local",
|
model_type: model_type,
|
||||||
access_token: access_token
|
access_token: access_token,
|
||||||
|
api_key: api_key
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(Message);
|
console.log(Message);
|
||||||
|
|
|
@ -6,7 +6,6 @@ export const sendToVoiceRecognition = (audio_data: Blob): Promise<string> => {
|
||||||
const formdata = new FormData()
|
const formdata = new FormData()
|
||||||
formdata.append("audio", audio_data)
|
formdata.append("audio", audio_data)
|
||||||
|
|
||||||
const dataSend = { option: "offline", type: "basic", audio: audio_data }
|
|
||||||
return axios.post("http://localhost:5000/interstellar_ai/api/voice_recognition", formdata)
|
return axios.post("http://localhost:5000/interstellar_ai/api/voice_recognition", formdata)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
console.log(response.data)
|
console.log(response.data)
|
||||||
|
|
|
@ -240,6 +240,9 @@ const Models: React.FC = () => {
|
||||||
console.log(model)
|
console.log(model)
|
||||||
console.log(category)
|
console.log(category)
|
||||||
console.log(modelList[category][model as keyof typeof modelList[typeof category]]);
|
console.log(modelList[category][model as keyof typeof modelList[typeof category]]);
|
||||||
|
console.log(modelList[category]['model_type' as keyof typeof modelList[typeof category]])
|
||||||
|
localStorage.setItem("model", modelList[category][model as keyof typeof modelList[typeof category]])
|
||||||
|
localStorage.setItem("type", modelList[category]['model_type' as keyof typeof modelList[typeof category]])
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
16
py/api.py
16
py/api.py
|
@ -89,20 +89,20 @@ class API:
|
||||||
|
|
||||||
@self.app.route('/interstellar_ai/db', methods=['POST'])
|
@self.app.route('/interstellar_ai/db', methods=['POST'])
|
||||||
def db_manipulate():
|
def db_manipulate():
|
||||||
action = request.args.get('action')
|
sent_data = request.get_json()
|
||||||
data = request.args.get('data')
|
action = sent_data.get('action')
|
||||||
if action == "create_account":
|
if action == "create_account":
|
||||||
return jsonify({'status': 200, 'response': self.db.add_user(data)})
|
return jsonify({'status': 200, 'response': self.db.add_user(sent_data)})
|
||||||
elif action == "change_password":
|
elif action == "change_password":
|
||||||
return jsonify({'status': 200, 'response': self.db.update_password(data)})
|
return jsonify({'status': 200, 'response': self.db.update_password(sent_data)})
|
||||||
elif action == "get_data":
|
elif action == "get_data":
|
||||||
return jsonify({'status': 200, 'response': self.db.get_data(data)})
|
return jsonify({'status': 200, 'response': self.db.get_data(sent_data)})
|
||||||
elif action == "change_data":
|
elif action == "change_data":
|
||||||
return jsonify({'status': 200, 'response': self.db.change_data(data)})
|
return jsonify({'status': 200, 'response': self.db.change_data(sent_data)})
|
||||||
elif action == "check_credentials":
|
elif action == "check_credentials":
|
||||||
return jsonify({'status': 200, 'response': self.db.check_credentials(data)})
|
return jsonify({'status': 200, 'response': self.db.check_credentials(sent_data)})
|
||||||
elif action == "delete_account":
|
elif action == "delete_account":
|
||||||
return jsonify({'status': 200, 'response': self.db.delete_user(data)})
|
return jsonify({'status': 200, 'response': self.db.delete_user(sent_data)})
|
||||||
|
|
||||||
return jsonify({'status': 401, 'response': "Invalid action"})
|
return jsonify({'status': 401, 'response': "Invalid action"})
|
||||||
|
|
||||||
|
|
24
py/db.py
24
py/db.py
|
@ -10,10 +10,10 @@ class DB:
|
||||||
|
|
||||||
def ensure_username(self, data):
|
def ensure_username(self, data):
|
||||||
if hasattr(data, 'username'):
|
if hasattr(data, 'username'):
|
||||||
return data.get['username']
|
return data.get('username')
|
||||||
elif hasattr(data, 'email'):
|
elif hasattr(data, 'email'):
|
||||||
for index, entry in self.database:
|
for index, entry in self.database:
|
||||||
if entry.get['email'] == data.get['email']:
|
if entry.get('email') == data.get('email'):
|
||||||
return index
|
return index
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -23,19 +23,22 @@ class DB:
|
||||||
return hashed_password
|
return hashed_password
|
||||||
|
|
||||||
def add_user(self, data):
|
def add_user(self, data):
|
||||||
username = data.get['username']
|
username = data.get('username')
|
||||||
password = data.get['password']
|
password = data.get('password')
|
||||||
email = data.get['email']
|
email = data.get('email')
|
||||||
hashed_password = self.hash_password(password)
|
hashed_password = self.hash_password(password)
|
||||||
user_data = {"hashed_password": hashed_password, "email": email, "data": None}
|
user_data = {"hashed_password": hashed_password, "email": email, "data": None}
|
||||||
if username not in self.database:
|
if username not in self.database:
|
||||||
self.database[username] = user_data
|
self.database[username] = user_data
|
||||||
|
print("yes")
|
||||||
|
self.save_database()
|
||||||
return True
|
return True
|
||||||
|
print("fail")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def delete_user(self, data):
|
def delete_user(self, data):
|
||||||
username = self.ensure_username(data)
|
username = self.ensure_username(data)
|
||||||
data = data.get['data']
|
data = data.get('data')
|
||||||
if not self.check_credentials(data):
|
if not self.check_credentials(data):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -45,7 +48,7 @@ class DB:
|
||||||
|
|
||||||
def change_data(self, data):
|
def change_data(self, data):
|
||||||
username = self.ensure_username(data)
|
username = self.ensure_username(data)
|
||||||
data = data.get['data']
|
data = data.get('data')
|
||||||
if not self.check_credentials(data):
|
if not self.check_credentials(data):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -55,7 +58,7 @@ class DB:
|
||||||
|
|
||||||
def update_password(self, data):
|
def update_password(self, data):
|
||||||
username = self.ensure_username(data)
|
username = self.ensure_username(data)
|
||||||
new_password = data.get['new_password']
|
new_password = data.get('new_password')
|
||||||
if not self.check_credentials(data):
|
if not self.check_credentials(data):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -66,7 +69,7 @@ class DB:
|
||||||
|
|
||||||
def check_credentials(self, data):
|
def check_credentials(self, data):
|
||||||
username = self.ensure_username(data)
|
username = self.ensure_username(data)
|
||||||
password = data.get['password']
|
password = data.get('password')
|
||||||
if username not in self.database:
|
if username not in self.database:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -79,7 +82,7 @@ class DB:
|
||||||
if not self.check_credentials(data):
|
if not self.check_credentials(data):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
send_back = self.database[username].get['data']
|
send_back = self.database(username).get('data')
|
||||||
return send_back
|
return send_back
|
||||||
|
|
||||||
def save_database(self):
|
def save_database(self):
|
||||||
|
@ -90,6 +93,7 @@ class DB:
|
||||||
|
|
||||||
else:
|
else:
|
||||||
with open("database.json", 'w') as file:
|
with open("database.json", 'w') as file:
|
||||||
|
print("saving")
|
||||||
json.dump(self.database, file)
|
json.dump(self.database, file)
|
||||||
|
|
||||||
def load_database(self):
|
def load_database(self):
|
||||||
|
|
Loading…
Reference in a new issue