okr/settings.py
2025-01-03 10:27:29 +01:00

203 lines
6.7 KiB
Python

import streamlit as st
import json
import os
from config import SYSTEM_PROMPT, INPUT_TEMPLATE, 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_TEMPLATE,
"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.")