File size: 3,795 Bytes
bd0dcb6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ced0589
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2fab18e
bd0dcb6
 
2fab18e
 
bd0dcb6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2fab18e
 
cfcbc75
2fab18e
cfcbc75
2fab18e
 
 
 
 
 
 
 
bd0dcb6
2fab18e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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(
"""
<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,
)

# 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)