refactor: convert modules into python modules

Code_Style
sean1832 1 year ago
parent f40abacc3e
commit b3be11e821

@ -1,18 +1,16 @@
import streamlit as st
from modules import utilities as util
from modules import model_param
from modules import language
import brain
import check_update
import time
import os
import streamlit as st
import modules as mod
import modules.utilities as util
# activate session
if 'SESSION_TIME' not in st.session_state:
st.session_state['SESSION_TIME'] = time.strftime("%Y%m%d-%H%H%S")
st.set_page_config(
page_title='GPT Brain'
)
@ -66,17 +64,17 @@ def save_as():
)
def process_response(query, target_model, prompt_file: str, data: model_data.param):
def process_response(query, target_model, prompt_file: str, data: mod.model_param.param):
# check if exclude model is not target model
file_name = util.get_file_name(prompt_file)
print(_('Processing') + f" {file_name}...")
with st.spinner(_('Thinking on') + f" {file_name}..."):
results = brain.run(query, target_model, prompt_file,
data.temp,
data.max_tokens,
data.top_p,
data.frequency_penalty,
data.present_penalty)
results = mod.brain.run(query, target_model, prompt_file,
data.temp,
data.max_tokens,
data.top_p,
data.frequency_penalty,
data.present_penalty)
# displaying results
st.header(f'📃{file_name}')
st.info(f'{results}')
@ -94,9 +92,9 @@ def message(msg, condition=None):
# sidebar
with st.sidebar:
_ = language.set_language()
_ = mod.language.set_language()
st.title(_('Settings'))
language.select_language()
mod.language.select_language()
prompt_files = util.scan_directory(PROMPT_PATH)
prompt_file_names = [util.get_file_name(file) for file in prompt_files]
@ -106,7 +104,8 @@ with st.sidebar:
operation_options = list(prompt_dictionary.keys())
operations = st.multiselect(_('Operations'), operation_options,
default=util.read_json_at(BRAIN_MEMO, f'operations_{SESSION_LANG}', operation_options[0]))
default=util.read_json_at(BRAIN_MEMO, f'operations_{SESSION_LANG}',
operation_options[0]))
last_question_model = util.read_json_at(BRAIN_MEMO, 'question_model', model_options[0])
# get index of last question model
@ -136,13 +135,13 @@ with st.sidebar:
chunk_size = st.slider(_('Chunk size'), 1500, 4500, value=util.read_json_at(BRAIN_MEMO, 'chunk_size', 4000))
chunk_count = st.slider(_('Answer count'), 1, 5, value=util.read_json_at(BRAIN_MEMO, 'chunk_count', 1))
param = model_data.param(temp=temp,
max_tokens=max_tokens,
top_p=top_p,
frequency_penalty=freq_panl,
present_penalty=pres_panl,
chunk_size=chunk_size,
chunk_count=chunk_count)
param = mod.model_param.param(temp=temp,
max_tokens=max_tokens,
top_p=top_p,
frequency_penalty=freq_panl,
present_penalty=pres_panl,
chunk_size=chunk_size,
chunk_count=chunk_count)
if st.button(_('Clear Log'), on_click=clear_log):
st.success(_('Log Cleared'))
@ -167,17 +166,17 @@ def execute_brain(q):
# log question
log(f'\n\n\n\n[{str(time.ctime())}] - QUESTION: {q}')
if check_update.isUpdated():
if mod.check_update.isUpdated():
st.success(_('Building Brain...'))
# if brain-info is updated
brain.build(chunk_size)
mod.brain.build(chunk_size)
st.success(_('Brain rebuild!'))
time.sleep(2)
# thinking on answer
with st.spinner(_('Thinking on Answer')):
answer = brain.run_answer(q, question_model, temp, max_tokens, top_p, freq_panl, pres_panl,
chunk_count=chunk_count)
answer = mod.brain.run_answer(q, question_model, temp, max_tokens, top_p, freq_panl, pres_panl,
chunk_count=chunk_count)
if util.contains(operations, _('question')):
# displaying results
st.header(_('💬Answer'))

@ -13,4 +13,5 @@ def create():
{'note_dir': '', 'delimiter': '', 'append_mode': False, 'force_mode': False})
print(f'brain memo file created: {user_dir}/brain-memo.json')
create()

@ -0,0 +1,6 @@
from modules import gpt_toolkit
from modules import language
from modules import model_param
from modules import utilities
from modules import brain
from modules import check_update

@ -1,10 +1,10 @@
import openai
import textwrap
from modules import utilities as util
from modules import language
import streamlit as st
from modules import gpt_util as gpt
import modules.utilities as util
import modules.language as language
import modules.gpt_toolkit as gpt
openai.api_key = util.read_file(r'.user\API-KEYS.txt').strip()
@ -23,8 +23,6 @@ def build(chunk_size=4000):
chunks = textwrap.wrap(all_text, chunk_size)
result = []
print('Building brain data...')
for chunk in chunks:
embedding = gpt.embedding(chunk.encode(encoding='ASCII', errors='ignore').decode())
info = {'content': chunk, 'vector': embedding}

@ -1,6 +1,6 @@
import os
import time
from modules import utilities as util
import modules.utilities as util
file_path = r'.user\input.txt'
temp_file = r'.user\input_last-run.temp'

@ -26,7 +26,7 @@ def search_chunks(text, data, count=1):
'content': item['content'],
'point': point
})
# sort points base on decendent order
# sort points base on descendant order
ordered = sorted(points, key=lambda d: d['point'], reverse=True)
return ordered[0:count]

@ -3,13 +3,6 @@ import os
import glob
# def extract_string(text, delimiter):
# # Extract string between delimiters
# start_index = text.index(delimiter) + len(delimiter)
# end_index = text.index(delimiter, start_index)
# return text[start_index:end_index]
def extract_string(text, delimiter, force=False, join=True, split_mode=False):
# Check if delimiter is not in text
if delimiter not in text:
@ -154,13 +147,13 @@ def update_json(filepath, key, value):
write_json(data, filepath)
def contains(list, item):
result = list.count(item)
def contains(ls: list, item):
result = ls.count(item)
return result > 0
def get_index(list, item, default=0) -> int:
def get_index(ls: list, item, default=0) -> int:
try:
return list.index(item)
return ls.index(item)
except ValueError:
return default

@ -1,13 +1,14 @@
import time
import os
import streamlit as st
import streamlit_toggle as st_toggle
import os
from modules import utilities as util
import tkinter as tk
from tkinter import filedialog
from modules import language
import modules.language as language
import modules.utilities as util
user_dir = '.user/'
SESSION_LANG = st.session_state['SESSION_LANGUAGE']
@ -51,7 +52,7 @@ def select_directory():
root.withdraw()
# make sure the dialog is on top of the main window
root.attributes('-topmost', True)
directory = filedialog.askdirectory(initialdir=os.getcwd(), title=_('Select Note Directory'), master=root)
directory = filedialog.askdirectory(initialdir=os.getcwd(), title=_('Select Note Directory'))
return directory

Loading…
Cancel
Save