204 lines
6.7 KiB
Python
204 lines
6.7 KiB
Python
import streamlit as st
|
|
import json
|
|
import os
|
|
from config.config import SYSTEM_PROMPT, INPUT_EXAMPLE, PROMPT_TEMPLATE, team
|
|
|
|
'''
|
|
def settings_page():
|
|
st.title("Settings")
|
|
|
|
# Section for System Prompt
|
|
st.subheader("System Prompt")
|
|
if "system_prompt" not in st.session_state:
|
|
st.session_state["system_prompt"] = SYSTEM_PROMPT.strip()
|
|
system_prompt = st.text_area(
|
|
"Define the system prompt:",
|
|
value=st.session_state["system_prompt"]
|
|
)
|
|
|
|
# Section for Input Template
|
|
st.subheader("Input Template")
|
|
if "input_template" not in st.session_state:
|
|
st.session_state["input_template"] = INPUT_TEMPLATE.strip()
|
|
input_template = st.text_area(
|
|
"Define the input template:",
|
|
value=st.session_state["input_template"],
|
|
height=400
|
|
)
|
|
|
|
# Section for Prompt Template
|
|
st.subheader("Prompt Template")
|
|
if "prompt_template" not in st.session_state:
|
|
st.session_state["prompt_template"] = PROMPT_TEMPLATE.strip()
|
|
prompt_template = st.text_area(
|
|
"Define the prompt template:",
|
|
value=st.session_state["prompt_template"]
|
|
)
|
|
|
|
# Section for Number of Key Results
|
|
st.subheader("Number of Key Results")
|
|
if "num_key_results" not in st.session_state:
|
|
st.session_state["num_key_results"] = 4
|
|
num_key_results = st.number_input(
|
|
"Set the maximum number of key results:",
|
|
min_value=1,
|
|
max_value=10,
|
|
value=st.session_state["num_key_results"]
|
|
)
|
|
|
|
# Save Button for Settings
|
|
if st.button("Save Settings"):
|
|
st.session_state["system_prompt"] = system_prompt
|
|
st.session_state["input_template"] = input_template
|
|
st.session_state["prompt_template"] = prompt_template
|
|
st.session_state["num_key_results"] = num_key_results
|
|
st.success("Settings saved successfully!")
|
|
|
|
# Section for Team Member Management
|
|
team_member_management()
|
|
|
|
def team_member_management():
|
|
st.subheader("Team Member Management")
|
|
|
|
# Initialize team members in session state
|
|
if "team_members" not in st.session_state:
|
|
st.session_state["team_members"] = ["John Doe", "Jane Smith"]
|
|
|
|
# Display current team members
|
|
st.write("### Current Team Members")
|
|
for member in st.session_state["team_members"]:
|
|
col1, col2 = st.columns([4, 1])
|
|
col1.write(member)
|
|
if col2.button("Remove", key=f"remove_{member}"):
|
|
st.session_state["team_members"].remove(member)
|
|
st.experimental_rerun()
|
|
|
|
# Add new team member
|
|
st.write("### Add New Team Member")
|
|
new_member = st.text_input("Enter new team member name:", key="new_member")
|
|
if st.button("Add Team Member"):
|
|
if new_member.strip():
|
|
if new_member.strip() not in st.session_state["team_members"]:
|
|
st.session_state["team_members"].append(new_member.strip())
|
|
st.success(f"Added {new_member.strip()} to the team.")
|
|
st.experimental_rerun()
|
|
else:
|
|
st.warning(f"{new_member.strip()} is already in the team.")
|
|
else:
|
|
st.warning("Please enter a valid name.")
|
|
'''
|
|
|
|
|
|
|
|
SETTINGS_FILE = "settings.json"
|
|
|
|
# Load settings from JSON file
|
|
def load_settings():
|
|
if os.path.exists(SETTINGS_FILE) and 1 == 2:
|
|
with open(SETTINGS_FILE, "r") as f:
|
|
return json.load(f)
|
|
else:
|
|
# Default settings
|
|
return {
|
|
"system_prompt": SYSTEM_PROMPT,
|
|
"input_template": INPUT_EXAMPLE,
|
|
"prompt_template": PROMPT_TEMPLATE,
|
|
"num_key_results": 4,
|
|
"team_members": ["Khanh Dinh", "Robin Plitzko", "Roberto Renna"],
|
|
"team_member_template": "{name} - Team Member"
|
|
}
|
|
|
|
# Save settings to JSON file
|
|
def save_settings(settings):
|
|
with open(SETTINGS_FILE, "w") as f:
|
|
json.dump(settings, f, indent=4)
|
|
|
|
# Settings Page
|
|
def settings_page():
|
|
st.title("Settings")
|
|
|
|
# Load settings
|
|
settings = load_settings()
|
|
|
|
# Section for System Prompt
|
|
st.subheader("System Prompt")
|
|
system_prompt = st.text_area(
|
|
"Define the system prompt:",
|
|
value=settings["system_prompt"]
|
|
)
|
|
|
|
# Section for Input Template
|
|
st.subheader("Input Template")
|
|
input_template = st.text_area(
|
|
"Define the input template:",
|
|
value=settings["input_template"]
|
|
)
|
|
|
|
# Section for Prompt Template
|
|
st.subheader("Prompt Template")
|
|
prompt_template = st.text_area(
|
|
"Define the prompt template (use {num_key_results} for dynamic insertion):",
|
|
value=settings["prompt_template"]
|
|
)
|
|
|
|
# Section for Number of Key Results
|
|
st.subheader("Number of Key Results")
|
|
num_key_results = st.number_input(
|
|
"Set the maximum number of key results:",
|
|
min_value=1,
|
|
max_value=10,
|
|
value=settings["num_key_results"]
|
|
)
|
|
|
|
# Section for Team Member Template
|
|
st.subheader("Team Member Template")
|
|
team_member_template = st.text_input(
|
|
"Define a template for team members (use {name} for dynamic insertion):",
|
|
value=settings["team_member_template"]
|
|
)
|
|
|
|
# Section for Team Member Management
|
|
team_member_management(settings)
|
|
|
|
# Save Button for Settings
|
|
if st.button("Save Settings"):
|
|
# Update settings dictionary
|
|
settings["system_prompt"] = system_prompt
|
|
settings["input_template"] = input_template
|
|
settings["prompt_template"] = prompt_template
|
|
settings["num_key_results"] = num_key_results
|
|
settings["team_member_template"] = team_member_template
|
|
|
|
# Save to file
|
|
save_settings(settings)
|
|
st.success("Settings saved successfully!")
|
|
|
|
# Team Member Management Section
|
|
def team_member_management(settings):
|
|
st.subheader("Team Member Management")
|
|
|
|
# Display current team members
|
|
st.write("### Current Team Members")
|
|
for member in settings["team_members"]:
|
|
col1, col2 = st.columns([4, 1])
|
|
col1.write(member)
|
|
if col2.button(f"Remove {member}", key=f"remove_{member}"):
|
|
settings["team_members"].remove(member)
|
|
save_settings(settings)
|
|
st.experimental_rerun()
|
|
|
|
# Add new team member
|
|
st.write("### Add New Team Member")
|
|
new_member = st.text_input("Enter new team member name:", key="new_member")
|
|
if st.button("Add Team Member"):
|
|
if new_member.strip():
|
|
if new_member.strip() not in settings["team_members"]:
|
|
settings["team_members"].append(new_member.strip())
|
|
save_settings(settings)
|
|
st.success(f"Added {new_member.strip()} to the team.")
|
|
st.experimental_rerun()
|
|
else:
|
|
st.warning(f"{new_member.strip()} is already in the team.")
|
|
else:
|
|
st.warning("Please enter a valid name.")
|