Spaces:
Build error
Build error
| import streamlit as st | |
| import requests | |
| def generate_more_factors(problem_statement, user_factors): | |
| # 1. Prepare prompt text | |
| factors_text = "\n".join([f"- {factor}" for factor in user_factors if factor.strip() != ""]) | |
| prompt = ( | |
| f"You are an expert problem solver. Given the following problem statement:\n" | |
| f"{problem_statement}\n\n" | |
| f"And the following user-provided factors:\n" | |
| f"{factors_text}\n\n" | |
| f"Please suggest additional factors that would complete a MECE (Mutually Exclusive, Collectively Exhaustive) " | |
| f"set of factors responsible for solving the problem. Provide your suggestions as a bullet list." | |
| ) | |
| # 2. Call Hugging Face inference API (using a sample model; replace as needed) | |
| API_URL = "https://api-inference.huggingface.co/models/gpt2" | |
| token = st.secrets.get("HF_API_TOKEN", "") | |
| headers = {"Authorization": f"Bearer {token}"} if token else {} | |
| response = requests.post(API_URL, headers=headers, json={"inputs": prompt}) | |
| if response.status_code == 200: | |
| result = response.json() | |
| if isinstance(result, list) and result and "generated_text" in result[0]: | |
| generated = result[0]["generated_text"] | |
| # Remove the prompt from the generated output | |
| suggestions = generated[len(prompt):].strip() | |
| return suggestions | |
| else: | |
| return "Unexpected response format." | |
| else: | |
| return f"Error: {response.status_code} - {response.text}" | |
| def main(): | |
| st.title("Problem Statement and Factor Guess") | |
| st.write("Enter your problem statement and factors. The UI is organized into four horizontal levels:") | |
| # Initialize session state variables | |
| if "factor_rows" not in st.session_state: | |
| st.session_state.factor_rows = [""] | |
| if "llm_suggestions" not in st.session_state: | |
| st.session_state.llm_suggestions = None | |
| # Create four columns for the four levels | |
| col1, col2, col3, col4 = st.columns(4) | |
| # Level 1: Problem Statement (Left-most column) | |
| with col1: | |
| st.header("Level 1: Problem Statement") | |
| problem_statement = st.text_input("Enter your problem statement:") | |
| # Level 2: User-Provided Factors | |
| with col2: | |
| st.header("Level 2: Your Factors") | |
| factor_inputs = [] | |
| for i in range(len(st.session_state.factor_rows)): | |
| key = f"factor_{i}" | |
| value = st.text_input(f"Factor {i+1}", value=st.session_state.factor_rows[i], key=key) | |
| factor_inputs.append(value) | |
| st.session_state.factor_rows[i] = value | |
| if st.button("Add Factor Row", key="add_row"): | |
| st.session_state.factor_rows.append("") | |
| try: | |
| st.experimental_rerun() | |
| except AttributeError: | |
| st.write("Row added. Please refresh the page to see the new row.") | |
| # Level 3: Generate More Factors Button | |
| with col3: | |
| st.header("Level 3: Generate More Factors") | |
| if st.button("Generate More Factors", key="generate_factors"): | |
| if not problem_statement.strip(): | |
| st.error("Please enter a problem statement before generating factors.") | |
| else: | |
| with st.spinner("Generating more factors..."): | |
| suggestions = generate_more_factors(problem_statement, factor_inputs) | |
| st.session_state.llm_suggestions = suggestions | |
| # Level 4: LLM Suggestions Display | |
| with col4: | |
| st.header("Level 4: LLM Suggestions") | |
| if st.session_state.llm_suggestions: | |
| st.write(st.session_state.llm_suggestions) | |
| else: | |
| st.write("LLM suggestions will appear here after you click 'Generate More Factors'.") | |
| if __name__ == "__main__": | |
| main() | |