|
|
import streamlit as st |
|
|
import openai |
|
|
|
|
|
|
|
|
AI_MODEL = "gpt-4o" |
|
|
TOKEN_COUNT = 4096 |
|
|
MAX_USES = 3 |
|
|
|
|
|
|
|
|
st.set_page_config(page_title="Code Debugging Tool", page_icon=":bar_chart:") |
|
|
|
|
|
|
|
|
openai.api_key = st.secrets['OPENAI_API_KEY'] |
|
|
|
|
|
|
|
|
|
|
|
st.title('Code Debugging Tool') |
|
|
|
|
|
|
|
|
st.markdown( |
|
|
""" |
|
|
<style> |
|
|
/* Custom style adjustments */ |
|
|
.st-emotion-cache-iiif1v { display: none !important; } |
|
|
.st-emotion-cache-13ln4jf {padding: 6rem 1rem 0rem;} |
|
|
@media (max-width: 50.5rem) { |
|
|
.st-emotion-cache-13ln4jf { |
|
|
max-width: calc(0rem + 100vw); |
|
|
} |
|
|
} |
|
|
</style> |
|
|
""", |
|
|
unsafe_allow_html=True, |
|
|
) |
|
|
|
|
|
|
|
|
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 |
|
|
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 |
|
|
|
|
|
|
|
|
if st.session_state['language'] == 'English': |
|
|
switch_button_text = 'Japanese(日本語)' |
|
|
else: |
|
|
switch_button_text = 'English' |
|
|
|
|
|
|
|
|
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() |
|
|
|
|
|
|
|
|
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) |
|
|
|