import streamlit as st import openai # Constants AI_MODEL = "gpt-4o" TOKEN_COUNT = 4096 MAX_USES = 3 # Set page configuration st.set_page_config(page_title="Code Debugging Tool", page_icon=":bar_chart:") # Load API key and prompt from secrets openai.api_key = st.secrets['OPENAI_API_KEY'] # prompt_template = st.secrets['PROMPT_DEBUG'] # Page title st.title('Code Debugging Tool') # Styling (optional) st.markdown( """ """, unsafe_allow_html=True, ) # Initialize usage counter and language in session state if 'usage_count' not in st.session_state: st.session_state['usage_count'] = 0 if 'language' not in st.session_state: st.session_state['language'] = 'English' def generate_from_ai(language, input_task, input_code, input_error): """Generates requirements based on the given instructions and background context.""" if st.session_state['usage_count'] < MAX_USES: st.session_state['usage_count'] += 1 # Increment the usage counter task_prompt = f""" - Output language: {language} - Task: {input_task} - Current Code: {input_code} - Error Message: {input_error} """ with st.spinner('Defining requirements...'): response = openai.ChatCompletion.create( model=AI_MODEL, messages=[{"role": "user", "content": task_prompt}], max_tokens=TOKEN_COUNT ) return response["choices"][0]["message"]["content"] else: st.error("You have reached your maximum usage limit.") return None # Determine button text based on current language if st.session_state['language'] == 'English': switch_button_text = 'Japanese(日本語)' else: switch_button_text = 'English' # Language switcher button if st.button(switch_button_text): if st.session_state['language'] == 'English': st.session_state['language'] = 'Japanese' else: st.session_state['language'] = 'English' st.experimental_rerun() # Display form based on selected language if st.session_state['language'] == 'English': st.subheader('English') en_input_task = st.text_input( "Enter the Task / What do you want to do with your code? (e.g., Review my code below and correct the mistakes)", value="Review my code below and correct the mistakes", key="en_input_task" ) en_input_code = st.text_area( "Paste your code here", key="en_input_code" ) en_input_error = st.text_area( "Paste the error message here", key="en_input_error" ) if st.button("Debug", key="en_fixed_code"): result = generate_from_ai("English", en_input_task, en_input_code, en_input_error) if result: st.write(result) else: st.subheader('日本語') ja_input_task = st.text_input( "タスクの内容、またはしたいことを入力ください。 (例:下記のコードをレビューして修正ください。)", value="下記のコードをレビューして修正ください", key="ja_input_task" ) ja_input_code = st.text_area( "現在のコードを入力ください", key="ja_input_code" ) ja_input_error = st.text_area( "エラーメッセージを入力ください", key="ja_input_error" ) if st.button("デバッグする", key="ja_fixed_code"): result = generate_from_ai("Japanese", ja_input_task, ja_input_code, ja_input_error) if result: st.write(result)